使用 Chef 搜尋取得屬性值 - AWS OpsWorks

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

使用 Chef 搜尋取得屬性值

重要

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

注意

此方式適用於 Windows 堆疊和 Chef 11.10 Linux 堆疊。

直接從節點物件取得堆疊組態和部署屬性值可能十分複雜,而且無法與 Windows 堆疊搭配使用。替代方式是使用 Chef 搜尋查詢感興趣的屬性。如果您熟悉 Chef 服務器,您會發現 Chef 搜索與 AWS OpsWorks Stacks 的工作方式有所不同。由於 AWS OpsWorks Stacks 在本地模式下使用廚師客戶端,因此 Chef 搜索取決於名為 chef-zero 的本地版本的 Chef-zero 服務器,以便搜索對本地存儲在實例節點對像中的數據進行操作,而不是在遠程服務器上。

實際上,將搜尋限制為本機儲存的資料通常並不重要,因為 AWS OpsWorks Stacks 執行個體上的節點物件包含堆疊設定和部署屬性。它們包含通常從 Chef 服務器獲取並使用相同名稱的大多數(如果不是全部)數據,因此您通常可以在 AWS OpsWorks Stacks 實例上使用為 Chef 服務器編寫的搜索代碼而無需修改。如需詳細資訊,請參閱 使用 Chef 搜尋

以下顯示搜尋查詢的基本結構:

result = search(:search_index, "key:pattern")
  • 搜尋索引指定要套用查詢的屬性,以及決定要傳回的物件類型。

  • 索引鍵指定屬性名稱。

  • 模式指定您要擷取之屬性的值。

    您可以查詢特定屬性值,或使用萬用字元來查詢某範圍的值。

  • 結果是滿足查詢的物件清單,而且各為包含多個相關屬性的雜湊表。

    例如,如果您使用 node 搜尋索引,則查詢會傳回執行個體物件清單,而每個滿足查詢的執行個體都各有一個清單。每個物件都是一個雜湊表,其中包含可定義執行個體組態的一組屬性 (例如主機名稱和 IP 地址)。

例如,下列查詢使用 node 搜尋索引,這是套用至堆疊執行個體 (或 Chef 術語的節點) 的標準 Chef 索引。它會搜尋主機名稱為 myhost 的執行個體。

result = search(:node, "hostname:myhost")

搜尋會傳回主機名稱為 myhost 的執行個體物件清單。如果您想要第一個執行個體的作業系統 (例如,以 result[0][:os] 表示)。如果查詢傳回多個物件,您可以列舉它們以擷取所需資訊。

如何在配方中使用搜尋的詳細資訊取決於您使用 Linux 還是 Windows 堆疊。下列主題提供這兩種堆疊類型的範例。