创建 Puppet Enterprise Master - AWS OpsWorks

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

创建 Puppet Enterprise Master

重要

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

你可以使用 for Puppet Enterprise 控制台创建 Puppet 大师,或者。 OpsWorks AWS CLI

使用创建 Puppet Enterprise Master AWS Management Console

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

  2. 在 AWS OpsWorks 主页上,选择 Puppet Enterprise OpsWorks 的 “前往”。

    AWS OpsWorks 服务主页
  3. 在 Puppe OpsWorks t Enterprise 的主页上,选择创建 Puppet Enter prise 服务器

    Puppet Master 控制面板
  4. Set name, region, and type (设置名称、区域和类型) 页面上,指定服务器的名称。Puppet Master 名称最多可包含 40 个字符,必须以字母开头,并且只能包含字母数字字符和短划线。选择支持的区域,然后选择支持所要管理节点数量的实例类型。如果需要,您可以在服务器创建之后更改实例类型。对于本演练,我们在美国西部(俄勒冈州)区域中创建一个 m5.xlarge 实例类型。选择下一步

    设置名称、区域和类型页面
  5. Configure server 页面上,除非您要指定密钥对名称,否则保留 SSH key 下拉列表中的默认选择。在 Configure Puppet Code Manager 区域的 r10k remote 字段中,指定 Git remote 的有效 SSH 或 HTTPS URL。在 r10k 私钥字段中,粘贴 AWS OpsWorks 可用于访问 r10k 远程存储库的 SSH 私钥。此密钥是 Git 在您创建私有存储库时提供的,但如果您使用 HTTPS 身份验证来访问控制存储库,则不需要它。选择下一步

    “Configure server (配置服务器)”页
  6. 对于 Specify server endpoint (指定服务器终端节点),保留默认值 Use an automatically-generated endpoint (使用自动生成的终端节点),然后选择 Next (下一步),除非您希望您的服务器位于您自己的自定义域中。要配置自定义域,请继续执行下一步。

  7. 要使用自定义域,对于 Specify server endpoint (指定服务器终端节点),从下拉列表中选择 Use a custom domain (使用自定义域)

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

    2. 对于 SSL 证书,请粘贴整个 PEM 格式的证书,以 –––--BEGIN CERTIFICATE----- 开头并以 –––--END CERTIFICATE----- 结尾。SSL 证书主题必须与您在上一步中输入的 FQDN 相匹配。删除证书之前和之后的任何多余行。

    3. 对于 SSL private key (SSL 私有密钥),请粘贴整个 RSA 私有密钥,以 –––--BEGIN RSA PRIVATE KEY----- 开头并以 –––--END RSA PRIVATE KEY----- 结尾。SSL 私有密钥必须与您在上一步中输入的 SSL 证书中的公有密钥匹配。删除私钥之前和之后的任何多余行。选择下一步

  8. 配置高级设置页面的网络和安全区域中,选择一个 VPC、子网以及一个或多个安全组。 AWS OpsWorks 如果您还没有要使用的安全组、服务角色和实例配置文件,则可以为您生成安全组、服务角色和实例配置文件。您的服务器可属于多个安全组。在离开此页后,您无法更改 Puppet Master 的网络和安全设置。

    网络和安全性
  9. System maintenance (系统维护) 部分中,设置您希望系统维护开始的日期和时间。由于您可以预见到服务器会在系统维护期间脱机,因此请选择正常工作时间中对服务器需求较低的时间。

    维护时段是必需的。您可以稍后使用 AWS Management Console AWS CLI、或 API 更改开始日期和时间。

    系统维护
  10. 配置备份。默认情况下会启用自动备份。设置自动备份启动的首选频率和时间,并设置在 Amazon Simple Storage Service 中存储的备份生成数。最多可以保留 30 个备份;当达到最大值时, OpsWorks Puppet Enterprise 会删除最旧的备份,以便为新备份腾出空间。

    自动备份
  11. (可选)在 Tags (标签) 中,向服务器和相关资源(如 EC2 实例、弹性 IP 地址、安全组、S3 存储桶和备份)添加标签。有关为 Puppet Enterprise 服务器添加标签 OpsWorks 的更多信息,请参阅。使用 AWS OpsWorks for Puppet Enterprise 资源上的标签

  12. 在您配置完高级设置后,选择 Next (下一步)

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

    在等待 AWS OpsWorks 创建 Puppet 大师时,请继续下载入门套件使用初学者工具包配置 Puppet Master和 Puppet Enterprise 主机凭证。请不要一直等到您的服务器联机再下载这些项。

    服务器创建完成后,您的 Puppet 大师将在 Puppet Enterprise 的主页上可用,状态 OpsWorks 为在线。服务器联机之后,Puppet Enterprise 控制台在服务器的域上可用,位于以下格式的 URL 上:https://your_server_name-randomID.region.opsworks-cm.io

使用创建 Puppet Enterprise Master AWS CLI

重要

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

通过运行 AWS CLI 命令 OpsWorks 为 Puppet Enterprise 创建主服务器不同于在控制台中创建服务器。如果您未指定要使用的现有服务角色和安全组,则可以在控制台中为您 AWS OpsWorks 创建服务角色和安全组。在中 AWS CLI,如果您未指定安全组,则 AWS OpsWorks 可以为您创建安全组,但它不会自动创建服务角色;您必须在命令中提供服务角色 ARN。create-server在主机中创建 Pupp AWS OpsWorks et 大师时,你可以下载 Puppet Enterprise 主机的入门套件和登录凭证。由于在使用创建 Puppet Enterprise 主服务器时无法执行此操作 AWS CLI,因此在新 OpsWorks 的 Puppet Enterprise 主服务器上线后,您可以使用 JSON 处理实用程序从create-server命令结果中获取登录凭证和入门套件。 OpsWorks

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

  1. 确保完成先决条件 。要创建 Puppet Master,您需要子网 ID,因此您必须有一个 VPC。

  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
  3. 创建 AWS CloudFormation 完堆栈后,在您的账户中查找并复制服务角色的 ARN。

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

    list-roles 命令的结果中,查找类似于以下内容的服务角色 ARN 条目。记下服务角色 ARN。您需要使用这些值来创建 Puppet Enterprise 主服务器。

    { "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" }
  4. 查找并复制您的账户中的实例配置文件的 ARN。

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

    list-instance-profiles 命令的结果中,查找类似于以下内容的实例配置文件 ARN 条目。记录实例配置文件 ARN。您需要使用这些值来创建 Puppet Enterprise 主服务器。

    { "Path": "/", "InstanceProfileName": "aws-opsworks-cm-ec2-role", "InstanceProfileId": "EXAMPLEDC6UR3LTUW7VHK", "Arn": "arn:aws:iam::123456789012:instance-profile/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "Roles": [ { "Path": "/service-role/", "RoleName": "aws-opsworks-cm-ec2-role", "RoleId": "EXAMPLEE4STNUQG6R22HC", "Arn": "arn:aws:iam::123456789012:role/service-role/aws-opsworks-cm-ec2-role", "CreateDate": "2017-01-05T20:42:20Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } ] },
  5. 运行create-server命令 OpsWorks 为 Puppet Enterprise 主服务器创建。

    • --engine 值是Puppet--engine-modelMonolithic--engine-version可以是20192017

    • 在您的 AWS 账户中,每个区域内的服务器名称必须是唯一的。服务器名称必须以字母开头;然后允许字母、数字或连字符 (-),最多 40 个字符。

    • 使用您在步骤 3 和 4 中复制的实例配置文件 ARN 和服务角色 ARN。

    • 有效实例类型为 m5.xlargec5.2xlargec5.4xlarge。有关这些实例类型的规范的更多信息,请参阅 Amazon EC2 用户指南中的实例类型

    • --engine-attributes 参数是可选的;如果您不指定 Puppet 管理员密码,则服务器创建过程会为您生成一个密码。如果您添加 --engine-attributes,请指定 PUPPET_ADMIN_PASSWORD,登录 Puppet Enterprise 控制台网页的管理员密码。该密码必须使用介于 8 和 32 个之间的 ASCII 字符。

    • SSH 密钥对是可选的,但可以帮助您连接到 Puppet Master (如果您需要重置控制台管理员密码)。有关创建 SSH 密钥对的更多信息,请参阅《Amazon EC2 用户指南》中的 Amazon EC2 密钥对

    • 要使用自定义域,请将以下参数添加到命令中。否则,Puppet 主服务器创建过程会自动为您生成端点。配置自定义域需要所有三个参数。有关使用这些参数的其他要求的信息,请参阅 AWS OpsWorks CM API 参考CreateServer中的。

      • --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,输入一个或多个安全组 ID,用空格分隔。

    • 对于 --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

    示例如下:

    aws opsworks-cm create-server --engine "Puppet" --engine-model "Monolithic" --engine-version "2019" --server-name "puppet-02" --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" --instance-type "m5.xlarge" --engine-attributes '{"PUPPET_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::111122223333:role/service-role/aws-opsworks-cm-service-role" --subnet-ids subnet-383daa71

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

    aws opsworks-cm create-server \ --engine "Puppet" \ --engine-model "Monolithic" \ --engine-version "2019" \ --server-name "puppet-02" \ --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.xlarge" \ --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::111122223333:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-383daa71

    以下示例创建了添加两个标签的 Puppet 主服务器:Stage: ProductionDepartment: Marketing。有关在 Puppet Enterprise 服务器上 OpsWorks 添加和管理标签的更多信息,请参阅本指南使用 AWS OpsWorks for Puppet Enterprise 资源上的标签中的。

    aws opsworks-cm create-server \ --engine "Puppet" \ --engine-model "Monolithic" \ --engine-version "2019" \ --server-name "puppet-02" \ --instance-profile-arn "arn:aws:iam::111122223333:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.xlarge" \ --engine-attributes '{"PUPPET_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::111122223333:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-383daa71 \ --tags [{\"Key\":\"Stage\",\"Value\":\"Production\"},{\"Key\":\"Department\",\"Value\":\"Marketing\"}]
  6. OpsWorks 对于 Puppet Enterprise,创建新服务器大约需要 15 分钟。请勿关闭 create-server 命令的输出或关闭您的 Shell 会话,因为该输出可能包含不再显示的重要信息。要从 create-server 结果中获取密码和初学者工具包,请继续执行下一步。

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

    "Endpoint": "puppet-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
  7. 如果你选择让 Puppet Enterprise 为你生成密码,你可以使用 jq 等 JSON 处理器从create-server结果中提取出可用的格式。 OpsWorks 安装 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 Management Console中,您无法重新生成新的 Puppet Master 初学者工具包。使用创建 Puppet 大师时 AWS CLI,请运行前面的jq命令将create-server结果中的 base64 编码的入门套件保存为 ZIP 文件。

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

  9. 继续执行下一部分,使用初学者工具包配置 Puppet Master