Attributes - AWS OpsWorks

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

Attributes

重要

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

配方和範本視各種不同的值 (例如組態設定) 而定。您可以建立屬性檔案並以其中的屬性來代表每個值,而不必將這些值硬式編碼在配方或範本中。然後,您可以使用配方或範本中的屬性,而非明確的值。使用屬性的優點是您可以覆寫它們的值,而無需動用到技術指南。因此,您應該一律使用屬性來定義下列類型的值:

  • 可能因不同堆疊或時間而異的值,例如使用者名稱。

    如果您硬式編碼這些值,那麼在您每次變更值時都必須變更配方或範本。使用屬性來定義這些值時,您可以為每個堆疊使用相同的技術指南,而只要覆寫適當的屬性即可。

  • 機密值,例如密碼或秘密金鑰。

    若您在技術指南中放入明確的機密值,可能會提高曝光的風險。相反的,請使用虛設值定義屬性,再將其覆寫以設定實際的值。覆蓋此類屬性的最佳方法是使用 custom JSON。如需詳細資訊,請參閱使用自訂 JSON

如需屬性和其覆寫方式的詳細資訊,請參閱覆寫屬性

下列是範例屬性檔案的部分範例。

... default["apache"]["listen_ports"] = [ '80','443' ] default["apache"]["contact"] = 'ops@example.com' default["apache"]["timeout"] = 120 default["apache"]["keepalive"] = 'Off' default["apache"]["keepaliverequests"] = 100 default["apache"]["keepalivetimeout"] = 3 default["apache"]["prefork"]["startservers"] = 16 default["apache"]["prefork"]["minspareservers"] = 16 default["apache"]["prefork"]["maxspareservers"] = 32 default["apache"]["prefork"]["serverlimit"] = 400 default["apache"]["prefork"]["maxclients"] = 400 default["apache"]["prefork"]["maxrequestsperchild"] = 10000 ...

AWS OpsWorks 堆棧通過使用以下語法定義屬性:

node.type["attribute"]["subattribute"]["..."]=value

您也可以使用冒號 (:),如下所示:

node.type[:attribute][:subattribute][:...]=value

屬性定義具有下列元件:

node.

node. 字首是選用的,且通常會將其省略,如範例所示。

type

此類型可控制是否可以覆寫屬性。 AWS OpsWorks 堆疊屬性通常會使用下列其中一種類型:

  • default 是最常用的類型,因為它允許屬性覆寫。

  • normal定義了覆蓋其中一個標準的屬性 AWS OpsWorks 堆疊屬性值。

注意

Chef 支持其他類型,這不是必需的 AWS OpsWorks 堆疊,但可能對您的專案有用。如需詳細資訊,請參閱關於屬性

attribute name

屬性名稱會使用標準的 Chef 節點語法 [:attribute][:subattribute][...]。您可以隨喜好使用任何屬性名稱。不過,如覆寫屬性中所述,自訂的技術指南屬性會與來自堆疊組態、部署屬性和 Chef Ohai 工具的屬性,一起合併到執行個體的節點物件中。常用的組態名稱 (如 portuser) 可能會出現在各種技術指南中。

為了避免名稱衝突,慣例是建立含有至少兩個元素的完整屬性名稱,如範例所示。第一個元素應該是唯一的,且通常以產品名稱 (如 Apache) 為依據。後面接著一或多個子屬性以識別特定的值,例如 [:user][:port]。您可以依據專案使用任何適當數量的子屬性。

value

您可以為下列類型的值設定屬性:

  • 字串,例如 default[:apache][:keepalive] = 'Off'

  • 數字 (不含引號),例如 default[:apache][:timeout] = 120

  • 布林值,其可為 truefalse (無引號)。

  • 值清單,例如 default[:apache][:listen_ports] = [ '80','443' ]

屬性檔案是一種 Ruby 應用程式,因此您也可以使用節點語法和邏輯運算子,根據其他屬性來指派值。如需如何定義屬性的詳細資訊,請參閱關於屬性。如需工作屬性檔案的範例,請參閱 AWS OpsWorks 堆棧內置食譜和https://github.com/aws/操作食譜。