本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
cfn-hup
描述
cfn-hup 協助程式是偵測任何資源中繼資料的變更,並在偵測到變更時執行使用者指定的動作之協助程式。這可讓您透過 UpdateStack
API動作在執行中的 Amazon EC2執行個體上進行組態更新。
語法
cfn-hup --config|-c config.dir \ --no-daemon \ --verbose|-v
選項
名稱 | 描述 | 必要 |
---|---|---|
|
指定路徑,讓 cfn-hup 指令碼尋找 |
否 |
|
指定此選項以執行 cfn-hup 指令碼一次並結束。 |
否 |
|
指定此選項以使用詳細資訊模式。 |
否 |
cfn-hup.conf 組態檔案
cfn-hup.conf 檔案會儲存堆疊的名稱,以及 cfn-hup 常駐常駐程式目標的 AWS 憑證。
cfn-hup.conf 檔案使用下列格式:
[main] stack=
<stack-name-or-id>
名稱 | 描述 | 必要 |
---|---|---|
|
堆疊名稱或 ID。 類型:字串 |
是 |
|
僅限擁有者的憑證檔案,其格式與命令列工具所使用的格式相同。 類型:字串 條件: |
否 |
|
與執行個體相關聯的IAM角色名稱。 類型:字串 |
否 |
|
包含堆疊 AWS 的區域名稱。 範例:us-east-2 |
否 |
|
cfn-hup 協助程式使用的 umask。 指定此值時可以包含或不包含前置 0。在這兩種情況下,都會解譯為八進位數字 (類似於 Linux 類型:介於 預設: |
否 |
|
用來檢查資源中繼資料變更的間隔,以分鐘為單位。 類型:整數 預設: |
否 |
|
指定是否使用詳細資訊記錄。 類型:布林值 預設: |
否 |
hooks.conf 組態檔案
cfn-hup 協助程式定期呼叫的使用者動作是在 hooks.conf 組態檔案中定義。hooks.conf 檔案使用下列「格式」:
[hookname] triggers=post.add
or
post.updateor
post.remove path=Resources.<logicalResourceId>
(.Metadataor
.PhysicalResourceId)(.<optionalMetadatapath>
) action=<arbitrary shell command>
runas=<runas user>
操作執行時,會在目前環境 (cfn-hup 位於其中) 的複本中執行,其中 CFN_OLD_METADATA 設定為路徑指定的先前中繼資料值,而 CFN_NEW_METADATA 設定為目前值。
掛接組態檔案只會在 cfn-hup 常駐程式啟動時載入,因此新的掛接需要重新啟動常駐程式。先前中繼資料值的快取儲存在 at /var/lib/cfn-hup/data/metadata_db 中 — 您可以刪除此快取,以強制 cfn-hup 再次執行所有 post.add 動作。
名稱 | 描述 | 必要 |
---|---|---|
|
此掛接的唯一名稱。 類型:字串 |
是 |
|
要偵測的條件逗號分隔清單。 有效值: 範例: |
是 |
|
中繼資料物件的路徑。支援在中繼資料區塊內有任意深度的路徑。 途徑格式選項
|
是 |
|
按照指定執行的任意 shell 命令。 |
是 |
|
要執行命令的使用者身分。Cfn-hup 使用 su 命令來切換到使用者。 |
是 |
hooks.d 目錄
為了支援部署變更通知勾點的數個應用程式組合,cfn-hup 支援勾點組態目錄中名為 hooks.d 的目錄。您可以將一或多個額外的勾點組態檔案放在 hooks.d 目錄中。這些額外的勾點檔案必須與 hooks.conf 檔案使用相同的配置。
cfn-hup 協助程式會剖析及載入此目錄中的每個檔案。如果 hooks.d 目錄中有任何勾點與 hooks.conf 中的勾點同名,則會合併這些勾點 (這表示 hooks.d 會覆寫 hooks.conf 中兩個檔案同時指定的任何值)。
範例
在下列範本程式碼片段中,當您變更與LaunchConfig
資源相關聯的AWS::CloudFormation::Init
資源時 CloudFormation , 會觸發cfn-auto-reloader.conf
掛鉤檔案。
JSON
... "LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "QBVersion": {"Ref": "paramQBVersion"}, "AWS::CloudFormation::Init" : { ... "/etc/cfn/hooks.d/cfn-auto-reloader.conf": { "content": { "Fn::Join": [ "", [ "[cfn-auto-reloader-hook]\n", "triggers=post.update\n", "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n", "action=/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "runas=root\n" ]]}, "mode" : "000400", "owner" : "root", "group" : "root" } ...
YAML
... LaunchConfig: Type: "AWS::AutoScaling::LaunchConfiguration" Metadata: QBVersion: !Ref paramQBVersion AWS::CloudFormation::Init: ... /etc/cfn/hooks.d/cfn-auto-reloader.conf: content: !Sub | [cfn-auto-reloader-hook] triggers=post.update path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region} runas=root mode: "000400" owner: "root" group: "root" ...
其他範例
如需範例範本,請參閱在 Amazon 上部署應用程式 EC2。