自動加入節點 AWS OpsWorks for Chef Automate - AWS OpsWorks

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

自動加入節點 AWS OpsWorks for Chef Automate

重要

AWS OpsWorks 廚師自動化已於 2024 年 5 月 5 日終止使用壽命,並已針對新客戶和現有客戶停用。我們建議現有客戶遷移到 Chef SaaS 或替代解決方案。如果您有任何疑問,可以通過 AWS Re: post 或通過AWS 高級 Support 與 AWS Support 團隊聯繫。

本主題說明如何將 Amazon Elastic Compute Cloud (Amazon EC2) 節點自動新增至您的廚師伺服器。在入門套件中的程式碼會示範如何使用無人執行的方法自動新增節點。建議設定 Chef 用戶端技術指南,來使用無人執行 (或自動) 的方法建立新節點的關聯。您可以使用入門套件中的 userdata 指令碼,並搭配您要套用到您的節點的技術指南變更 userdata 指令碼的 run_list 區段,或者 Policyfile.rb。在您執行 chef-client 代理程式前,請先將 Chef 用戶端技術指南安裝到 Chef 伺服器,然後使用如 HTTPD 角色在服務模式中安裝 chef-client 代理程式,如以下範例命令所示。

chef-client -r "chef-client,role[httpd]"

為了能與 Chef 伺服器通訊,chef-client 代理程式軟體必須具有用戶端節點的公有金鑰存取權。您可以在 Amazon EC2 中產生公開-私密 key pair,然後將公開金鑰傳遞至具有節點名稱的 AWS OpsWorks associate-node API 呼叫。本入門主題中所提供的指令碼包含在入門套件中,其中為您收集了您的組織名稱、伺服器名稱和伺服器端點。這可確保節點與 Chef 伺服器相關聯,且於配對私有金鑰後,執行於該節點上的 chef-client 代理程式軟體可與伺服器通訊。

與 AWS OpsWorks for Chef Automate 伺服器相關聯節點上的 chef-client 最低支援版本為 13.x。我們建議您執行最新、穩定的chef-client版本。

有關如何取消節點關聯的詳細資訊,請參閱取消節點與伺服器 AWS OpsWorks for Chef Automate 的關聯本指南中的和 AWS OpsWorks for Chef Automate API 文件disassociate-node中的。

支援的作業系統

如需節點目前的支援作業系統清單,請參閱 Chef 網站

步驟 1:建立要用作執行個體設定檔的 IAM 角色

建立用作 EC2 執行個體設定檔的 AWS Identity and Access Management (IAM) 角色,並將以下政策附加到 IAM 角色。此政策可讓 AWS OpsWorks for Chef Automate (opsworks-cm) API 在節點註冊期間與 EC2 執行個體通訊。如需執行個體設定檔的詳細資訊,請參閱 Amazon EC2 文件中的使用執行個體設定檔。如需如何建立 IAM 角色的詳細資訊,請參閱 Amazon EC2 文件中的在主控台中建立 IAM 角色

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "opsworks-cm:AssociateNode", "opsworks-cm:DescribeNodeAssociationStatus", ], "Resource": "*", "Effect": "Allow" } ] }

AWS OpsWorks 提供 AWS CloudFormation 範本,您可以使用上述政策陳述式建立 IAM 角色。下列 AWS CLI 指令會使用此範本為您建立執行個體設定檔角色。如果您想要在預設區域中建立新 AWS CloudFormation 堆疊,可以省略--region參數。

aws cloudformation --region region ID create-stack --stack-name myChefAutomateinstanceprofile --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-nodes-roles.yaml --capabilities CAPABILITY_IAM

步驟 2:安裝 Chef 用戶端技術指南

如果您尚未這樣做,請按照中的步驟操作,(替代方法) 使用 Berkshelf 取得遠端來源的技術指南以確保您的 Berks Policyfile.rb file 或文件引用了 Chef 客戶端食譜並安裝食譜。

步驟 3:使用無人執行的關聯指令碼建立執行個體

  1. 若要建立 EC2 執行個體,您可以將指userdata令碼從入門套件複製到 EC2 執行個體指示、Amazon EC2 Auto Scaling 群組啟動組態或 AWS CloudFormation 範本的userdata部分。如需有關將指令碼新增至使用者資料的詳細資訊,請參閱 Amazon EC2 文件中的啟動時在 Linux 執行個體上執行命令。

    此指令碼會執行 opsworks-cm API associate-node 命令,將新節點與 Chef 伺服器建立關聯。

    根據預設,新註冊的節點名稱為執行個體 ID,但您可以修改 userdata 指令碼中的 NODE_NAME 變數值來變更該名稱。由於目前無法在 Chef 主控台 UI 上變更組織名稱,請將 CHEF_AUTOMATE_ORGANIZATION 設定保留為 default

  2. 遵循 EC2 文件中啟動執行個體內的程序,並進行此處修改。在 EC2 執行個體啟動精靈中,選擇 Amazon Linux AMI。

  3. Configure Instance Details (設定執行個體詳細資訊) 頁面上,選取您在步驟 1:建立要用作執行個體設定檔的 IAM 角色中建立的角色做為您的 IAM 角色。

  4. Advanced Details (進階詳細資訊) 區域內,上傳您先前在此程序中建立的 userdata.sh 指令碼。

  5. 您無須在 Add Storage (新增儲存體) 頁面上進行任何變更。前往 Add Tags (新增標籤)

  6. Configure Security Group (設定安全群組) 頁面上,選擇 Add Rule (新增規則),然後選擇類型 HTTP 以為此範例中的 Apache Web 伺服器開啟連接埠號碼 443 和 80。

  7. 選擇 Review and Launch (檢閱及啟動),然後選擇 Launch (啟動)。當新節點啟動時,就會套用您在 RUN_LIST 參數中所指定配方指定的設定。

  8. 選用:如果您已將 nginx 技術指南新增至執行清單中,當您開啟連結至新節點公有 DNS 的網頁時,應該會看到 nginx Web 伺服器代管的網站。

其他可自動重複執行 chef-client 的方法

雖然比較難達成,但不建議您執行此主題中的指令碼,但您可以將指令碼作為獨立執行個體使用者資料的一部分執行,使用 AWS CloudFormation 範本將其新增至新的執行個體使用者資料、設定cron工作以定期執行指令碼,或在服務chef-client中執行。不過,建議您使用 Chef 用戶端技術指南方法,原因是其他自動化技術存在某些缺點:

如需您可以為 chef-client 提供的完整參數清單,請參閱 Chef 文件

以下 AWS 博客文章提供了有關使用 Auto Scaling 組或在多個帳戶中自動關聯節點與 Chef Automate 服務器自動關聯的更多信息。