堆疊組態及部署屬性 - AWS OpsWorks

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

堆疊組態及部署屬性

重要

該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post 或透過進AWS 階 Support 與 AWS Support 團隊聯絡。

當 AWS OpsWorks 堆棧在實例上運行命令時(例如部署命令以響應 Deploy 生命週期事件)時,它會向實例的節點對象添加一組屬性,描述堆棧的當前配置。對於「部署」事件和「執行方法」堆疊命令, AWS OpsWorks Stacks 會安裝部署屬性,以提供一些額外的部署資訊。如需節點物件的詳細資訊,請參閱覆寫屬性。如需常用堆疊組態及部署屬性的清單 (包含完整的節點名稱),請參閱堆疊組態及部署屬性:Linux內建技術指南屬性

注意

在 Linux 堆疊上,您可以透過使用代理程式 CLI 的 get_json 命令取得這些屬性的完整清單,其格式為 JSON 物件。

下列各節顯示與設定事件關聯的屬性,以及一個簡易堆疊的部署事件,由下列項目組成:

  • 具有兩個實例的 PHP 應用程序服務器層

  • 具有一個實例的 HAProxy 圖層

這些例子來自 PHP 應用程序服務器實例之一,PHP 應用程序 1。為了方便,屬性已格式化為 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屬性-一組屬性,每個屬性描述了堆棧層之一的配置。

    這些 layer 會根據其短名識別,此範例中為 php-applb。如需其他 layer 之短名的詳細資訊,請參閱 AWS OpsWorks 堆疊圖層參考

  • instances屬性 — 每個圖層都有一個instances元素,其中包括每個圖層線上實例的屬性,並以實例的簡短名稱命名。

    PHP 應用程式伺服器層有兩個執行個體,以php-app1php-app2. HAProxy 圖層有一個實體。lb1

    注意

    instances 元素只包含那些在建立特定堆疊及部署屬性時處於線上狀態的執行個體。

  • 執行個體屬性 — 每個執行個體屬性都包含一組屬性來描述執行個體的特性,例如執行個體的私有 IP 位址和私有 DNS 名稱。為了簡化,此範例只顯示 php-app2 屬性的詳細資訊。其他的也包含相似的資訊。

  • applications— 已部署的應用程式清單,未在此範例中使用。

  • stack— 堆疊名稱;MyStack在此範例中。

  • instance— 安裝這些屬性的實例;php-app1在此範例中。配方可使用此屬性取得執行中執行個體的資訊,例如執行個體的公有 IP 地址。

  • activity— 產生屬性的活動;此範例中為「配置」事件。

  • rails_stack— 包含 Rails 應用程式伺服器層的堆疊的 Rails 堆疊。

  • deployment— 這些屬性是否與部署相關聯。此範例中已設為 null,因為他們是與設定事件關聯。

  • valid_client_activities-有效的客戶活動列表。

opsworks 屬性其後跟隨幾個其他最上層屬性,包含下列項目:

  • opsworks_custom_cookbooks— 是否已啟用自訂食譜。若為是,則屬性會包含自訂配方的清單。

  • recipes— 這是由此活動運行的食譜.

  • opsworks_rubygems— 執行個體的 RubyGems版本。

  • ssh_users— SSH 使用者清單;此範例中沒有任何項目。

  • opsworks_bundler— 捆綁器版本以及是否已啟用。

  • deploy— 部署活動的相關資訊;此範例中沒有任何資訊。

部署屬性

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

  • deployment— 可唯一識別部署的部署 ID。

deploy 屬性包含正在部署之應用程式的相關資訊。例如,內建的部署配方會使用 deploy 屬性中的資料,來在適當的目錄中安裝檔案及建立資料庫連線檔案。deploy 屬性包含每個部署應用程式的一個屬性,以應用程式的短名命名。每個應用程式的屬性都包含以下屬性:

  • environment_variables— 包含您為應用程式定義的任何環境變數。如需詳細資訊,請參閱 環境變數

  • domains— 默認情況下,域是應用程序的簡短名稱,在此示例中是簡單的。若您已指派自訂網域,他們也會出現在這裡。如需詳細資訊,請參閱 使用自訂網域

  • application— 應用程式的簡稱。

  • scm— 此元素包含從其儲存庫下載應用程式檔案所需的資訊;此範例中為 Git 儲存庫。

  • database— 資料庫資訊 (如果堆疊包含資料庫層)。

  • document_rootnull 在此範例中設定為的文件根目錄,表示根目錄為 public。

  • ssl_certificate_cassl_supportssl_certificate_key — 指出應用程式是否支援 SSL。若有的話,ssl_certificate_keyssl_certificate_ca 屬性會設為對應的憑證。

  • deploy_to— 應用程式的根目錄。