

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 单独添加节点
<a name="opscm-addnodes-individually"></a>

**重要**  
AWS OpsWorks for Chef Automate 已于 2024 年 5 月 5 日停用，新客户和现有客户均已禁用。我们建议现有客户迁移到 Chef SaaS 或其他替代解决方案。如果您有任何疑问，可以通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

本节介绍如何运行添加或*引导 EC2 实例的`knife`命令，*以便 Chef 服务器可以对其进行管理。

在与 AWS OpsWorks for Chef Automate 服务器关联的节点上，`chef-client` 的最低支持版本为 13.*x*。我们建议运行最新、最稳定的`chef-client`版本。

**Topics**
+ [（可选）指定 Chef Automate 服务器根 CA 的 URL](#opscm-addnodes-customdomain)
+ [受支持的操作系统](#w2ab1b9c28c17c13c13)
+ [使用 Knife 添加节点](#w2ab1b9c28c17c13c15)

## （可选）指定 Chef Automate 服务器根 CA 的 URL
<a name="opscm-addnodes-customdomain"></a>

如果您的服务器使用自定义域和证书，则可能需要使用可用于获取服务器的根 CA PEM 格式证书的公共 URL 编辑 userdata 脚本中的 `ROOT_CA_URL` 变量。以下 AWS CLI 命令将您的根 CA 上传到 Amazon S3 存储桶，并生成可使用一小时的预签名 URL。

1. 将根 CA PEM 格式的证书上传到 S3。

   ```
   aws s3 cp ROOT_CA_PEM_FILE_PATH s3://bucket_name/
   ```

1. 生成一个预签名 URL，您可以使用该 URL 一小时（在本示例中为 3600 秒）来下载根 CA。

   ```
   aws s3 presign s3://bucket_name/ROOT_CA_PEM_FILE_NAME --expires-in 3600
   ```

1. 使用预签名 URL 的值编辑 userdata 脚本中的 `ROOT_CA_URL` 变量。

## 受支持的操作系统
<a name="w2ab1b9c28c17c13c13"></a>

有关当前支持的节点操作系统列表，请参阅 [Chef 网站](https://docs.chef.io/platforms.html)。

## 使用 Knife 添加节点
<a name="w2ab1b9c28c17c13c15"></a>

[https://github.com/chef/knife-ec2](https://github.com/chef/knife-ec2) 插件包括在 Chef Workstation 中。如果你更熟悉`knife-ec2`，你可以用它来代替配置和引导新 EC2instances的。`knife bootstrap`否则，请启动一个新 EC2 实例，然后按照本节中的步骤操作。

**添加要管理的节点**

1. 运行以下 `knife bootstrap` 命令：此命令将 EC2 实例引导到您的 Chef 服务器将管理的节点。请注意，您需要指示 Chef 服务器从您安装在 `nginx` 上的 [使用 Policyfile.rb 从远程源获取说明书](opscm-starterkit.md#install-cookbooks-policyfile) 说明书运行配方。有关通过运行 `knife bootstrap` 命令来添加节点的更多信息，请参阅 Chef 文档中的[引导节点](https://docs.chef.io/install_bootstrap.html)。

   下表显示了此步骤中 `knife` 命令的节点操作系统的有效用户名。如果 `root` 或 `ec2-user` 均无法使用，请与您的 AMI 供应商核实。有关连接到基于 Linux 的实例的更多信息，请参阅 AWS 文档中的[使用 SSH 连接到 Linux 实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html)。  
**节点操作系统中用户名的有效值**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/opscm-addnodes-individually.html)

   ```
   knife bootstrap INSTANCE_IP_ADDRESS -N INSTANCE_NAME -x USER_NAME --sudo --run-list "recipe[nginx]"
   ```

1. 通过运行以下命令来验证新节点是否已添加，*INSTANCE\$1NAME*替换为刚刚添加的实例的名称。

   ```
   knife client show INSTANCE_NAME
   knife node show INSTANCE_NAME
   ```