使用创建 AWS OpsWorks for Puppet Enterprise 大师 AWS CloudFormation - AWS OpsWorks

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

使用创建 AWS OpsWorks for Puppet Enterprise 大师 AWS CloudFormation

重要

该 AWS OpsWorks for Puppet Enterprise 服务于 2024 年 3 月 31 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

AWS OpsWorks for Puppet Enterprise 允许你在中运行 Pu ppet Enterpris e 服务器。 AWS您可以在大约 15 分钟内预配置一个 Puppet Enterprise Master 服务器。

从 2021 年 5 月 3 日起,Puppet Enterprise 将在其中存储一些 Puppet Enterprise OpsWorks AWS Secrets Manager有关更多信息,请参阅 与 AWS Secrets Manager 集成

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

先决条件

在创建新的 Puppet 大师之前,请在外部 OpsWorks 为 Puppet Enterprise 创建访问和管理人偶大师所需的资源。有关更多信息,请参阅本指南的“入门”部分的先决条件

如果要创建使用自定义域的服务器,则需要自定义域、证书和私有密钥。您必须在 AWS CloudFormation 模板中为所有这三个参数指定值。有关、和CustomPrivateKey参数要求的更多信息 CustomDomainCustomCertificate,请参阅 AWS OpsWorks CM API 参考CreateServer中的。

查看《AWS CloudFormation 用户指南模板参考》的 “OpsWorks-CM” 部分,了解用于创建服务器的 AWS CloudFormation 模板中支持的值和必填值。

在 AWS CloudFormation中创建 Puppet Enterprise Master

本节介绍如何使用 AWS CloudFormation 模板构建堆栈,从而为 Puppet Enterprise 主服务器创建一个 OpsWorks 。您可以使用 AWS CloudFormation 控制台或 AWS CLI. 您可以使用示例 AWS CloudFormation 模板来构建 Puppet Enterpr OpsWorks ise 服务器堆栈。请务必使用您自己的服务器名称、IAM 角色、实例配置文件、服务器描述、备份保留计数、维护选项和可选标签来更新示例模板。如果您的服务器将使用自定义域,则必须在 AWS CloudFormation 模板中为 CustomDomainCustomCertificateCustomPrivateKey 参数指定值。有关这些选项的更多信息,请参阅本指南的“入门”部分的使用创建 Puppet Enterprise Master AWS Management Console

使用 AWS CloudFormation (控制台)创建 Puppet Enterprise Master

  1. 登录 AWS Management Console 并打开 AWS CloudFormation 控制台,网址为 https://console.aws.amazon.com/cloudformation

  2. 在 AWS CloudFormation 主页上,选择创建堆栈

  3. Prerequisite - Prepare template (先决条件 – 准备模板) 中,如果您使用的是示例 AWS CloudFormation 模板,请选择 Template is ready (模板已准备就绪)

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

    AWS CloudFormation 模板可以采用 YAML 或 JSON 格式。有一个示例 AWS CloudFormation 模板可供您使用;请务必用自己的示例值替换示例值。您可以使用 AWS CloudFormation 模板设计器来构建新模板或验证现有模板。有关如何执行此操作的更多信息,请参阅《AWS CloudFormation 用户指南》中的AWS CloudFormation Designer 界面概述

    CloudFormation “创建堆栈” 页面
  5. 指定详细信息 页面上,输入您的堆栈的名称。这将不会与您的服务器的名称相同,它仅仅是一个堆栈名称。在参数区域中,输入用于登录 Puppet Enterprise 控制台网页的管理员密码。该密码必须使用介于 8 和 32 个之间的 ASCII 字符。选择下一步

    在 “指定详细信息” 页面 CloudFormation
  6. 选项页面上,您可以向您使用堆栈创建的服务器添加标签,如果您尚未在您的模板中指定要使用的 IAM 角色,还可以选择用于创建资源的 IAM 角色。在指定选项之后,选择 Next (下一步)。有关高级选项(例如回滚触发器)的更多信息,请参阅《AWS CloudFormation 用户指南》中的设置 AWS CloudFormation 堆栈选项

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

    在等待创建堆栈时, AWS CloudFormation 请查看堆栈创建状态。如果堆栈创建失败,请查看控制台中显示的错误消息,以帮助您解决问题。有关对 AWS CloudFormation 堆栈中的错误进行故障排除的更多信息,请参阅《AWS CloudFormation 用户指南》中的排查错误

    服务器创建完成后,您的 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

使用 AWS CloudFormation (CLI) 创建 Puppet Enterprise Master

如果您的本地计算机尚未运行 AWS CLI,请 AWS CLI 按照 AWS 命令行界面用户指南中的安装说明下载并安装。本部分未介绍可以与 create-stack 命令结合使用的所有参数。有关 create-stack 参数的更多信息,请参阅 create-stack 参考 中的 AWS CLI

  1. 请务必完成为 Puppe OpsWorks t Enterprise 大师创建。先决条件

  2. 创建服务角色和实例配置文件。 AWS OpsWorks 提供了一个可用于创建两者的 AWS CloudFormation 模板。运行以下 AWS CLI 命令创建一个 AWS CloudFormation 堆栈,用于为您创建服务角色和实例配置文件。

    aws cloudformation create-stack --stack-name OpsWorksCMRoles --template-url https://s3.amazonaws.com/opsworks-cm-us-east-1-prod-default-assets/misc/opsworks-cm-roles.yaml --capabilities CAPABILITY_NAMED_IAM

    创建 AWS CloudFormation 完堆栈后,在您的账户中查找并复制服务角色的 ARN。

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

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

    { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZQG6R22HC", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-ec2-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-ec2-role" }, { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": "opsworks-cm.amazonaws.com" } } ] }, "RoleId": "AROZZZZZZZZZZZZZZZ6QE", "CreateDate": "2018-01-05T20:42:20Z", "RoleName": "aws-opsworks-cm-service-role", "Path": "/service-role/", "Arn": "arn:aws:iam::000000000000:role/service-role/aws-opsworks-cm-service-role" }
  3. 再次运行该create-stack命令 OpsWorks 为 Puppet Enterprise Master 创建。

    • stack_name 替换为您的堆栈的名称。这是 AWS CloudFormation 堆栈的名称,不是你的 Puppet 大师。Puppet master 名称是 AWS CloudFormation 模板中 ServerName 的值。

    • template 替换为您的模板文件的路径,并将扩展名 yaml 或 json 相应地替换为 .yaml.json

    • 的值对--parameters应于 CreateServerAPI EngineAttributes中的值。对于 Puppet,以下是用户提供的用于创建服务器的引擎属性。r10k 引擎属性将你的 Puppet 主服务器连接到代码存储库以管理服务器的环境配置。有关 r10k 引擎属性的更多信息,请参阅 Puppet Enterprise 文档中的使用 r10k 来管理代码

      • 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_R10K_PRIVATE_KEY 以指定一个 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 引擎属性指定为参数,而模板中未提供这些属性。 AWS CloudFormation 一个包含 r10k 引擎属性的示例模板-puppet-server-param-attributes.yaml,包含在示例 AWS CloudFormation 模板中。

    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)"

    以下示例在 AWS CloudFormation 模板中指定 r10k 引擎属性及其值;该命令只需指向模板文件即可。指定为 --template-body 的值的模板-puppet-server-in-file-attributes.yaml,包含在示例 AWS CloudFormation 模板中。

    aws cloudformation create-stack --stack-name MyPuppetStack --template-body file://puppet-server-in-file-attributes.yaml
  4. (可选)要获取堆栈创建状态,请运行以下命令。

    aws cloudformation describe-stacks --stack-name stack_name
  5. 堆栈创建完成后,请继续执行下一节-使用初学者工具包配置 Puppet Master。如果堆栈创建失败,请查看控制台中显示的错误消息,以帮助您解决问题。有关对 AWS CloudFormation 堆栈中的错误进行故障排除的更多信息,请参阅《AWS CloudFormation 用户指南》中的故障排除