创建 Chef Automate 服务器 - AWS OpsWorks

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

创建 Chef Automate 服务器

重要

AWS OpsWorks 因为 Chef Automate 不再接受新客户。现有客户在 2024 年 5 月 5 日之前不会受到影响,届时该服务将不可用。我们建议现有客户迁移到 Chef SaaS 或其他替代解决方案。有关更多信息,请参阅Chef Automate 生命周期终止常见问题解答的 AWS OpsWorks

您可以使用 AWS OpsWorks for Chef Automate 控制台或 AWS CLI 创建 Chef Server。

在 AWS Management Console中创建 Chef Automate 服务器

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

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

    
                     AWS OpsWorks 服务主页
  3. 在 AWS OpsWorks for Chef Automate 主页上,选择 Create Chef Automate server (创建 Chef Automate 服务器)

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

    
                     设置名称、区域和类型页面
  5. Configure server 页面上,除非您要指定密钥对名称,否则保留 SSH key 下拉列表中的默认选择。

    
                     选择 SSH 密钥页面
  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、子网以及一个或多个安全组。以下是 对您 VPC 的要求:

    • VPC 必须只有具有一个公有子网。

    • 必须启用 DNS 解析。

    • 必须在公有子网上启用自动分配公有 IP

    如果您还没有想要使用的安全组、服务角色和实例配置文件,AWS OpsWorks 可以为您生成。您的服务器可属于多个安全组。在离开此页后,您无法更改 Chef Server 的网络和安全设置。

    
                     网络和安全性
  9. System maintenance (系统维护) 部分中,设置您希望系统维护开始的日期和时间。由于您可以预见到服务器会在系统维护期间脱机,因此请选择正常工作时间中对服务器需求较低的时间。维护完成之前,已连接的节点进入 pending-server 状态。

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

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

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

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

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

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

    服务器创建完成后,您的 Chef Server 可在 AWS OpsWorks for Chef Automate 主页上使用,其状态为 online (在线)。服务器联机之后,Chef Automate 控制面板在服务器的域上可用,位于以下格式的 URL 上:https://your_server_name-random.region.opsworks-cm.io

使用 AWS CLI 创建 Chef Automate 服务器

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

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

  1. 请确保完成先决条件,尤其是设置 VPC,或确保您有要使用的现有 VPC。要创建 Chef Automate 服务器,您需要一个子网 ID。

  2. (可选) 通过使用 OpenSSL 来生成 Chef 关键密钥,将该密钥保存到您的本地计算机上安全、方便的文件中。如果您在 create-server 命令中不提供,则该关键密钥将作为服务器创建过程的一部分自动生成。如果要跳过此步骤,您可以改为从 create-server 命令的结果中获取 Chef Automate 关键密钥。如果您选择使用以下命令生成关键密钥,请务必包含 -pubout 参数,因为 Chef Automate 关键密钥值是 RSA 密钥对的公开部分。有关更多信息,请参阅步骤 6。

    umask 077 openssl genrsa -out "pivotal" 2048 openssl rsa -in "pivotal" -pubout
  3. 创建服务角色和实例配置文件。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
  4. AWS CloudFormation 完成创建堆栈后,请在您的账户中查找并复制服务角色的 ARN。

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

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

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

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

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

    { "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" } ] } } ] },
  6. 运行 create-server 命令以创建 AWS OpsWorks for Chef Automate 服务器。

    • --engine 值为 ChefAutomate--engine-modelSingle--engine-version12

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

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

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

    • --engine-attributes 参数是可选的;如果您不指定一个或两个值,则服务器创建过程会为您生成这些值。如果您添加 --engine-attributes,请指定您在步骤 2 中生成的 CHEF_AUTOMATE_PIVOTAL_KEY 值、CHEF_AUTOMATE_ADMIN_PASSWORD,或两者。

      如果您不设置 CHEF_AUTOMATE_ADMIN_PASSWORD 的值,一个密码将生成并作为 create-server 响应的一部分返回。您也可以在控制台中再次下载初学者工具包,该工具包会重新生成此密码。该密码的最小长度为 8 个字符,最大长度为 32 个字符。该密码可以包含字母、数字和特殊字符 (!/@#$%^+=_)。该密码必须至少包含一个小写字母、一个大写字母、一个数字和一个特殊字符。

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

    • 要使用自定义域,请将以下参数添加到命令中。否则,Chef Automate 服务器创建过程会自动为您生成终端节点。配置自定义域需要所有三个参数。有关使用这些参数的其他要求的信息,请参阅:《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 "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "server_name" --instance-profile-arn "instance_profile_ARN" --instance-type "instance_type" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"pivotal_key","CHEF_AUTOMATE_ADMIN_PASSWORD":"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 "ChefAutomate" --engine-model "Single" --engine-version "12" --server-name "automate-06" --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" --instance-type "m5.large" --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_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::12345678912:role/service-role/aws-opsworks-cm-service-role" --subnet-ids subnet-300aaa00

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

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \ --server-name "my-custom-domain-server" \ --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.large" \ --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_ADMIN_PASSWORD":"zZZzDj2DLYXSZFRv1d"}' \ --custom-domain "my-chef-automate-server.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::12345678912:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-300aaa00

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

    aws opsworks-cm create-server --engine "ChefAutomate" --engine-model "Single" --engine-version "12" \ --server-name "my-test-chef-server" \ --instance-profile-arn "arn:aws:iam::12345678912:instance-profile/aws-opsworks-cm-ec2-role" \ --instance-type "m5.large" \ --engine-attributes '{"CHEF_AUTOMATE_PIVOTAL_KEY":"MZZE...Wobg","CHEF_AUTOMATE_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::12345678912:role/service-role/aws-opsworks-cm-service-role" \ --subnet-ids subnet-300aaa00 \ --tags [{\"Key\":\"Stage\",\"Value\":\"Production\"},{\"Key\":\"Department\",\"Value\":\"Marketing\"}]
  7. AWS OpsWorks for Chef Automate 创建新服务器大约需要 15 分钟。请勿关闭 create-server 命令的输出或关闭您的 Shell 会话,因为该输出可能包含不再显示的重要信息。要从 create-server 结果中获取密码和初学者工具包,请继续执行下一步。

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

    "Endpoint": "automate-07-exampleexample.opsworks-cm.us-east-1.amazonaws.com"
  8. 如果您选择让 AWS OpsWorks for Chef Automate 为您生成密钥和密码,您可以使用 JSON 处理器 (如 create-serverjq) 从 结果中按可用格式提取密钥和密码。安装 jq 后,您可以运行以下命令来提取关键密钥、Chef Automate 控制面板管理员密码和初学者工具包。如果您未在步骤 4 中提供自己的关键密钥和密码,请确保将提取的关键密钥和管理员密码保存在方便而安全的位置。

    #Get the Chef password: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_ADMIN_PASSWORD") | .Value' #Get the Chef Pivotal Key: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_AUTOMATE_PIVOTAL_KEY") | .Value' #Get the Chef Starter Kit: cat resp.json | jq -r '.Server.EngineAttributes[] | select(.Name == "CHEF_STARTER_KIT") | .Value' | base64 -D > starterkit.zip
  9. (可选)如果您未从 create-server 命令结果提取初学者工具包,则可以在 AWS OpsWorks for Chef Automate 控制台中从服务器的“Properties”(属性) 页面下载一个新的初学者工具包。下载新的初学者工具包将重置 Chef Automate 控制面板管理员密码。

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

  11. 服务器创建过程完成后,请转到使用初学者工具包配置 Chef Server