Configure 配方 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Configure 配方

重要

这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过 AWS 高级支持

Configure 配方被分配给层的 Configure 生命周期事件,每当实例进入在线状态或退出在线状态时,堆栈的所有实例上都会发生该事件。您可以使用 Configure 配方来调整实例的配置,以根据需要响应更改。当您实施 Configure 配方时,请记住,堆栈配置更改可能涉及与此层无关的实例。该配方必须能够作出相应的响应,但在某些情况下,可能不需要执行任何操作。

tomcat::configure

tomcat::configure 配方用于执行层的 Configure 生命周期事件。

include_recipe 'tomcat::context' # Optional: Trigger a Tomcat restart in case of a configure event, if relevant # settings in custom JSON have changed (e.g. java_opts/JAVA_OPTS): #include_recipe 'tomcat::container_config'

tomcat::configure 配方基本上是一个元配方,可运行两个从属配方。

  1. tomcat::context 配方可创建一个 Web 应用程序上下文配置文件。

    此文件配置应用程序用于与 My SQL 实例通信的JDBC资源,如下一节所述。运行此配方以响应 configure 事件使层可以在数据库层发生变化后更新 Web 应用程序上下文配置文件。

  2. tomcat::container_config Setup 配方再次运行,以捕获容器配置中的任何更改。

在本示例中,includetomcat::container_config 被改为注释了。如果要使用自定义JSON来修改 Tomcat 设置,则可以删除评论。之后,Configure 生命周期事件运行 tomcat::container_config,这会更新 Tomcat 相关配置文件 (如tomcat::container_config中所述) 并重新启动 Tomcat 服务。

tomcat::context

Tomcat cookbook 允许应用程序使用 J DataSource 2EE 对象访问 “我的SQL数据库” 服务器,该服务器可以在单独的实例上运行。借助 Tomcat,您可以通过为每个应用程序创建和安装 Web 应用程序上下文配置文件来启用连接。该文件定义了应用程序与应用程序用于与数据库通信的JDBC资源之间的关系。有关更多信息,请参阅 The Context Container

tomcat::context 配方的主要目的是创建此配置文件。

include_recipe 'tomcat::service' node[:deploy].each do |application, deploy| context_name = deploy[:document_root].blank? ? application : deploy[:document_root] template "context file for #{application} (context name: #{context_name})" do path ::File.join(node['tomcat']['catalina_base_dir'], 'Catalina', 'localhost', "#{context_name}.xml") source 'webapp_context.xml.erb' owner node['tomcat']['user'] group node['tomcat']['group'] mode 0640 backup false only_if { node['datasources'][context_name] } variables(:resource_name => node['datasources'][context_name], :webapp_name => application) notifies :restart, resources(:service => 'tomcat') end end

除了 Tomcat 食谱属性外,此配方还使用堆栈配置和部署属性 AWS OpsWorks 使用配置事件堆叠安装。这些区域有: AWS OpsWorks Stacks 服务向每个实例的节点对象添加属性,这些属性包含配方通常通过使用数据袋或搜索获得的信息,并将属性安装到每个实例上。这些属性包含关于堆栈配置、部署的应用程序和用户希望包含的任何自定义数据的详细信息。配方可以通过使用标准 Chef 节点语法获取堆栈配置和部署属性的数据。有关更多信息,请参阅 堆栈配置和部署属性。对于 Chef 11.10 堆栈,您还可以使用 Chef 搜索来获取堆栈配置和部署数据。有关更多信息,请参阅 使用 Chef 搜索

deployattributes 是指[:deploy]命名空间,其中包含与部署相关的属性,这些属性通过控制台定义或API由控制台生成 AWS OpsWorks 堆栈服务。deploy 属性包含各个已部署应用程序的以应用程序短名称命名的一个属性。每个应用程序属性都包含一组用于描述应用程序的特征的属性,如文档根目录 ([:deploy][:appname][:document_root])。

context 配方首先通过调用 tomcat::service 来确保为此 Chef 运行定义了服务。然后,它定义 context_name 变量,该变量表示配置文件的名称,不包括 .xml 扩展名。如果您使用默认文档根目录,则 context_name 将被设置为应用程序的短名称。否则,它将被设置为指定的文档根目录。中讨论的示例将文档根目录创建堆栈并运行应用程序设置为"ROOT",因此上下文为ROOT,配置文件已命名ROOT.xml

批量配方查看部署的应用程序的列表,并为每个应用程序使用 webapp_context.xml.erb 模板来创建上下文配置文件。此示例仅部署一个应用程序,但 deploy 属性的定义需要您将其看作一组应用程序。

webapp_context.xml.erb 模板不是特定于操作系统的,因此它位于 templates 目录中的 default 子目录中。

该配方创建配置文件,如下所示:

  • 使用默认属性值时,配置文件名称设置为 context_name.xml,并安装在 /etc/tomcat6/Catalina/localhost/ 目录中。

    堆栈配置属性中的['datasources']节点包含一个或多个属性,每个属性都将上下文名称映射到关联应用程序用于与数据库通信JDBC的数据资源。创建堆栈JSON时,节点及其内容是使用自定义定义的,如后面所述创建堆栈并运行应用程序。该示例只有一个属性,该属性将ROOT上下文名称与名为 jdbc/myd JDBC b 的资源相关联。

  • 通过使用默认属性值,文件的用户和组均被设置为由 Tomcat 程序包定义的值:tomcat (Amazon Linux) 或 tomcat6 (Ubuntu)。

  • template 资源仅在存在 ['datasources'] 节点时创建配置文件,并且包含 context_name 属性。

  • template 资源会定义两个变量:resource_namewebapp_name

    resource_name 被设置为与 context_name 相关联的资源名称,而 webapp_name 被设置为应用程序的短名称。

  • template 资源可重新启动 Tomcat 服务以加载并激活更改。

webapp_context.xml.erb 模板包含一个 Context 元素,该元素包含一个具有其自己的一组属性的 Resource 元素。

这些 Resource 属性描述上下文配置的特征:

  • nam e — JDBC 资源名称,设置为中定义的resource_nametomcat::context

    例如,资源名称设置为 jdbc/mydb。

  • 身份验证类型-这些是连接的标准设置。JDBC DataSource

  • maxActivemaxIdle、和 maxWait-活动和空闲连接的最大数量,以及返回连接的最大等待时间。

  • usernamepassword 数据库的用户名和根密码,这些从 deploy 属性中获得。

  • driverClassName— JDBC 驱动程序的类名,设置为 “我的SQL驱动程序”。

  • url —连接URL。

    前缀取决于数据库。jdbc:mysql对于 “我的” SQL、jdbc:postgresql “Postgres” 和 “服务器”,应将其设置jdbc:sqlserver为。SQL该示例将设置URL为jdbc:mysql://host_IP_Address:3306:simplejsp,其中 simplejsp 是应用程序的简称。

  • f actory — DataSource 工厂,这是我的SQL数据库所必需的。

有关此配置文件的更多信息,请参阅 Tomcat wiki 的 “使用” DataSources 主题。