

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

# 堆栈配置和部署属性
<a name="workingcookbook-json"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

当 OpsWorks Stacks 在实例上运行命令（例如，响应 Deploy 生命周期事件的 deploy 命令）时，它会向实例的节点对象添加一组描述堆栈当前配置的属性。对于部署事件和[执行配方堆栈命令](workingstacks-commands.md)， OpsWorks Stacks 会安装部署属性，这些属性提供了一些额外的部署信息。有关节点对象的更多信息，请参阅[覆盖属性](workingcookbook-attributes.md)。要查看常用堆栈配置和部署属性的列表 (包括完全限定的节点名称)，请参阅[堆栈配置和部署属性：Linux](attributes-json-linux.md)和[内置说明书属性](attributes-recipes.md)。

**注意**  
在 Linux 堆栈上，您可以使用代理 CLI 的 [get\$1json 命令](agent-json.md)，获得这些属性 (格式化为 JSON 对象) 的完整列表。

以下各部分介绍了与简单堆栈的配置事件和部署事件相关的属性，简单堆栈包括：
+ 包含两个实例的 PHP App Server 层
+ 一个只有一个实例的 HAProxy 图层

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

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

**Topics**
+ [配置属性](#workingcookbook-json-configure)
+ [部署属性](#workingcookbook-json-deploy)

## 配置属性
<a name="workingcookbook-json-configure"></a>

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

```
{
  "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-app` 和 `lb` 确定的。有关其他层的短名的更多信息，请参阅[OpsWorks 堆栈图层参考](layers.md)。
+ `instances` 属性-各层都有一个 `instances` 元素，该元素包含一个针对各层的在线实例、以实例短名称命名的属性。

  PHP App Server 层有两个实例 `php-app1` 和 `php-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`-关于部署活动的信息，在此示例中未提及。

## 部署属性
<a name="workingcookbook-json-deploy"></a>

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

```
{
   ...
  "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`-包含各个应用程序的一组属性，这些属性提供应用程序的名称、临时名称和类型。

  slug 名称是应用程序的简称， OpsWorks Stacks 根据应用程序名称生成该名称。SimplePHP 的临时名称是 simplephp。
+ `deployment`-用于唯一标识部署的部署 ID。

`deploy` 属性包含正在部署的应用程序的信息。例如，嵌入式部署配方使用 `deploy` 属性中的数据，以在相应的目录中安装文件，并创建数据库连接文件。`deploy` 属性包含各个已部署应用程序的、以应用程序短名命名的一个属性。各个应用程序属性都包含以下属性：
+ `environment_variables`-包含您为应用程序定义的任何环境变量。有关更多信息，请参阅 [环境变量](workingapps-creating.md#workingapps-creating-environment)。
+ `domains`-默认情况下，域是应用程序的短名称，在此示例中为 simplephpapp。如果您分配了自定义域名，则它们也会出现在此处。有关更多信息，请参阅 [使用自定义域](workingapps-domains.md)。
+ `application`-应用程序的短名称。
+ `scm`-此元素包含要从其存储库下载应用程序的文件所需的信息，在此示例中为 Git 存储库。
+ `database`-数据库信息，前提是堆栈包含一个数据库层。
+ `document_root`-文档根，在此示例中被设置为 `null`，表明根是公有的。
+ `ssl_certificate_ca`、`ssl_support`、`ssl_certificate_key`-指示应用程序是否获得 SSL 支持。如果获得 SSL 支持，则 `ssl_certificate_key` 和 `ssl_certificate_ca` 属性会被设置为相应的证书。
+ `deploy_to`-应用程序的根目录。