範例 1:安裝套件 - AWS OpsWorks

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

範例 1:安裝套件

重要

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

套件安裝是較常用的配方之一,相當簡單,視套件而定。例如,下列配方將 Git 安裝在 Linux 系統中。

package 'git' do action :install end

package 資源處理套件安裝。在本範例中,您不需要指定任何屬性。資源名稱是 package_name 屬性的預設值,它可以識別套件。install 動作指示提供者安裝套件。略過 install 可讓程式碼變得更簡單,它是 package 資源的預設動作。當您執行配方時,Chef 會使用適當的提供者安裝套件。在本範例要使用的 Ubuntu 系統中,提供者透過呼叫 apt-get 來安裝 Git。

注意

在 Windows 系統上安裝軟體需要的程序略有不同。如需詳細資訊,請參閱 安裝 Windows 軟體

若要使用 Test Kitchen 在 Vagrant 中執行此配方,您必須先設定技術指南,然後初始化及設定 Test Kitchen。下列內容適用於 Linux 系統,但 Windows 和 Macintosh 系統所用的程序基本類似。一開始先開啟終端機視窗,本章的所有範例都使用命令列工具。

準備技術指南
  1. 在您的主目錄中建立名為 opsworks_cookbooks 的子目錄,它會包含本章所有的技術指南。然後,為此技術指南建立名為 installpkg 的子目錄中,導覽至它。

  2. installpkg 中建立名為 metadata.rb 的檔案,包含下列程式碼。

    name "installpkg" version "0.1.0"

    為求簡化,本章的範例只指定技術指南名稱和版本,但 metadata.rb 可以包含各種技術指南中繼資料。如需詳細資訊,請參閱 About Cookbook Metadata

    注意

    初始化 Test Kitchen 之前請務必先建立 metadata.rb,它會使用資料建立預設的組態檔案。

  3. installpkg 中執行 kitchen init,這會初始化 Test Kitchen 並安裝預設的 Vagrant 驅動程式。

  4. kitchen init 命令會在 installpkg 中建立名為 .kitchen.yml 的 YAML 組態檔案。在您偏好的文字編輯器中開啟 檔案。.kitchen.yml 檔案包含 platforms 區段,指定執行配方的系統。Test Kitchen 會在每個平台上建立執行個體並執行指定的配方。

    注意

    Test Kitchen 預設一次只在一個平台上執行配方。如果您在建立執行個體的任何命令中新增 -p 參數,Test Kitchen 就會以平行方式在每個平台上執行配方。

    針對本範例,單一平台即已足夠,所以請編輯 .kitchen.yml 以移除 centos-6.4 平台。您的 .kitchen.yml 檔案現在看起來應如下:

    --- driver: name: vagrant provisioner: name: chef_solo platforms: - name: ubuntu-12.04 suites: - name: default run_list: - recipe[installpkg::default] attributes:

    Test Kitchen 只執行 .kitchen.yml 執行清單中的配方。您使用 [cookbook_name::recipe_name] 格式識別配方,其中 recipe_name 省略 .rb 副檔名。.kitchen.yml 執行清單一開始會包含技術指南的預設配方 installpkg::default。這是您要實作的配方,因此您不需要修改執行清單。

  5. 建立 installpkg 的子目錄,名為 recipes

    如果食譜包含收件者 (大部分都是這樣),則必須位於子目錄中。recipes

您現在可以將配方新增到技術指南,使用 Test Kitchen 在執行個體上執行它。

執行配方
  1. 建立包含區段開頭處之 Git 安裝範例程式碼名為 default.rb 的檔案,並將它儲存到 recipes 子目錄中。

  2. installpkg 目錄中執行 kitchen converge。此命令在 Vagrant 中啟動一個新的 Ubuntu 實例,將您的食譜複製到實例,並啟動 Chef 運行以執行運行列表中的.kitchen.yml配方。

  3. 若要驗證配方是否成功,請執行 kitchen login 開啟執行個體的 SSH 連線。然後,git --version 驗證是否已成功安裝 Git。若要返回您的工作站,請執行 exit

  4. 完成後,請執行 kitchen destroy 關機執行個體。下一個範例會使用不同的技術指南。

此範例是非常好的入門方法,但它非常簡單。其他套件的安裝比較複雜,您可能需要執行下列任一或所有作業:

  • 建立並設定使用者。

  • 建立一或多個資料、日誌等等的目錄。

  • 安裝一或多個組態檔案。

  • 為不同的作業系統指定不同的套件名稱或屬性值。

  • 啟動服務,然後視需要再重新啟動它。

下列範例說明如何解決這些問題,以及其他一些有用的操作。