可选:用 AWS CodeCommit 作 Puppet r10k 远程控制存储库 - AWS OpsWorks

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

可选:用 AWS CodeCommit 作 Puppet r10k 远程控制存储库

重要

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

您可以使用创建新存储库 AWS CodeCommit,并将其用作 r10k 远程控制存储库。要完成本节中的步骤并使用 CodeCommit 存储库,您需要具有AWSCodeCommitReadOnly托管策略所提供权限的用户。

步骤 1:用 CodeCommit 作 HTTPS 连接类型的存储库

  1. 在 CodeCommit 控制台中,创建一个新存储库。

    在中创建新存储库 CodeCommit。
  2. 选择 Skip 以跳过设置 Amazon SNS 主题这一操作。

  3. Code 页面上,选择 Connect to your repository

  4. Connect to your repository 页面上,选择 HTTPS 作为 Connection type,然后选择您的操作系统。

    在中创建新存储库 CodeCommit。

    克隆存储库的步骤区域中,您的 git clone URL 应与以下内容类似:https://git-codecommit.region.amazonaws.com/v1/repos/control-repo。将此 URL 复制到方便位置以便在 Puppet 服务器设置中使用。

  5. 关闭 “连接到您的存储库” 页面,然后返回 Puppet Enterprise 服务器设置。 OpsWorks

  6. 将您在步骤 4 中复制的 URL 粘贴到 Puppet Master 设置向导的 Configure credentials 页面中的 r10k remote 字符串框中。将 r10k private key 框保留为空。完成您的 Puppet Master 的创建和启动。

  7. 在 IAM 控制台中,将AWSCodeCommitReadOnly策略附加到您的 Puppet 主服务器的实例配置文件角色。有关如何将策略附加到 IAM 角色的更多信息,请参阅 IAM 用户指南 中的添加 IAM 身份权限(控制台)

  8. 按照用户指南中使用 Git 凭据的 HTTPS AWS CodeCommit 用户设置中的步骤将现有control-repo内容推送到新 CodeCommit 存储库。

  9. 现在,您可以按照 使用初学者工具包配置 Puppet Master中的说明继续操作,并使用初学者工具包将代码部署到您的 Puppet Master。以下命令是一个示例。

    puppet-code deploy --all --wait --config-file .config/puppet-code.conf

步骤 2:(可选)用 CodeCommit 作 SSH 连接类型的存储库

您可以将 AWS CodeCommit r10k 远程控制存储库配置为使用 SSH key pair 身份验证。在开始此过程之前,必须完成以下先决条件。

  1. 在会 AWS CLI 话中,运行以下命令将私钥文件内容上传到 P AWS Systems Manager arameter Store。你 OpsWorks 的 puppet Enterprise 服务器查询此参数以获取所需的证书文件。将 private_key_file 替换为您的 SSH 私有密钥文件的路径。

    aws ssm put-parameter --name puppet_user_pk --type String --value "`cat private_key_file`"
  2. 将 Systems Manager Parameter Store 权限添加到 Puppet Master。

    1. 通过 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

    2. 在左侧导航窗格中,选择 Roles(角色)

    3. 选择 aws-opsworks-cm-ec2 个角色

    4. Permissions(权限)选项卡上,选择 Attach policies(附加策略)。

    5. Search (搜索) 栏中,输入 AmazonSSMManagedInstanceCore

    6. 在搜索结果中,选择 AmazonSSM ManagedInstanceCore

    7. 选择附加策略

  3. 创建配置文件清单。如果您使用的是初学者工具包中提供的 control-repo-example 存储库,请在示例存储库中显示的位置创建以下文件。否则,请根据您自己的控制存储库结构创建这些文件。将 IAM_USER_SSH_KEY 值替换为您在此过程的先决条件中创建的 SSH 密钥 ID。

    control-repo-example/site/profile/manifests/codecommit.pp
    class profile::codecommit { $configfile = @(CONFIGFILE) Host git-codecommit.*.amazonaws.com User IAM_USER_SSH_KEY IdentityFile /etc/puppetlabs/puppetserver/ssh/codecommit.rsa StrictHostKeyChecking=no | CONFIGFILE # Replace REGION with the correct region for your server. $command = @(COMMAND) aws ssm get-parameters \ --region REGION \ --names puppet_user_pk \ --query "Parameters[0].Value" \ --output text >| /etc/puppetlabs/puppetserver/ssh/codecommit.rsa | COMMAND $dirs = [ '/opt/puppetlabs/server/data/puppetserver/.ssh', '/etc/puppetlabs/puppetserver/ssh', ] file { $dirs: ensure => 'directory', group => 'pe-puppet', owner => 'pe-puppet', mode => '0750', } file { 'ssh-config': path => '/opt/puppetlabs/server/data/puppetserver/.ssh/config', require => File[$dirs], content => $configfile, group => 'pe-puppet', owner => 'pe-puppet', mode => '0600', } exec { 'download-codecommit-certificate': command => $command, require => File[$dirs], creates => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa', path => '/bin', cwd => '/etc/puppetlabs', } file { 'private-key-permissions': subscribe => Exec['download-codecommit-certificate'], path => '/etc/puppetlabs/puppetserver/ssh/codecommit.rsa', group => 'pe-puppet', owner => 'pe-puppet', mode => '0600', } }
  4. 将您的控制存储库推送到 CodeCommit。运行以下命令以将新的清单文件推送到您的存储库。

    git add ./site/profile/manifests/codecommit.pp git commit -m 'Configuring for SSH connection to CodeCommit' git push origin production
  5. 部署清单文件。运行以下命令将更新的配置部署到你 OpsWorks 的 for Puppet Enterprise 服务器。将 STARTER_KIT_DIRECTORY 替换为 Puppet 配置文件的路径。

    cd STARTER_KIT_DIRECTORY puppet-access login --config-file .config/puppetlabs/client-tools/puppet-access.conf puppet-code deploy --all --wait \ --config-file .config/puppet-code.conf \ --token-file .config/puppetlabs/token
  6. 更新 Pupp OpsWorks et Enterprise 服务器的分类。默认情况下,Puppet 代理每 30 分钟在节点(包括 Master)上运行一次。要避免等待,您可以手动在 Puppet Master 上运行代理。运行代理将选取新清单文件。

    1. 登录 Puppet Enterprise 控制台。

    2. 选择分类

    3. 展开 PE 基础设施

    4. 选择 PE Master

    5. 配置选项卡上,在添加新类中输入profile::codecommit

      新类 profile::codecommit 可能不会在运行 puppet-code deploy 后立即出现。如果该类未出现,请在此页面上选择刷新

    6. 选择添加类,然后选择提交 1 更改

    7. 在 Puppet Enterprise 服务器上手动运行 Puppet 代理。 OpsWorks 选择节点,在列表中选择您的服务器,再选择运行 Puppet,然后选择运行

  7. 在 Puppet Enterprise 控制台中,更改存储库 URL 以使用 SSH 而不是 HTTPS。您在这些步骤中执行的配置将 OpsWorks 在 Puppet Enterprise 备份和还原过程中保存,因此在维护活动结束后,您无需手动更改存储库配置。

    1. 选择分类

    2. 展开 PE 基础设施

    3. 选择 PE Master

    4. 配置选项卡上,找到 puppet_enterprise::profile::master 类。

    5. 选择 r10k_remote 参数旁边的编辑

    6. 将 HTTPS URL 替换为存储库的 SSH URL,然后选择提交 1 更改

    7. 在 Puppet Enterprise 服务器上手动运行 Puppet 代理。 OpsWorks 选择节点,在列表中选择您的服务器,再选择运行 Puppet,然后选择运行