

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

# 创建 Chef Automate 服务器
<a name="gettingstarted-opscm-create"></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 支持 团队联系。

您可以使用 AWS OpsWorks for Chef Automate 控制台创建 Chef 服务器，或者 AWS CLI.

**Topics**
+ [在中创建一个 Chef Automate 服务器 AWS 管理控制台](#gettingstarted-opscm-create-console)
+ [使用 Chef Automate 服务器创建 AWS CLI](#gettingstarted-opscm-create-cli)

## 在中创建一个 Chef Automate 服务器 AWS 管理控制台
<a name="gettingstarted-opscm-create-console"></a>

1. 登录 AWS 管理控制台 并打开 OpsWorks 控制台，网址为[https://console.aws.amazon.com/opsworks/](https://console.aws.amazon.com/opsworks/)。

1. 在 OpsWorks 主页上，选择 **Chef Automate OpsWorks 的 “前往**”。  
![\[OpsWorks 服务主页\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opspup_day0.png)

1. 在 AWS OpsWorks for Chef Automate 主页上，选择**创建 Chef 自动服务器**。  
![\[Chef Automate 服务器主页\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_dashboardhome.png)

1. 在 **Set name, region, and type (设置名称、区域和类型)** 页面上，指定服务器的名称。Chef Server 名称最多可包含 40 个字符，并且只能包含字母数字字符和短划线。选择支持的区域，然后选择支持所要管理节点数量的实例类型。如果需要，您可以在服务器创建之后更改实例类型。对于本演练，我们在美国西部（俄勒冈州）区域中创建一个 **m4.large** 实例类型。选择**下一步**。  
![\[设置名称、区域和类型页面\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_setname.png)

1. 在 **Configure server** 页面上，除非您要指定密钥对名称，否则保留 **SSH key** 下拉列表中的默认选择。  
![\[选择 SSH 密钥页面\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_keypair.png)

1. 对于 **Specify server endpoint (指定服务器终端节点)**，保留默认值 **Use an automatically-generated endpoint (使用自动生成的终端节点)**，然后选择 **Next (下一步)**，除非您希望您的服务器位于您自己的自定义域中。要配置自定义域，请继续执行下一步。  
![\[指定服务器终端节点部分\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_use_auto_endpoint.png)

1. 要使用自定义域，对于 **Specify server endpoint (指定服务器终端节点)**，从下拉列表中选择 **Use a custom domain (使用自定义域)**。  
![\[使用自定义域\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_use_custom_domain.png)

   1. 对于**完全限定域名 (FQDN)**，指定 FQDN。您必须拥有要使用的域名。

   1. 对于 **SSL 证书**，请粘贴整个 PEM 格式的证书，以 `–––--BEGIN CERTIFICATE-----` 开头并以 `–––--END CERTIFICATE-----` 结尾。SSL 证书主题必须与您在上一步中输入的 FQDN 相匹配。

   1. 对于 **SSL private key (SSL 私有密钥)**，请粘贴整个 RSA 私有密钥，以 `–––--BEGIN RSA PRIVATE KEY-----` 开头并以 `–––--END RSA PRIVATE KEY-----` 结尾。SSL 私有密钥必须与您在上一步中输入的 SSL 证书中的公有密钥匹配。选择**下一步**。

1. 在 **Configure Advanced Settings** 页面上的 **Network and Security** 区域中，选择 VPC、子网以及一个或多个安全组。以下是 对您 VPC 的要求：
   + VPC 必须只有具有一个公有子网。
   + 必须启用 DNS 解析。
   + 必须在公有子网上启用**自动分配公有 IP**。

   OpsWorks 如果您还没有要使用的安全组、服务角色和实例配置文件，则可以为您生成安全组、服务角色和实例配置文件。您的服务器可属于多个安全组。在离开此页后，您无法更改 Chef Server 的网络和安全设置。  
![\[网络和安全性\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_networksec.png)

1. 在 **System maintenance (系统维护)** 部分中，设置您希望系统维护开始的日期和时间。由于您可以预见到服务器会在系统维护期间脱机，因此请选择正常工作时间中对服务器需求较低的时间。维护完成之前，已连接的节点进入 `pending-server` 状态。

   维护时段是必需的。您可以稍后使用 AWS 管理控制台 AWS CLI、或更改开始日期和时间 APIs。  
![\[系统维护\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_sysmaint.png)

1. 配置备份。默认情况下会启用自动备份。设置自动备份启动的首选频率和时间，并设置在 Amazon Simple Storage Service 中存储的备份生成数。最多保留 30 个备份；当达到最大值时， AWS OpsWorks for Chef Automate 会删除最旧的备份，以便为新备份腾出空间。  
![\[自动备份\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/opscm_backupconfig.png)

1. （可选）在**标签**中，向服务器和相关资源添加标签，例如 EC2 实例、弹性 IP 地址、安全组、S3 存储桶和备份。有关为 AWS OpsWorks for Chef Automate 服务器添加标签的更多信息，请参见[使用 AWS OpsWorks for Chef Automate 资源上的标签](opscm-tags.md)。

1. 在您配置完高级设置后，选择 **Next (下一步)**。

1. 在**审核**页面上，审核您的选择。当您准备好创建服务器时，选择 **Launch (启动)**。

   在等待 OpsWorks 创建 Chef 服务器时，请继续下载入门套件[使用初学者工具包配置 Chef Server](opscm-starterkit.md)和 Chef Automate 仪表板凭据。请不要一直等到您的服务器联机再下载这些项。

   服务器创建完成后，您的 Chef Server 可在 AWS OpsWorks for Chef Automate 主页上使用，其状态为 **online (在线)**。服务器联机之后，Chef Automate 控制面板在服务器的域上可用，位于以下格式的 URL 上：`https://your_server_name-random.region.opsworks-cm.io`。

## 使用 Chef Automate 服务器创建 AWS CLI
<a name="gettingstarted-opscm-create-cli"></a>

通过运行 AWS CLI 命令创建 AWS OpsWorks for Chef Automate 服务器不同于在控制台中创建服务器。如果您未指定要使用的现有服务角色和安全组，则可以在控制台中为您 OpsWorks 创建服务角色和安全组。在中 AWS CLI，如果您未指定安全组，则 OpsWorks 可以为您创建安全组，但它不会自动创建服务角色；您必须在命令中提供服务角色 ARN。`create-server`在控制台中，在创建 Ch OpsWorks ef Automate 服务器时，你可以下载 Chef Automate 入门套件和 Chef Automate 仪表板的登录凭证。由于使用创建服务器时无法执行此操作，因此在新 AWS OpsWorks for Chef Automate AWS OpsWorks for Chef Automate 服务器联机后 AWS CLI，您可以使用 JSON 处理实用程序从`create-server`命令的结果中获取登录凭证和入门套件。或者， AWS OpsWorks for Chef Automate 服务器联机之后，您可以在控制台中生成一组新的登录凭证和一个新的初学者工具包。

如果您的本地计算机尚未运行 AWS CLI，请 AWS CLI 按照 *AWS 命令行界面用户指南*中的[安装说明](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)下载并安装。本部分未介绍可以与 `create-server` 命令结合使用的所有参数。有关 `create-server` 参数的更多信息，请参阅 [`create-server` 参考](https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html) 中的 *AWS CLI *。

1. 请确保完成先决条件，尤其是[设置 VPC](gettingstarted-opscm.md#set-up-vpc)，或确保您有要使用的现有 VPC。要创建 Chef Automate 服务器，您需要一个子网 ID。

1. (可选) 通过使用 [OpenSSL](https://www.openssl.org/) 来生成 Chef 关键密钥，将该密钥保存到您的本地计算机上安全、方便的文件中。如果您在 `create-server` 命令中不提供，则该关键密钥将作为服务器创建过程的一部分自动生成。如果要跳过此步骤，您可以改为从 `create-server` 命令的结果中获取 Chef Automate 关键密钥。如果您选择使用以下命令生成关键密钥，请务必包含 `-pubout` 参数，因为 Chef Automate 关键密钥值是 RSA 密钥对的公开部分。有关更多信息，请参阅步骤 6。

   ```
   umask 077
   openssl genrsa -out "pivotal" 2048
   openssl rsa -in "pivotal" -pubout
   ```

1. 创建服务角色和实例配置文件。

1. 在您的账户中查找并复制服务角色。 ARNs 

   ```
   aws iam list-roles --path-prefix "/service-role/" --no-paginate
   ```

   在 `list-roles` 命令的结果中，查找类似于以下内容的服务角色 ARN 条目。记下服务角色 ARNs。您需要这些值来创建您的 Chef Automate 服务器。

1. 在您的账户中查找并复制实例配置文件。 ARNs 

   ```
   aws iam list-instance-profiles --no-paginate
   ```

   在 `list-instance-profiles` 命令的结果中，查找类似于以下内容的实例配置文件 ARN 条目。记下实例配置文件 ARNs。您需要这些值来创建您的 Chef Automate 服务器。

1. 通过运行`create-server`命令创建 AWS OpsWorks for Chef Automate 服务器。
   + `--engine` 值为 `ChefAutomate`，`--engine-model` 为 `Single`，`--engine-version` 为 `12`。
   + 在您的 AWS 账户中，服务器名称在每个区域内必须是唯一的。服务器名称必须以字母开头；然后允许字母、数字或连字符 (-)，最多 40 个字符。
   + 使用您在步骤 4 和 5 中复制的实例配置文件 ARN 和服务角色 ARN。
   + 有效实例类型为 `m5.large`、`r5.xlarge` 或 `r5.2xlarge`。有关这些实例类型规格的更多信息，请参阅 *Amazon EC2 用户指南*中的[实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
   + `--engine-attributes` 参数是可选的；如果您不指定一个或两个值，则服务器创建过程会为您生成这些值。如果您添加 `--engine-attributes`，请指定您在步骤 2 中生成的 `CHEF_AUTOMATE_PIVOTAL_KEY` 值、`CHEF_AUTOMATE_ADMIN_PASSWORD`，或两者。

     如果您不设置 `CHEF_AUTOMATE_ADMIN_PASSWORD` 的值，一个密码将生成并作为 `create-server` 响应的一部分返回。您也可以在控制台中再次下载初学者工具包，该工具包会重新生成此密码。该密码的最小长度为 8 个字符，最大长度为 32 个字符。该密码可以包含字母、数字和特殊字符 (`!/@#$%^+=_`)。该密码必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。
   + SSH 密钥对是可选的，但可以帮助您连接到 Chef Automate 服务器 (如果您需要重置 Chef Automate 控制面板管理员密码)。有关创建 SSH 密钥对的更多信息，请参阅[亚马逊* EC2 用户指南中的亚马逊 EC2 *密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。
   + 要使用自定义域，请将以下参数添加到命令中。否则，Chef Automate 服务器创建过程会自动为您生成终端节点。配置自定义域需要所有三个参数。有关使用这些参数的其他要求的信息，请参阅 OpsWorks CM API 参考[CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)中的。
     + `--custom-domain` - 服务器的可选公有端点，例如 `https://aws.my-company.com`。
     + `--custom-certificate` - PEM 格式的 HTTPS 证书。该值可以是单个自签名证书或证书链。
     + `--custom-private-key` - PEM 格式的私有密钥，用于通过 HTTPS 连接到服务器。私有密钥不得加密；无法使用密码或密码短语保护它。
   + 需要每周进行系统维护。有效值必须按以下格式指定：`DDD:HH:MM`。指定的时间为协调世界时 (UTC)。如果您不指定 `--preferred-maintenance-window` 的值，则默认值为星期二、星期三或星期五的一小时随机时间段。
   + `--preferred-backup-window` 的有效值必须按以下格式之一指定：`HH:MM` (针对每日备份) 或 `DDD:HH:MM` (针对每周备份)。指定的时间采用 UTC 格式。默认值为随机每日开始时间。要退出自动备份，请改为添加参数 `--disable-automated-backup`。
   + 对于`--security-group-ids`，请输入一个或多个以空格分隔的安全组 IDs。
   + 对于 `--subnet-ids`，输入子网 ID。

   ```
   aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "server_name" --instance-profile-arn "instance_profile_ARN" --instance-type "instance_type" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"pivotal_key","CHEF_AUTOMATE_ADMIN_PASSWORD":"password"}' --key-pair "key_pair_name" --preferred-maintenance-window "ddd:hh:mm" --preferred-backup-window "ddd:hh:mm" --security-group-ids security_group_id1 security_group_id2 --service-role-arn "service_role_ARN" --subnet-ids subnet_ID
   ```

   示例如下：

   ```
   aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "automate-06" --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" --instance-type "m5.large" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' --key-pair "amazon-test" --preferred-maintenance-window "Mon:08:00" --preferred-backup-window "Sun:02:00" --security-group-ids sg-b00000001 sg-b0000008 --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" --subnet-ids subnet-300aaa00
   ```

   以下示例创建使用自定义域的 Chef Automate 服务器。

   ```
   aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \
       --server-name "my-custom-domain-server" \
       --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "m5.large" \
       --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \
       --custom-domain "my-chef-automate-server.my-corp.com" \
       --custom-certificate "-----BEGIN CERTIFICATE----- EXAMPLEqEXAMPLE== -----END CERTIFICATE-----" \
       --custom-private-key "-----BEGIN RSA PRIVATE KEY----- EXAMPLEqEXAMPLE= -----END RSA PRIVATE KEY-----" \
       --key-pair "amazon-test" \
       --preferred-maintenance-window "Mon:08:00" \
       --preferred-backup-window "Sun:02:00" \
       --security-group-ids sg-b00000001 sg-b0000008 \
       --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-300aaa00
   ```

   以下示例创建了添加两个标签的 Chef Automate 服务器：`Stage: Production` 和 `Department: Marketing`。有关在 AWS OpsWorks for Chef Automate 服务器上添加和管理标签的更多信息，请参阅本指南[使用 AWS OpsWorks for Chef Automate 资源上的标签](opscm-tags.md)中的。

   ```
   aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \
       --server-name "my-test-chef-server" \
       --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "m5.large" \
       --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \
       --key-pair "amazon-test" \
       --preferred-maintenance-window "Mon:08:00" \
       --preferred-backup-window "Sun:02:00" \
       --security-group-ids sg-b00000001 sg-b0000008 \
       --service-role-arn "arn:aws:iam::12345678912:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-300aaa00 \
       --tags [{\"Key\":\"Stage\",\"Value\":\"Production\"},{\"Key\":\"Department\",\"Value\":\"Marketing\"}]
   ```

1. AWS OpsWorks for Chef Automate 创建新服务器大约需要 15 分钟。请勿关闭 `create-server` 命令的输出或关闭您的 Shell 会话，因为该输出可能包含不再显示的重要信息。要从 `create-server` 结果中获取密码和初学者工具包，请继续执行下一步。

   如果要在服务器上使用自定义域，请在 `create-server` 命令的输出中复制 `Endpoint` 属性的值。示例如下：

   ```
   "Endpoint": "automate-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
   ```

1. 如果您选择为您 AWS OpsWorks for Chef Automate 生成密钥和密码，则可以使用 j [q](https://stedolan.github.io/jq/) 等 JSON 处理器从`create-server`结果中提取可用格式的密钥和密码。安装 [jq](https://stedolan.github.io/jq/) 后，您可以运行以下命令来提取关键密钥、Chef Automate 控制面板管理员密码和初学者工具包。如果您未在步骤 4 中提供自己的关键密钥和密码，请确保将提取的关键密钥和管理员密码保存在方便而安全的位置。

   ```
   #Get the Chef password:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_ADMIN_PASSWORD") | .Value'
   
   #Get the Chef Pivotal Key:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_PIVOTAL_KEY") | .Value'
   
   #Get the Chef Starter Kit:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_STARTER_KIT") | .Value' | base64 -D > starterkit.zip
   ```

1. 或者，如果您没有从`create-server`命令结果中提取入门套件，则可以在 AWS OpsWorks for Chef Automate 控制台中从服务器的 “属性” 页面下载新的入门套件。下载新的初学者工具包将重置 Chef Automate 控制面板管理员密码。

1. 如果您不使用自定义域，请继续下一步。如果您在服务器上使用自定义域，请在企业的 DNS 管理工具中创建 CNAME 条目，将您的自定义域指向您在步骤 7 中复制的 AWS OpsWorks for Chef Automate 终端节点。在完成此步骤之前，您无法访问或登录具有自定义域的服务器。

1. 服务器创建过程完成后，请转到[使用初学者工具包配置 Chef Server](opscm-starterkit.md)。