

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 堆疊組態及部署屬性
<a name="workingcookbook-json"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

當 OpsWorks Stacks 在執行個體上執行命令時，例如，回應部署生命週期事件的部署命令，它會將一組屬性新增至描述堆疊目前組態的執行個體節點物件。對於部署事件和[執行配方堆疊命令](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 layer
+ 具有一個執行個體的 HAProxy layer

這些範例來自其中一個 PHP App Server 執行個體 **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` 屬性 – 一組屬性，每個屬性都會描述其中一個堆疊層的組態。

  這些 layer 會根據其短名識別，此範例中為 `php-app` 和 `lb`。如需其他 layer 之短名的詳細資訊，請參閱 [OpsWorks Stacks Layer 參考](layers.md)。
+ `instances` 屬性 – 每個 layer 都有 `instances`元素，其中包含每個 layer 線上執行個體的屬性，以執行個體的簡短名稱命名。

  PHP App Server layer 有兩個執行個體 `php-app1`和 `php-app2`。HAProxy layer 有一個執行個體 `lb1`。
**注意**  
`instances` 元素只包含那些在建立特定堆疊及部署屬性時處於線上狀態的執行個體。
+ 執行個體屬性 – 每個執行個體屬性都包含一組屬性來描述執行個體，例如執行個體的私有 IP 地址和私有 DNS 名稱。為了簡化，此範例只顯示 `php-app2` 屬性的詳細資訊。其他的也包含相似的資訊。
+ `applications` – 部署的應用程式清單，未用於此範例。
+ `stack` – 堆疊名稱；在此範例中`MyStack`為 。
+ `instance` – 已安裝這些屬性的執行個體；在此範例中`php-app1`為 。配方可使用此屬性取得執行中執行個體的資訊，例如執行個體的公有 IP 地址。
+ `activity` – 產生屬性的活動；在此範例中為設定事件。
+ `rails_stack` – 包含 Rails App Server layer 之堆疊的 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>

部署事件或[執行配方堆疊命令](workingstacks-commands.md)的屬性由內建的堆疊組態及部署屬性，以及任何自訂堆疊或部署屬性組成 (此範例中則無)。下列 JSON 物件顯示與部署事件關聯之 **php-app1** 的屬性。該事件會將 SimplePHP 應用程式部署到堆疊的 PHP 執行個體。物件的大部分都是由與先前章節中說明的設定事件屬性相似的堆疊組態屬性組成，因此範例主要會聚焦在部署限定的屬性。如需各種屬性的詳細描述，請參閱[堆疊組態及部署屬性：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 名稱和類型。

  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_certificate_key` 和 `ssl_certificate_ca` 屬性會設為對應的憑證。
+ `deploy_to` – 應用程式根目錄。