本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將堆疊設定屬性移至資料包
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請透過 AWS Re: post
AWS OpsWorks 「堆疊」會將各式各樣的堆疊設定暴露給您的廚師食譜。這些堆疊設定包含的值如:
-
堆疊技術指南來源 URL
-
Layer 磁碟區組態
-
執行個體主機名稱
-
Elastic Load Balancing DNS 名稱
-
應用程式來源 URL
-
使用者名稱
與直接在配方中硬編碼堆疊設定相比,參考配方中的堆疊設定能讓配方程式碼更強大且較不容易出錯。本主題說明如何存取這些堆疊設定,以及如何將它們從適用於 Linux 之 Chef 11.10 和舊版的屬性中移至 Chef 12 Linux 的資料包。
在適用於 Linux 的 Chef 11.10 和舊版中,堆疊設定可提供為 Chef 屬性node
物件或透過 Chef 搜尋存取。這些屬性會儲存在/var/lib/aws/opsworks/chef
目錄中的一組 JSON 檔案中的 AWS OpsWorks Stacks 執行個體上。如需詳細資訊,請參閱 堆疊組態及部署屬性:Linux。
在 Chef 12 Linux 中,堆疊設定可提供為 Chef 資料包/var/chef/runs/
目錄中的一組 JSON 文件中,其中run-ID
/data_bags運行 ID
是 AWS OpsWorks Stacks 分配給在實例上運行的每個 Chef 的唯一 ID。堆疊設定不再提供為 Chef 屬性,因此堆疊設定再也不能透過 Chef node
物件存取。如需更多資訊,請參閱AWS OpsWorks 堆疊資料袋參考。
例如,在適用於 Linux 的 Chef 11.10 和舊版中,以下配方程式碼使用 Chef node
物件取得代表應用程式簡稱和來源 URL 的屬性。接著使用 Chef 日誌寫入這兩個屬性值:
Chef::Log.info ("********** The app's short name is '#{node['opsworks']['applications'].first['slug_name']}' **********") Chef::Log.info("********** The app's URL is '#{node['deploy']['simplephpapp']['scm']['repository']}' **********")
在 Chef 12 Linux 中,以下配方程式碼使用 aws_opsworks_app
搜尋索引取得 aws_opsworks_app
資料包中第一個資料包項目的內容。然後,程式碼將兩個訊息寫入 Chef 日誌,一個有應用程式簡稱資料包內容,另一個有應用程式來源 URL 資料包內容:
app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")
若要將您存取堆疊設定配方程式碼,從適用於 Linux 的 Chef 11.10 和舊版遷移至 Chef 12 Linux,您必須修改您的程式碼,以:
-
存取 Chef 資料包,而非 Chef 屬性。
-
使用 Chef 搜尋,而非 Chef
node
物件。 -
使用 AWS OpsWorks 堆疊資料包名稱,例如
aws_opsworks_app
,而不是使用 AWS OpsWorks Stacks 屬性名稱,例如opsworks
和deploy
。
如需更多資訊,請參閱AWS OpsWorks 堆疊資料袋參考。