

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

# 更新 Puppe OpsWorks t Enterprise Server 以使用自定义域
<a name="opspup-update-server-custom-domain"></a>

**重要**  
该 AWS OpsWorks for Puppet Enterprise 服务于 2024 年 3 月 31 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

本节介绍如何使用服务器 OpsWorks 的备份创建新服务器，更新现有的 Puppet Enterprise 服务器以使用自定义域和证书。本质上，您是在复制现有 OpsWorks 的 Puppet Enterprise 2.0 服务器，方法是从备份中创建新服务器，然后将新服务器配置为使用自定义域、证书和私钥。

**Topics**
+ [先决条件](#opspup-update-server-custom-domain-reqs)
+ [限制](#opscm-update-server-custom-domain-limits)
+ [更新服务器以使用自定义域](#opscm-update-server-custom-domain-howto)
+ [另请参阅](#opscm-update-server-custom-domain-seealso)

## 先决条件
<a name="opspup-update-server-custom-domain-reqs"></a>

以下是更新现有 OpsWorks 的 Puppet Enterprise 服务器以使用自定义域和证书的要求。
+ 要更新（或复制）的服务器必须运行 Puppet Enterprise 2019.8.5。
+ 决定要用于创建新服务器的备份。您必须至少有一个要更新的服务器的备份可用。有关 Puppet Enterprise 中备份 OpsWorks 的更多信息，请参阅[为 Puppet Enterprise 服务器 OpsWorks 备份](opspup-backup.md)。
+ 准备好用于创建作为备份来源 ARNs 的现有服务器的服务角色和实例配置文件。
+ 请确保您正在运行最新版本的 AWS CLI。有关更新 AWS CLI 工具的更多信息，请参阅 *AWS 命令行界面用户指南 AWS CLI*中的[安装](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。

## 限制
<a name="opscm-update-server-custom-domain-limits"></a>

通过使用备份创建新服务器来更新现有服务器时，新服务器不能与 Puppet Enterprise 服务器 OpsWorks 的现有服务器完全相同。
+ 您只能使用 AWS CLI 或中的一个来完成此过程[AWS SDKs](https://docs.aws.amazon.com/#sdks)。无法通过使用 AWS 管理控制台从备份创建新的服务器。
+ 新服务器不能使用与账户内和 Amazon Web Services Region 内的现有服务器相同的名称。名称必须与用作备份源的现有服务器不同。
+ 连接到现有服务器的节点不由新服务器管理。您必须执行以下操作之一。
  + 附加不同的节点，因为节点不能由多个 Puppet 主服务器管理。
  + 将节点从现有服务器（备份源）迁移到新服务器和新的自定义域端点。有关如何迁移节点的更多信息，请参阅 [Puppet Enterprise 文档](https://puppet.com/docs/pe/2019.8/backing_up_and_restoring_pe.html)。

## 更新服务器以使用自定义域
<a name="opscm-update-server-custom-domain-howto"></a>

要更新现有的 Puppet 主服务器，您可以通过运行 `create-server` 命令、添加参数以指定备份、自定义域、自定义证书和自定义私有密钥来创建该服务器的副本。

1. 如果您的`create-server`命令中没有 ARNs 可供指定的服务角色或实例配置文件，请按照中的步骤 1-5 创建[使用 Chef Automate 服务器创建 AWS CLI](gettingstarted-opscm-create.md#gettingstarted-opscm-create-cli)可供使用的服务角色和实例配置文件。

1. 如果您尚未执行此操作，请查找现有 Puppet 主服务器的备份，将以此备份为基础创建使用自定义域的新服务器。运行以下命令以显示有关您的账户和区域中 Puppet Enterprise 备份的所有 OpsWorks 信息。确保记下要使用的备份的 ID。

   ```
   aws opsworks-cm --region region name describe-backups
   ```

1. 运行`create-server`命令 OpsWorks 为 Puppet Enterprise 服务器创建。
   + `--engine` 值为 `Puppet`，`--engine-model` 为 `Monolithic`，`--engine-version` 为 `2019` 或 `2017`。
   + 在您的 AWS 账户中，每个区域内的服务器名称必须是唯一的。服务器名称必须以字母开头；然后允许字母、数字或连字符 (-)，最多 40 个字符。
   + 使用您在步骤 3 和 4 中复制的实例配置文件 ARN 和服务角色 ARN。
   + 有效实例类型为 `c4.large`、`c4.xlarge` 或 `c4.2xlarge`。有关这些实例类型规格的更多信息，请参阅 *Amazon EC2 用户指南*中的[实例类型](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html)。
   + `--engine-attributes` 参数是可选的；如果您不指定 Puppet 管理员密码，则服务器创建过程会为您生成一个密码。如果您添加 `--engine-attributes`，请指定 `PUPPET_ADMIN_PASSWORD`，登录 Puppet Enterprise 控制台网页的管理员密码。该密码必须使用介于 8 和 32 个之间的 ASCII 字符。
   + SSH 密钥对是可选的，但可以帮助您连接到 Puppet Master (如果您需要重置控制台管理员密码)。有关创建 SSH 密钥对的更多信息，请参阅[亚马逊* EC2 用户指南中的亚马逊 EC2*密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html)。
   + 要使用自定义域，请将以下参数添加到命令中。否则，Puppet 主服务器创建过程会自动为您生成端点。配置自定义域需要所有三个参数。有关使用这些参数的其他要求的信息，请参阅 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 "Puppet" --engine-model "Monolithic" --engine-version "2019" --server-name "server_name" --instance-profile-arn "instance_profile_ARN" --instance-type "instance_type" --engine-attributes '{"PUPPET_ADMIN_PASSWORD":"ASCII_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
   ```

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

   ```
   aws opsworks-cm create-server \
       --engine "Puppet" \
       --engine-model "Monolithic" \
       --engine-version "2019" \
       --server-name "puppet-02" \
       --instance-profile-arn "arn:aws:iam::1019881987024:instance-profile/aws-opsworks-cm-ec2-role" \
       --instance-type "c4.large" \
       --engine-attributes '{"PUPPET_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \
       --custom-domain "my-puppet-master.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::044726508045:role/service-role/aws-opsworks-cm-service-role" \
       --subnet-ids subnet-383daa71
   ```

1. OpsWorks 对于 Puppet Enterprise，创建新服务器大约需要 15 分钟。在 `create-server` 命令的输出中，复制 `Endpoint` 属性的值。示例如下：

   ```
   "Endpoint": "puppet-2019-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
   ```

   请勿关闭 `create-server` 命令的输出或关闭您的 Shell 会话，因为该输出可能包含不再显示的重要信息。要从 `create-server` 结果中获取密码和初学者工具包，请继续执行下一步。

1. [如果你选择让 Puppet Enterprise 为你生成密码，你可以使用 jq 等 JSON 处理器从`create-server`结果中提取出一个可用的格式。 OpsWorks ](https://stedolan.github.io/jq/)安装 [jq](https://stedolan.github.io/jq/) 后，您可以运行以下命令来提取 Puppet 管理员密码和初学者工具包。如果您未在步骤 3 中提供自己的密码，请确保将提取的管理员密码保存在方便且安全的位置。

   ```
   #Get the Puppet password:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "PUPPET_ADMIN_PASSWORD") | .Value'
   
   #Get the Puppet Starter Kit:
   cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "PUPPET_STARTER_KIT") | .Value' | base64 -D > starterkit.zip
   ```
**注意**  
在 AWS 管理控制台中，您无法重新生成新的 Puppet Master 初学者工具包。使用创建 Puppet 大师时 AWS CLI，请运行前面的`jq`命令将`create-server`结果中的 base64 编码的入门套件保存为 ZIP 文件。

1. 或者，如果您没有从`create-server`命令结果中提取入门套件，则可以从 for Puppet Enterprise 控制台的服务器属性页面下载新的入门套件。 OpsWorks 

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

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

## 另请参阅
<a name="opscm-update-server-custom-domain-seealso"></a>
+ [使用创建 Puppet Enterprise Master AWS CLI](gettingstarted-opspup-create.md#gettingstarted-opspup-create-cli)
+ [备份和恢复 Puppe OpsWorks t Enterprise Server](opspup-backup-restore.md)
+ [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)在 OpsWorks CM API 参考中
+ 《AWS CLI Command Reference》**中的 [https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html](https://docs.aws.amazon.com/cli/latest/reference/opsworks-cm/create-server.html)。