步驟 15:更新技術指南以使用條件式邏輯 - AWS OpsWorks

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

步驟 15:更新技術指南以使用條件式邏輯

重要

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

現在,透過新增使用「條件式邏輯」(一種只在條件滿足時才執行程式碼的技術) 的配方,來更新您的技術指南。如需詳細資訊,請前往 if Statementscase Statements

此配方會根據資料包的內容執行兩項作業:在日誌中顯示訊息,識別執行執行個體的作業系統,並且只在作業系統為 Linux 時,透過使用特定 Linux 版本的正確套件管理員來安裝套件。此套件名為 tree。該套件為可將目錄清單視覺化的簡易應用程式。

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

    instance = search("aws_opsworks_instance").first os = instance["os"] if os == "Red Hat Enterprise Linux 7" Chef::Log.info("********** Operating system is Red Hat Enterprise Linux. **********") elsif os == "Ubuntu 14.04 LTS" || os == "Ubuntu 16.04 LTS" || os == "Ubuntu 18.04 LTS" Chef::Log.info("********** Operating system is Ubuntu. **********") elsif os == "Microsoft Windows Server 2012 R2 Base" Chef::Log.info("********** Operating system is Windows. **********") elsif os == "Amazon Linux 2015.03" || os == "Amazon Linux 2015.09" || os == "Amazon Linux 2016.03" || os == "Amazon Linux 2016.09" || os == "Amazon Linux 2017.03" || os == "Amazon Linux 2017.09" || os == "Amazon Linux 2018.03" || os == "Amazon Linux 2" Chef::Log.info("********** Operating system is Amazon Linux. **********") elsif os == "CentOS Linux 7" Chef::Log.info("********** Operating system is CentOS 7. **********") else Chef::Log.info("********** Cannot determine operating system. **********") end case os when "Ubuntu 14.04 LTS", "Ubuntu 16.04 LTS", "Ubuntu 18.04 LTS" apt_package "Install a package with apt-get" do package_name "tree" end when "Amazon Linux 2015.03", "Amazon Linux 2015.09", "Amazon Linux 2016.03", "Amazon Linux 2016.09", "Amazon Linux 2017.03", "Amazon Linux 2017.09", "Amazon Linux 2018.03", "Amazon Linux 2", "Red Hat Enterprise Linux 7", "CentOS Linux 7" yum_package "Install a package with yum" do package_name "tree" end else Chef::Log.info("********** Cannot determine operating system type, or operating system is not Linux. Package not installed. **********") end
  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::conditional_logic

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

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

    [2015-11-16T19:59:05+00:00] INFO: ********** Operating system is Amazon Linux. **********

    由於執行個體的作業系統是 Amazon Linux 2016.09,因此日誌中只會顯示前面的項目 (方案程式碼中的五個可能項目)。

  3. 若作業系統為 Linux,配方會安裝 tree 套件。若要查看目錄內容的視覺化,請從希望查看的目錄,或使用該目錄的路徑 (例如 tree /var/chef/runs),在命令提示中輸入 tree

下一個步驟中,您會更新技術指南,使用由 Chef 社群提供之外部技術指南的功能。