步驟 14:更新技術指南以使用反覆運算 - AWS OpsWorks

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

步驟 14:更新技術指南以使用反覆運算

重要

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

透過新增使用「反覆運算」(一種重複配方程式碼多次的技術) 的配方,來更新您的技術指南。此配方會在日誌中顯示包含多個內容之資料包項目的訊息。

更新執行個體上的技術指南及執行新的配方
  1. 在您的本機工作站上,在 recipes 目錄中的 opsworks_cookbook_demo 子目錄中,建立名為 iteration_demo.rb 的檔案,其中包含下列程式碼:

    stack = search("aws_opsworks_stack").first Chef::Log.info("********** Content of 'custom_cookbooks_source' **********") stack["custom_cookbooks_source"].each do |content| Chef::Log.info("********** '#{content}' **********") end
    注意

    相較於撰寫下列不使用反覆運算的配方程式碼,撰寫前述配方程式碼更簡短、彈性更佳,也較不容易發生錯誤:

    stack = search("aws_opsworks_stack").first Chef::Log.info("********** Content of 'custom_cookbooks_source' **********") Chef::Log::info("********** '[\"type\", \"#{stack['custom_cookbooks_source']['type']}\"]' **********") Chef::Log::info("********** '[\"url\", \"#{stack['custom_cookbooks_source']['url']}\"]' **********") Chef::Log::info("********** '[\"username\", \"#{stack['custom_cookbooks_source']['username']}\"]' **********") Chef::Log::info("********** '[\"password\", \"#{stack['custom_cookbooks_source']['password']}\"]' **********") Chef::Log::info("********** '[\"ssh_key\", \"#{stack['custom_cookbooks_source']['ssh_key']}\"]' **********") Chef::Log::info("********** '[\"revision\", \"#{stack['custom_cookbooks_source']['revision']}\"]' **********")
  2. 在終端機或命令提示中,使用 tar 命令建立 opsworks_cookbook_demo.tar.gz 檔案的新版本,其中包含 opsworks_cookbook_demo 目錄及其更新後的內容。

  3. 將更新後的 opsworks_cookbook_demo.tar.gz 檔案上傳至 S3 儲存貯體。

  4. 遵循步驟 5:更新執行個體上的技術指南及執行配方中的程序,更新執行個體上的技術指南及執行配方。在「執行配方」程序中,針對 Recipes to execute (要執行的配方),輸入 opsworks_cookbook_demo::iteration_demo

測試配方
  1. 在先前程序中的 Running command execute_recipes (執行 execute_recipes 命令) 頁面顯示時,針對 cookbooks-demo1Log (日誌),選擇 show (顯示)。即會顯示 execute_recipes 日誌頁面。

  2. 向下捲動日誌,尋找看起來與下列內容相似的項目:

    [2015-11-16T19:56:56+00:00] INFO: ********** Content of 'custom_cookbooks_source' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["type", "s3"]' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["url", "https://s3.amazonaws.com/amzn-s3-demo-bucket/opsworks_cookbook_demo.tar.gz"]' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["username", "secret-key-value"]' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["password", "secret-access-key-value"]' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["ssh_key", nil]' ********** [2015-11-16T19:56:56+00:00] INFO: ********** '["revision", nil]' **********

    此配方會在日誌中顯示包含多個內容之資料包項目的訊息。資料包項目位於 aws_opsworks_stack 資料包中。資料包項目包含名為 custom_cookbooks_source 的內容。此內容的內部為六個名為 typeurlusernamepasswordssh_keyrevision 的內容。此處也會顯示他們的值。

下一個步驟中,您會更新技術指南,僅於滿足特定條件時執行配方程式碼。