

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

# OpsWorks 为 Puppet Enterprise 自动添加节点
<a name="opspup-unattend-assoc"></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 支持 团队联系。

本主题介绍如何将亚马逊弹性计算云 (Amazon EC2) 节点自动添加到 for Puppet Enterprise 服务器中。 OpsWorks 在[为 Puppet Master 添加要管理的节点](opspup-addnodes.md)中，您学会了如何使用 `associate-node` 命令，一次向您的 Puppet Enterprise 服务器中添加一个节点。本主题中的代码显示如何使用无人参与的方法自动添加节点。无人值守（或自动）关联新节点的推荐方法是配置 Amazon EC2 用户数据。默认情况下， OpsWorks 适用于 Puppet Enterprise 的服务器已经[https://puppet.com/docs/pe/2019.8/installing_agents.html](https://puppet.com/docs/pe/2019.8/installing_agents.html)可用于 Ubuntu、Amazon Linux 和 RHEL 节点操作系统。

有关如何取消关联节点的信息，请参阅[取消节点与 for Puppet OpsWorks 企业服务器的关联](opspup-disassociate-node.md)本指南和 [https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html](https://docs.aws.amazon.com/opsworks-cm/latest/APIReference/API_DisassociateNode.html)for Puppet Enterprise API 文档。 OpsWorks 

## 第 1 步：创建一个 IAM 角色，以用作您的实例配置文件
<a name="opspup-create-instance-profile"></a>

创建一个 AWS Identity and Access Management (IAM) 角色用作您的 EC2 实例配置文件，并将以下策略附加到该 IAM 角色。此策略允许 `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)。

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

****  

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

------

## 第 2 步：使用自动化关联脚本创建实例
<a name="opspup-unattend-script"></a>

要创建 EC2 实例，您可以将[入门套件](opspup-starterkit.md)中包含的用户数据脚本复制到 EC2实例说明`userdata`部分、Amazon A EC2 uto Scaling 群组启动配置或 CloudFormation 模板中。只有运行 Ubuntu 和 Amazon Linux 操作系统的 EC2 实例才支持该脚本。有关向用户数据添加脚本的更多信息，请参阅 Amazon EC2 文档中的[启动时在 Linux 实例上运行命令](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)。创建新节点的最简单方法是使用 [Amazon EC2 实例启动向导](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)。此演练使用 [Puppet Enterp OpsWorks rise 入门](gettingstarted-opspup.md) 中所述的 Apache web 服务器示例模块设置。

1. 初学者工具包中的用户数据脚本运行 `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) 命令，将一个新的节点与您的 Puppet Master 相关联。在此版本中，它还会为您在节点 AWS CLI 上安装当前版本的，以防它尚未运行大多数 up-to-date版本。将此脚本以名称 `userdata.sh` 保存到方便的位置。

   默认情况下，新注册节点的名称是实例 ID。

1. 按照 EC2 文档中[启动实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)中的步骤进行操作，并在此处进行修改。在 EC2 实例启动向导中，选择亚马逊 Linux AMI。

1. 在 **Configure Instance Details** 页面上，选择 **myPuppetinstanceprofile**，将您在 [第 1 步：创建一个 IAM 角色，以用作您的实例配置文件](#opspup-create-instance-profile)中创建的角色作为 IAM 角色。

1. 在 **Advanced Details** 区域中，上传您在步骤 1 中创建的 `userdata.sh` 脚本。

1. 无需在 **Add Storage** 页面上进行更改。转到 **Add Tags**。

   通过将标签应用于您的 EC2 实例，您可以自定义的行为`userdata.sh`。对于此示例，通过添加值为 **apache\$1webserver** 的标签 **pp\$1role**，将角色 `apache_webserver` 应用到您的节点。

   在节点上设置 `pp_role` 值将设置永久存储在节点的代理证书中的数据值，为节点启用可信分类。有关更多信息，请参阅 Puppet 平台文档中的[扩展请求 (永久证书数据)](https://puppet.com/docs/puppet/5.1/ssl_attributes_extensions.html#extension-requests-permanent-certificate-data))。

1. 在**配置安全组**页上，选择**添加规则**，然后选择类型 **HTTP**，在此例中为 Apache Web 服务器打开端口 8080。

1. 选择 **Review and Launch**，然后选择 **Launch**。新节点启动时，它会应用您在 [设置初学者工具包 Apache 示例](opspup-starterkit.md#opspup-post-launch-web-server) 中设置的示例模块的 Apache 配置。

1. 当您打开链接到新节点的公有 DNS 的网页时，您应看到网站托管在由 Puppet 管理的 Apache Web 服务器上。