本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 中自動新增節點 AWS OpsWorks for Chef Automate
重要
AWS OpsWorks for Chef Automate 已於 2024 年 5 月 5 日結束生命週期,並已針對新客戶和現有客戶停用。我們建議現有客戶遷移至 Chef SaaS 或替代解決方案。如果您有任何問題,可以在 AWS re:Post
本主題說明如何自動將 Amazon Elastic Compute Cloud (Amazon EC2) 節點新增至 Chef 伺服器。在入門套件中的程式碼會示範如何使用無人執行的方法自動新增節點。建議設定 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 中產生公有/私有金鑰對,然後將公有金鑰傳遞給 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 角色以用作您的執行個體設定檔
建立 AWS Identity and Access Management (IAM) 角色以用作 EC2 執行個體描述檔,並將下列政策連接至 IAM 角色。此政策可讓 AWS OpsWorks for Chef Automate
(opsworks-cm
) API 在節點註冊期間與 EC2 執行個體通訊。如需執行個體設定檔的詳細資訊,請參閱《Amazon EC2 文件》中的使用執行個體設定檔。如需有關如何建立 IAM 角色的資訊,請參閱《Amazon EC2 文件》中的在主控台中建立 IAM 角色。 Amazon EC2
{ "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-namemyChefAutomateinstanceprofile
--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 取得遠端來源的技術指南確保您的 Berksfile 或 Policyfile.rb
檔案參考 Chef Client 技術指南並安裝技術指南。
步驟 3:使用無人執行的關聯指令碼建立執行個體
-
若要建立 EC2 執行個體,您可以將
userdata
指令碼從入門套件複製到 EC2 執行個體說明、Amazon EC2 Auto Scaling 群組啟動組態或 AWS CloudFormation 範本的userdata
區段。如需將指令碼新增至使用者資料的詳細資訊,請參閱《Amazon EC2 文件》中的在啟動時在 Linux 執行個體上執行命令。此指令碼會執行
opsworks-cm
APIassociate-node
命令,將新節點與 Chef 伺服器建立關聯。根據預設,新註冊的節點名稱為執行個體 ID,但您可以修改
userdata
指令碼中的NODE_NAME
變數值來變更該名稱。由於目前無法在 Chef 主控台 UI 上變更組織名稱,請將CHEF_AUTOMATE_ORGANIZATION
設定保留為default
。 -
遵循 EC2 文件中啟動執行個體內的程序,並進行此處修改。在 EC2 執行個體啟動精靈中,選擇 Amazon Linux AMI。
-
在 Configure Instance Details (設定執行個體詳細資訊) 頁面上,選取您在步驟 1:建立 IAM 角色以用作您的執行個體設定檔中建立的角色做為您的 IAM 角色。
-
在 Advanced Details (進階詳細資訊) 區域內,上傳您先前在此程序中建立的
userdata.sh
指令碼。 -
您無須在 Add Storage (新增儲存體) 頁面上進行任何變更。前往 Add Tags (新增標籤)。
-
在 Configure Security Group (設定安全群組) 頁面上,選擇 Add Rule (新增規則),然後選擇類型 HTTP 以為此範例中的 Apache Web 伺服器開啟連接埠號碼 443 和 80。
-
選擇 Review and Launch (檢閱及啟動),然後選擇 Launch (啟動)。當新節點啟動時,就會套用您在
RUN_LIST
參數中所指定配方指定的設定。 -
選用:如果您已將
nginx
技術指南新增至執行清單中,當您開啟連結至新節點公有 DNS 的網頁時,應該會看到 nginx Web 伺服器代管的網站。
其他可自動重複執行 chef-client
的方法
雖然較難達成,且不建議,但您僅可以作為獨立執行個體使用者資料的一部分執行本主題中的指令碼、使用 AWS CloudFormation 範本將其新增至新的執行個體使用者資料、設定cron
任務定期執行指令碼,或在服務chef-client
內執行。不過,建議您使用 Chef 用戶端技術指南方法,原因是其他自動化技術存在某些缺點:
如需您可以為 chef-client
提供的完整參數清單,請參閱 Chef 文件
相關主題
下列 AWS 部落格文章提供有關自動將節點與 Chef Automate 伺服器建立關聯、使用 Auto Scaling 群組或在多個帳戶中建立關聯的詳細資訊。