创建 Puppet Enterprise Master - AWS OpsWorks

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

创建 Puppet Enterprise Master

重要

AWS OpsWorks for Puppet Enterprise不再接受新客户。现有客户在 2024 年 3 月 31 日之前不会受到影响,届时该服务将不可用。我们建议现有客户尽快迁移到其他解决方案。有关更多信息,请参阅 AWS OpsWorks for Puppet Enterprise 生命周期终止常见问题解答如何将 OpsWorks for Puppet Enterprise 服务器迁移到 Amazon Elastic Cloud (Amazon EC2)

您可以使用 OpsWorks for Puppet Enterprise 控制台或 AWS CLI 创建 Puppet Master。

使用 AWS Management Console创建 Puppet Enterprise Master

  1. 登录到 AWS Management Console,然后通过以下网址打开 AWS OpsWorks 控制台:https://console.aws.amazon.com/opsworks/

  2. 在 AWS OpsWorks 主页上,选择 Go to OpsWorks for Puppet Enterprise (转到 OpsWorks for Puppet Enterprise)

    
                     AWS OpsWorks 服务主页
  3. 在 OpsWorks for Puppet Enterprise 主页上,选择 Create Puppet Enterprise server

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

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

    
                     “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 证书中的公有密钥匹配。删除私钥之前和之后的任何多余行。选择 Next(下一步)。

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

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

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

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

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

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

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

    在您等待 AWS OpsWorks 为您创建 Puppet Master 时,请转到使用初学者工具包配置 Puppet Master 并下载初学者工具包和 Puppet Enterprise 控制台凭证。请不要一直等到您的服务器联机再下载这些项。

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

使用 AWS CLI创建 Puppet Enterprise Master

重要

AWS OpsWorks for Puppet Enterprise不再接受新客户。现有客户在 2024 年 3 月 31 日之前不会受到影响,届时该服务将不可用。我们建议现有客户尽快迁移到其他解决方案。有关更多信息,请参阅 AWS OpsWorks for Puppet Enterprise 生命周期终止常见问题解答如何将 OpsWorks for Puppet Enterprise 服务器迁移到 Amazon Elastic Cloud (Amazon EC2)

通过运行 AWS CLI 命令创建 OpsWorks for Puppet Enterprise master 服务器不同于在控制台中创建服务器。在控制台中,如果您不指定要使用的现有服务角色和安全组,AWS OpsWorks 将为您创建服务角色和安全组。在 AWS CLI 中,如果您不指定安全组,AWS OpsWorks 可以为您创建安全组,但它不会自动创建服务角色;您必须在 create-server 命令中提供服务角色 ARN。在控制台中,当 AWS OpsWorks 创建 Puppet Master 时,您可以下载适用于 Puppet Enterprise 控制台的初学者工具包和登录凭证。由于您无法在使用 AWS CLI 创建 OpsWorks for Puppet Enterprise master 时执行此操作,您可以在新 OpsWorks for Puppet Enterprise master 联机之后,使用 JSON 处理实用程序从 create-server 命令的结果中获取登录凭证和初学者工具包。

如果您的本地计算机尚未运行 AWS CLI,请按照《AWS 命令行界面用户指南》中的安装说明下载并安装 AWS CLI。本部分未介绍可以与 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 for Puppet Enterprise Master。

    • --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。有关在 OpsWorks for Puppet Enterprise 服务器上添加和管理标签的更多信息,请参阅本指南中的 在 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 for Puppet Enterprise 需要大约 15 分钟才能创建一台新服务器。请勿关闭 create-server 命令的输出或关闭您的 Shell 会话,因为该输出可能包含不再显示的重要信息。要从 create-server 结果中获取密码和初学者工具包,请继续执行下一步。

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

    "Endpoint": "puppet-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
  7. 如果您选择让 OpsWorks for Puppet Enterprise 为您生成密码,您可以使用 JSON 处理器 (如 jq) 从 create-server 结果中按可用格式提取密码。安装 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 初学者工具包。使用 AWS CLI 创建 Puppet Master 时,请运行上述 jq 命令,以将 base64 编码的初学者工具包以 ZIP 文件格式保存在 create-server 结果中。

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

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