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

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

堆疊組態及部署屬性

重要

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

當 AWS OpsWorks 堆疊會在執行個體上執行命令 (例如,部署命令以回應 Deploy 生命週期事件),它會將一組屬性新增至執行個體的節點物件,描述堆疊的目前設定。對於部署事件和執行配方堆棧命令, AWS OpsWorks 堆疊會安裝部署屬性,以提供一些額外的部署資訊。如需節點物件的詳細資訊,請參閱覆寫屬性。如需常用堆疊組態及部署屬性的清單 (包含完整的節點名稱),請參閱堆疊組態及部署屬性:Linux內建技術指南屬性

注意

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

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

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

  • 一個執行個體的 HAProxy layer

這些範例來自其中一個PHP應用程式伺服器執行個體 php- app1。為了方便起見,屬性被格式化為一個JSON對象。物件的結構會映射到屬性的完整名稱。例如,node[:opsworks][:ruby_version]屬性會在表示中顯JSON示如下。

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

設定屬性

下列JSON物件顯示 Configuration 事件的屬性,當執行個體上線或離線時,這個事件會發生在堆疊中的每個執行個體上。這些屬性包括內建堆疊組態屬性,以及在事件發生前為堆疊定義的任何自訂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 layer 則有一個執行個體: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 的屬性,這些屬性與部署簡單PHP應用程式至堆疊執行個體的 Deploy 事件相關聯。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 堆疊會從應用程式名稱產生。簡單的蛞蝓名稱PHP是簡單的 PHP。

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

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

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

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

  • application— 應用程式的簡稱。

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

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

  • document_root— 文件根目錄,在此範例null中設定為,表示根為公開。

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

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