

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

# 使用创建 AWS OpsWorks for Puppet Enterprise 大师 CloudFormation
<a name="opspup-create-server-cfn"></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 支持 团队联系。

AWS OpsWorks for Puppet Enterprise 允许你在中运行 Pu [ppet Enterpris](https://puppet.com/products/puppet-enterprise) e 服务器。 AWS您可以在大约 15 分钟内预配置一个 Puppet Enterprise Master 服务器。

从 2021 年 5 月 3 日起，Puppet Enterprise 将在其中存储一些 Puppet Enterprise OpsWorks AWS Secrets Manager有关更多信息，请参阅 [与集成 AWS Secrets Manager](data-protection.md#data-protection-secrets-manager)。

以下演练通过在中创建堆栈来帮助你在 Puppet Enterprise 中 OpsWorks 创建 Puppet 大师。 CloudFormation

**Topics**
+ [先决条件](#opspup-create-server-cfn-prereqs)
+ [在 CloudFormation中创建 Puppet Enterprise Master](#opspup-create-server-cfn-main)

## 先决条件
<a name="opspup-create-server-cfn-prereqs"></a>

在创建新的 Puppet 大师之前，请在外部 OpsWorks 为 Puppet Enterprise 创建访问和管理人偶大师所需的资源。有关更多信息，请参阅本指南的“入门”部分的[先决条件](gettingstarted-opspup.md#gettingstarted-opspup-prereqs)。

如果要创建使用自定义域的服务器，则需要自定义域、证书和私有密钥。您必须在 CloudFormation 模板中为所有这三个参数指定值。有关、和`CustomPrivateKey`参数要求的更多信息 `CustomDomain``CustomCertificate`，请参阅 *OpsWorks CM API 参考[CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)*中的。

查看《*CloudFormation 用户指南*模板参考》的 “[OpsWorks-CM” 部分](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html)，了解用于创建服务器的 CloudFormation 模板中支持的值和必填值。

## 在 CloudFormation中创建 Puppet Enterprise Master
<a name="opspup-create-server-cfn-main"></a>

本节介绍如何使用 CloudFormation 模板构建堆栈，从而为 Puppet Enterprise 主服务器创建一个 OpsWorks 。您可以使用 CloudFormation 控制台或 AWS CLI. 您可以使用[示例 CloudFormation 模板](samples/opsworkscm-puppet-server.zip)来构建 Puppet Enterpr OpsWorks ise 服务器堆栈。请务必使用您自己的服务器名称、IAM 角色、实例配置文件、服务器描述、备份保留计数、维护选项和可选标签来更新示例模板。如果您的服务器将使用自定义域，则必须在 CloudFormation 模板中为 `CustomDomain`、`CustomCertificate` 和 `CustomPrivateKey` 参数指定值。有关这些选项的更多信息，请参阅本指南的“入门”部分的[使用创建 Puppet Enterprise Master AWS 管理控制台](gettingstarted-opspup-create.md#gettingstarted-opspup-create-console)。

**Topics**
+ [使用 CloudFormation （控制台）创建 Puppet Enterprise Master](#opspup-create-server-cfn-console)
+ [使用 CloudFormation (CLI) 创建 Puppet Enterprise Master](#opspup-create-server-cfn-cli)

### 使用 CloudFormation （控制台）创建 Puppet Enterprise Master
<a name="opspup-create-server-cfn-console"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。

1. 在 CloudFormation 主页上，选择**创建堆栈**。

1. 在 **Prerequisite - Prepare template (先决条件 – 准备模板)** 中，如果您使用的是[示例 CloudFormation 模板](samples/opsworkscm-puppet-server.zip)，请选择 **Template is ready (模板已准备就绪)**。

1. 在 **Specify template (指定模板)** 中，选择模板的源。在本演练中，选择**上传模板文件，然后上传**用于创建 Puppet Enterprise 服务器的 CloudFormation 模板。浏览查找您的模板文件，然后选择 **Next (下一步)**。

    CloudFormation 模板可以采用 YAML 或 JSON 格式。有一个[示例 CloudFormation 模板](samples/opsworkscm-puppet-server.zip)可供您使用；请务必用自己的示例值替换示例值。您可以使用 CloudFormation 模板设计器来构建新模板或验证现有模板。有关如何执行此操作的更多信息，请参阅《*CloudFormation 用户指南》*中的[CloudFormation Designer 界面概述](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-overview.html)。  
![\[CloudFormation “创建堆栈” 页面\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cfn_select_template.png)

1. 在 **指定详细信息** 页面上，输入您的堆栈的名称。这将不会与您的服务器的名称相同，它仅仅是一个堆栈名称。在**参数**区域中，输入用于登录 Puppet Enterprise 控制台网页的管理员密码。该密码必须使用介于 8 和 32 个之间的 ASCII 字符。选择**下一步**。  
![\[在 “指定详细信息” 页面 CloudFormation\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/cfn_template_params.png)

1. 在**选项**页面上，您可以向您使用堆栈创建的服务器添加标签，如果您尚未在您的模板中指定要使用的 IAM 角色，还可以选择用于创建资源的 IAM 角色。在指定选项之后，选择 **Next (下一步)**。有关高级选项（例如回滚触发器）的更多信息，请参阅*《CloudFormation 用户指南*》中的[设置 CloudFormation 堆栈选项](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-add-tags.html)。

1. 在**审核**页面上，审核您的选择。在准备好创建服务器堆栈时，选择**创建堆栈**。

   在等待创建堆栈时， CloudFormation 请查看堆栈创建状态。如果堆栈创建失败，请查看控制台中显示的错误消息，以帮助您解决问题。有关对 CloudFormation 堆栈中的错误进行故障排除的更多信息，请参阅《*CloudFormation 用户指南*》中的[排查错误](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors)。

   **服务器创建完成后，您的 Puppet 大师将在 Puppet Enterprise 的主页上可用，状态 OpsWorks 为在线。**服务器联机之后，Puppet Enterprise 控制台在服务器的域上可用，位于以下格式的 URL 上：`https://your_server_name-randomID.region.opsworks-cm.io`。
**注意**  
如果您为服务器指定了自定义域、证书和私钥，请在企业的 DNS 管理工具中创建一个 CNAME 条目，该条目将您的自定义域映射到 Puppet Enterprise OpsWorks 为服务器自动生成的终端节点。在将生成的端点映射到自定义域值之前，无法管理服务器或连接到服务器的 Puppet Enterprise 管理网站。  
要获取生成的端点值，请在服务器联机后运行以下 AWS CLI 命令：  

   ```
   aws opsworks describe-servers --server-name server_name
   ```

### 使用 CloudFormation (CLI) 创建 Puppet Enterprise Master
<a name="opspup-create-server-cfn-cli"></a>

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

1. 请务必完成为 Puppe OpsWorks t Enterprise 大师创建。[先决条件](gettingstarted-opspup.md#gettingstarted-opspup-prereqs)

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

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

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

   在 `list-roles` 命令的结果中，查找类似于以下内容的服务角色和实例配置文件条目。记下 ARNs服务角色和实例配置文件，然后将其添加到用于创建 Puppet 主服务器堆栈的 CloudFormation 模板中。

1. 再次运行该**create-stack**命令 OpsWorks 为 Puppet Enterprise Master 创建。
   + *stack\$1name*替换为堆栈的名称。这是 CloudFormation 堆栈的名称，不是你的 Puppet 大师。Puppet master 名称是 CloudFormation 模板中 `ServerName` 的值。
   + *template*替换为模板文件的路径，并根据需要将扩展名*yaml or json*替换`.json`为`.yaml`或。
   + 的值对`--parameters`应于 [CreateServer](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_CreateServer.html)API [EngineAttributes](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworkscm-server.html#cfn-opsworkscm-server-engineattributes)中的值。对于 Puppet，以下是用户提供的用于创建服务器的引擎属性。r10k 引擎属性将你的 Puppet 主服务器连接到代码存储库以管理服务器的环境配置。有关 r10k 引擎属性的更多信息，请参阅 Puppet Enterprise 文档中的[使用 r10k 来管理代码](https://puppet.com/docs/pe/2019.8/r10k.html)。
     + `PUPPET_ADMIN_PASSWORD`，登录 Puppet Enterprise 控制台网页的管理员密码。密码必须使用 8 到 32 个 ASCII 字符，至少需要一个大写字母、一个小写字母、一个数字和一个特殊字符。
     + `PUPPET_R10K_REMOTE`，您控件存储库的 URL（例如 ssh://git@your.git-repo.com:user/control-repo.git）。指定 r10k remote 可打开 TCP 端口 8170。
     + `PUPPET_R10K_PRIVATE_KEY`。如果您使用的是私有 Git 存储库，请添加 PUPPET\$1R10K\$1PRIVATE\$1KEY 以指定一个 SSH URL 和一个 PEM 编码的私有 SSH 密钥。

   ```
   aws cloudformation create-stack --stack-name stack_name --template-body file://template.yaml or json --parameters ParameterKey=AdminPassword,ParameterValue="password"
   ```

   示例如下：

   ```
   aws cloudformation create-stack --stack-name "OpsWorksCMPuppetServerStack" --template-body file://opsworkscm-puppet-server.json --parameters ParameterKey=AdminPassword,ParameterValue="09876543210Ab#"
   ```

   以下示例将 r10k 引擎属性指定为参数，而模板中未提供这些属性。 CloudFormation 一个包含 r10k 引擎属性的示例模板-`puppet-server-param-attributes.yaml`，包含在[示例 CloudFormation 模板](samples/opsworkscm-puppet-server.zip)中。

   ```
   aws cloudformation create-stack --stack-name MyPuppetStack --template-body file://puppet-server-param-attributes.yaml --parameters ParameterKey=AdminPassword,ParameterValue="superSecret1%3" ParameterKey=R10KRemote,ParameterValue="https://www.yourRemote.com" ParameterKey=R10KKey,ParameterValue="$(cat puppet-r10k.pem)"
   ```

   以下示例在 CloudFormation 模板中指定 r10k 引擎属性及其值；该命令只需指向模板文件即可。指定为 `--template-body` 的值的模板-`puppet-server-in-file-attributes.yaml`，包含在[示例 CloudFormation 模板](samples/opsworkscm-puppet-server.zip)中。

   ```
   aws cloudformation create-stack --stack-name MyPuppetStack --template-body file://puppet-server-in-file-attributes.yaml
   ```

1. （可选）要获取堆栈创建状态，请运行以下命令。

   ```
   aws cloudformation describe-stacks --stack-name stack_name 
   ```

1. 堆栈创建完成后，请继续执行下一节-[使用初学者工具包配置 Puppet Master](opspup-starterkit.md)。如果堆栈创建失败，请查看控制台中显示的错误消息，以帮助您解决问题。有关对 CloudFormation 堆栈中的错误进行故障排除的更多信息，请参阅《*CloudFormation 用户指南*》中的[故障排除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors)。