

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

# 在 中自動新增節點 AWS OpsWorks for Chef Automate
<a name="opscm-unattend-assoc"></a>

**重要**  
AWS OpsWorks for Chef Automate 已於 2024 年 5 月 5 日終止服務，並已針對新客戶和現有客戶停用。我們建議現有客戶遷移至 Chef SaaS 或其他解決方案。如果您有任何問題，可以在 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

本主題說明如何自動將 Amazon Elastic Compute Cloud (Amazon EC2) 節點新增至 Chef 伺服器。在[入門套件](opscm-starterkit.md)中的程式碼會示範如何使用無人執行的方法自動新增節點。建議設定 [Chef 用戶端技術指南](https://supermarket.chef.io/cookbooks/chef-client)，來使用無人執行 (或自動) 的方法建立新節點的關聯。您可以使用入門套件中的 `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 中產生公有/私有金鑰對，然後將公有金鑰傳遞給 OpsWorks `associate-node`具有節點名稱的 API 呼叫。本入門主題中所提供的指令碼包含在入門套件中，其中為您收集了您的組織名稱、伺服器名稱和伺服器端點。這可確保節點與 Chef 伺服器相關聯，且於配對私有金鑰後，執行於該節點上的 `chef-client` 代理程式軟體可與伺服器通訊。

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

如需如何取消節點關聯的詳細資訊，請參閱本指南[取消節點與 AWS OpsWorks for Chef Automate 伺服器的關聯](opscm-disassociate-node.md)中的 和 AWS OpsWorks for Chef Automate API 文件[https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html)中的 。

**Topics**
+ [支援的作業系統](#w2ab1b9c28c17c15c17)
+ [步驟 1：建立 IAM 角色以用作您的執行個體描述檔](#opscm-create-instance-profile)
+ [步驟 2：安裝 Chef 用戶端技術指南](#w2ab1b9c28c17c15c21)
+ [步驟 3：使用無人執行的關聯指令碼建立執行個體](#opscm-unattend-script)
+ [其他可自動重複執行 `chef-client` 的方法](#w2ab1b9c28c17c15c25)
+ [相關主題](#opscm-unattend-assoc-related)

## 支援的作業系統
<a name="w2ab1b9c28c17c15c17"></a>

如需節點目前的支援作業系統清單，請參閱 [Chef 網站](https://docs.chef.io/platforms.html)。

## 步驟 1：建立 IAM 角色以用作您的執行個體描述檔
<a name="opscm-create-instance-profile"></a>

建立 AWS Identity and Access Management (IAM) 角色以用作您的 EC2 執行個體描述檔，並將下列政策連接至 IAM 角色。此政策可讓 AWS OpsWorks for Chef Automate (`opsworks-cm`) API 在節點註冊期間與 EC2 執行個體通訊。如需執行個體描述檔的詳細資訊，請參閱 Amazon EC2 文件中的[使用執行個體描述](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2_instance-profiles.html)檔。如需有關如何建立 IAM 角色的資訊，請參閱 [Amazon EC2 文件中的在主控台中建立 IAM 角色](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#create-iam-role-console)。 Amazon EC2 

------
#### [ JSON ]

****  

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

------

## 步驟 2：安裝 Chef 用戶端技術指南
<a name="w2ab1b9c28c17c15c21"></a>

如果您尚未這麼做，請遵循中的步驟，[(替代方法) 使用 Berkshelf 取得遠端來源的技術指南](opscm-starterkit.md#opscm-berkshelf)確保您的 Berksfile 或 `Policyfile.rb` 檔案參考 Chef Client 技術指南並安裝技術指南。

## 步驟 3：使用無人執行的關聯指令碼建立執行個體
<a name="opscm-unattend-script"></a>

1. 若要建立 EC2 執行個體，您可以將`userdata`指令碼從[入門套件](opscm-starterkit.md)複製到 EC2 執行個體說明、Amazon EC2 Auto Scaling 群組啟動組態或 CloudFormation 範本的 `userdata`區段。如需將指令碼新增至使用者資料的詳細資訊，請參閱 Amazon EC2 文件中的[啟動時在 Linux 執行個體上執行命令](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)。

   此指令碼會執行 `opsworks-cm` API [https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_AssociateNode.html) 命令，將新節點與 Chef 伺服器建立關聯。

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

1. 遵循 EC2 文件中[啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)內的程序，並進行此處修改。在 EC2 執行個體啟動精靈中，選擇 Amazon Linux AMI。

1. 在 **Configure Instance Details (設定執行個體詳細資訊)** 頁面上，選取您在[步驟 1：建立 IAM 角色以用作您的執行個體描述檔](#opscm-create-instance-profile)中建立的角色做為您的 IAM 角色。

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

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

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

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

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

## 其他可自動重複執行 `chef-client` 的方法
<a name="w2ab1b9c28c17c15c25"></a>

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

如需您可以為 `chef-client` 提供的完整參數清單，請參閱 [Chef 文件](https://docs.chef.io/ctl_chef_client.html)。

## 相關主題
<a name="opscm-unattend-assoc-related"></a>

下列 AWS 部落格文章提供有關使用 Auto Scaling 群組或在多個帳戶中自動將節點與 Chef Automate 伺服器建立關聯的詳細資訊。
+ [使用 AWS OpsWorks for Chef Automate 搭配 Auto Scaling 管理 EC2 執行個體](https://aws.amazon.com/blogs/mt/using-aws-opsworks-for-chef-automate-to-manage-ec2-instances-with-auto-scaling/)
+ [OpsWorks for Chef Automate – 自動引導不同帳戶中的節點](https://aws.amazon.com/blogs/mt/opsworks-for-chef-automate-automatically-bootstrapping-nodes-in-different-accounts/)