堆栈配置和部署属性 - AWS OpsWorks

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

堆栈配置和部署属性

重要

AWS OpsWorks Stacks 不再接受新客户。在 2024 年 5 月 26 日之前,现有客户将能够正常使用 OpsWorks 控制台、API、CLI 和 CloudFormation 资源,届时它们将停产。为准备此过渡,我们建议您尽快将堆栈过渡到AWS Systems Manager。有关更多信息,请参阅 AWS OpsWorks Stacks 生命周期终止常见问题解答将 AWS OpsWorks Stacks 应用程序迁移到 AWS Systems Manager Application Manager

当 AWS OpsWorks Stacks 在一个实例上运行命令时 (例如,为响应一个部署生命周期事件而运行部署命令),会将一组属性添加到用于描述堆栈当前配置的实例的节点对象。对于部署事件和 Execute Recipes 堆栈命令,AWS OpsWorks Stacks 会安装可提供额外一些部署信息的部署属性。有关节点对象的更多信息,请参阅覆盖属性。要查看常用堆栈配置和部署属性的列表 (包括完全限定的节点名称),请参阅堆栈配置和部署属性:Linux内置说明书属性

注意

在 Linux 堆栈上,您可以使用代理 CLI 的 get_json 命令,获得这些属性 (格式化为 JSON 对象) 的完整列表。

以下各部分介绍了与简单堆栈的配置事件和部署事件相关的属性,简单堆栈包括:

  • 包含两个实例的 PHP App Server 层

  • 带有一个实例的 HAProxy 层

这些示例都来自一个 实例 php-app1。为方便起见,这些属性被格式化为 JSON 对象。对象的结构映射到属性的完全限定名称。例如,node[:opsworks][:ruby_version] 属性的 JSON 表示形式如下所示。

{ "opsworks": { ... "ruby_version": "1.8.7", ... } }

配置属性

以下 JSON 对象显示当实例联机或脱机时堆栈中各个实例上发生的配置事件的属性。这些属性包括嵌入式堆栈配置属性和事件发生之前为堆栈定义的任何自定义 JSON 属性 (此示例中未提及)。其长度已经过编辑。要了解各个属性的详细描述,请参阅堆栈配置和部署属性:Linux内置说明书属性

{ "opsworks": { "layers": { "php-app": { "id": "4a2a56c8-f909-4b39-81f8-556536d20648", "instances": { "php-app2": { "elastic_ip": null, "region": "us-west-2", "booted_at": "2013-02-26T20:41:10+00:00", "ip": "192.0.2.0", "aws_instance_id": "i-34037f06", "availability_zone": "us-west-2a", "instance_type": "c1.medium", "private_dns_name": "ip-10-252-0-203.us-west-2.compute.internal", "private_ip": "10.252.0.203", "created_at": "2013-02-26T20:39:39+00:00", "status": "online", "backends": 8, "public_dns_name": "ec2-192-0-2-0.us-west-2.compute.amazonaws.com" }, "php-app1": { ... } }, "name": "PHP Application Server" }, "lb": { "id": "15c86142-d836-4191-860f-f4d310440f14", "instances": { "lb1": { ... } }, "name": "Load Balancer" } }, "agent_version": "104", "applications": [ ], "stack": { "name": "MyStack" }, "ruby_version": "1.8.7", "sent_at": 1361911623, "ruby_stack": "ruby_enterprise", "instance": { "layers": [ "php-app" ], "region": "us-west-2", "ip": "192.0.2.0", "id": "45ef378d-b87c-42be-a1b9-b67c48edafd4", "aws_instance_id": "i-32037f00", "availability_zone": "us-west-2a", "private_dns_name": "ip-10-252-84-253.us-west-2.compute.internal", "instance_type": "c1.medium", "hostname": "php-app1", "private_ip": "10.252.84.253", "backends": 8, "architecture": "i386", "public_dns_name": "ec2-192-0-2-0.us-west-2.compute.amazonaws.com" }, "activity": "configure", "rails_stack": { "name": null }, "deployment": null, "valid_client_activities": [ "reboot", "stop", "setup", "configure", "update_dependencies", "install_dependencies", "update_custom_cookbooks", "execute_recipes" ] }, "opsworks_custom_cookbooks": { "recipes": [ ], "enabled": false }, "recipes": [ "opsworks_custom_cookbooks::load", "opsworks_ganglia::configure-client", "ssh_users", "agent_version", "mod_php5_apache2::php", "php::configure", "opsworks_stack_state_sync", "opsworks_custom_cookbooks::execute", "test_suite", "opsworks_cleanup" ], "opsworks_rubygems": { "version": "1.8.24" }, "ssh_users": { }, "opsworks_bundler": { "manage_package": null, "version": "1.0.10" }, "deploy": { } }

大部分信息都位于常常被称为命名空间的 opsworks 属性下。以下列表描述了主要属性:

  • layers 属性-一组属性,其中各个属性分别描述一个堆栈层的配置。

    在此示例中,这些层是由其短名 php-applb 确定的。有关其他层的短名的更多信息,请参阅AWS OpsWorks Stacks 层参考

  • instances 属性-各层都有一个 instances 元素,该元素包含一个针对各层的在线实例、以实例短名称命名的属性。

    PHP App Server 层有两个实例 php-app1php-app2。HAProxy 层有一个实例 lb1

    注意

    instances 元素仅包含创建特定堆栈和部署属性时那些处于联机状态的实例。

  • 实例属性-每个实例属性都包含一组可表明实例特征的属性,如实例的私有 IP 地址和私有 DNS 名称。为了简洁起见,该示例仅详细显示 php-app2 属性;其他示例包含类似信息。

  • applications-一份已部署应用程序的列表,此示例中未用到。

  • stack-堆栈名称,在此示例中为 MyStack

  • instance-安装有这些属性的实例,在此示例中为 php-app1。配方可以使用此属性来获得关于配方正在其上运行的实例的信息,如实例的公有 IP 地址。

  • activity-生成属性的活动,在此示例中为一个配置事件。

  • rails_stack-包含 Rails App Server 层的堆栈的 Rails 堆栈。

  • deployment-指示这些属性是否与部署有关联。它在此示例中设置为 null,因为它们与配置事件相关联。

  • valid_client_activities-一份有效客户端活动的列表。

opsworks 属性后跟多个其他顶级属性,包括以下各属性:

  • opsworks_custom_cookbooks-指示是否启用自定义说明书。如果启用了自定义说明书,则该属性包含一份自定义配方的列表。

  • recipes-通过此活动运行的配方。

  • opsworks_rubygems— 实例的 RubyGems版本。

  • ssh_users-一份 SSH 用户的列表,在此示例中未提及。

  • opsworks_bundler-捆绑程序版本,并指示其是否已被启用。

  • deploy-关于部署活动的信息,在此示例中未提及。

部署属性

部署事件或 Execute Recipes 堆栈命令的属性包括嵌入式堆栈配置和部署属性以及任何自定义堆栈或部署属性 (在此示例中没有出现)。以下 JSON 对象显示与可将 SimplePHP 应用程序部署到堆栈 PHP 实例的部署事件相关联的 php-app1 的属性。大部分对象都包含与上一部分中描述的配置事件的属性相类似的堆栈配置属性,因此,该示例主要关注特定于部署的属性。要了解各个属性的详细描述,请参阅堆栈配置和部署属性:Linux内置说明书属性

{ ... "opsworks": { ... "activity": "deploy", "applications": [ { "slug_name": "simplephp", "name": "SimplePHP", "application_type": "php" } ], "deployment": "5e6242d7-8111-40ee-bddb-00de064ab18f", ... }, ... { "ssh_users": { }, "deploy": { "simplephpapp": { "application": "simplephpapp", "application_type": "php", "environment_variables": { "USER_ID": "168424", "USER_KEY": "somepassword" }, "auto_bundle_on_deploy": true, "deploy_to": "/srv/www/simplephpapp", "deploying_user": "arn:aws:iam::123456789012:user/guysm", "document_root": null, "domains": [ "simplephpapp" ], "migrate": false, "mounted_at": null, "rails_env": null, "restart_command": "echo 'restarting app'", "sleep_before_restart": 0, "ssl_support": false, "ssl_certificate": null, "ssl_certificate_key": null, "ssl_certificate_ca": null, "scm": { "scm_type": "git", "repository": "git://github.com/amazonwebservices/opsworks-demo-php-simple-app.git", "revision": "version1", "ssh_key": null, "user": null, "password": null }, "symlink_before_migrate": { "config/opsworks.php": "opsworks.php" }, "symlinks": { }, "database": { }, "memcached": { "host": null, "port": 11211 }, "stack": { "needs_reload": false } } }, }

opsworks 属性与上一部分中的示例大致相似。以下各部分大多与部署有关:

  • activity-与这些属性相关联的事件,在此示例中为一个部署事件。

  • applications-包含各个应用程序的一组属性,这些属性提供应用程序的名称、临时名称和类型。

    临时名称是应用程序的短名,是 AWS OpsWorks Stacks 根据应用程序名称生成的。SimplePHP 的临时名称是 simplephp。

  • deployment-用于唯一标识部署的部署 ID。

deploy 属性包含正在部署的应用程序的信息。例如,嵌入式部署配方使用 deploy 属性中的数据,以在相应的目录中安装文件,并创建数据库连接文件。deploy 属性包含各个已部署应用程序的、以应用程序短名命名的一个属性。各个应用程序属性都包含以下属性:

  • environment_variables-包含您为应用程序定义的任何环境变量。有关更多信息,请参阅 环境变量

  • domains-默认情况下,域是应用程序的短名称,在此示例中为 simplephpapp。如果您分配了自定义域名,则它们也会出现在此处。有关更多信息,请参阅 使用自定义域

  • application-应用程序的短名称。

  • scm-此元素包含要从其存储库下载应用程序的文件所需的信息,在此示例中为 Git 存储库。

  • database-数据库信息,前提是堆栈包含一个数据库层。

  • document_root-文档根,在此示例中被设置为 null,表明根是公有的。

  • ssl_certificate_cassl_supportssl_certificate_key-指示应用程序是否获得 SSL 支持。如果获得 SSL 支持,则 ssl_certificate_keyssl_certificate_ca 属性会被设置为相应的证书。

  • deploy_to-应用程序的根目录。