本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
可选:用 AWS CodeCommit 作 Puppet r10k 远程控制存储库
重要
该 AWS OpsWorks for Puppet Enterprise 服务于 2024 年 3 月 31 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre
您可以使用创建新存储库 AWS CodeCommit,并将其用作 r10k 远程控制存储库。要完成本节中的步骤并使用 CodeCommit 存储库,您需要具有AWSCodeCommitReadOnly托管策略所提供权限的用户。
步骤 1:用 CodeCommit 作 HTTPS 连接类型的存储库
-
在 CodeCommit 控制台中,创建一个新存储库。
-
选择 Skip 以跳过设置 Amazon SNS 主题这一操作。
-
在 Code 页面上,选择 Connect to your repository。
-
在 Connect to your repository 页面上,选择 HTTPS 作为 Connection type,然后选择您的操作系统。
在克隆存储库的步骤区域中,您的
git clone
URL 应与以下内容类似:https://git-codecommit.
。将此 URL 复制到方便位置以便在 Puppet 服务器设置中使用。region
.amazonaws.com/v1/repos/control-repo -
关闭 “连接到您的存储库” 页面,然后返回 Puppet Enterprise 服务器设置。 OpsWorks
-
将您在步骤 4 中复制的 URL 粘贴到 Puppet Master 设置向导的 Configure credentials 页面中的 r10k remote 字符串框中。将 r10k private key 框保留为空。完成您的 Puppet Master 的创建和启动。
-
在 IAM 控制台中,将AWSCodeCommitReadOnly策略附加到您的 Puppet 主服务器的实例配置文件角色。有关如何将策略附加到 IAM 角色的更多信息,请参阅 IAM 用户指南 中的添加 IAM 身份权限(控制台)。
-
按照用户指南中使用 Git 凭据的 HTTPS AWS CodeCommit 用户设置中的步骤将现有
control-repo
内容推送到新 CodeCommit 存储库。 -
现在,您可以按照 使用初学者工具包配置 Puppet Master中的说明继续操作,并使用初学者工具包将代码部署到您的 Puppet Master。以下命令是一个示例。
puppet-code deploy --all --wait --config-file .config/puppet-code.conf
步骤 2:(可选)用 CodeCommit 作 SSH 连接类型的存储库
您可以将 AWS CodeCommit r10k 远程控制存储库配置为使用 SSH key pair 身份验证。在开始此过程之前,必须完成以下先决条件。
-
您必须已使用前一节所述的 OpsWorks HTTPS 控制存储库启动了 for Puppet Enterprise 服务器。步骤 1:用 CodeCommit 作 HTTPS 连接类型的存储库必须先完成此操作,以便您能够将所需配置上传到 Puppet Master。
-
请确保您的用户已附加AWSCodeCommitReadOnly托管策略。有关如何创建用户的更多信息,请参阅 IAM 用户指南中的在您的 AWS 账户中创建 IAM 用户。
-
创建一个 SSH 密钥并将该密钥与 用户关联。按照AWS CodeCommit 用户指南中的步骤 3:在 Linux、macOS 或 Unix 上配置凭证中的说明,用
ssh-keygen
创建公有密钥和私有密钥对。
-
在会 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
`" -
将 Systems Manager Parameter Store 权限添加到 Puppet Master。
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在左侧导航窗格中,选择 Roles(角色)。
-
选择 aws-opsworks-cm-ec2 个角色。
-
在 Permissions(权限)选项卡上,选择 Attach policies(附加策略)。
-
在 Search (搜索) 栏中,输入
AmazonSSMManagedInstanceCore
。 -
在搜索结果中,选择 AmazonSSM ManagedInstanceCore。
-
选择附加策略。
-
创建配置文件清单。如果您使用的是初学者工具包中提供的
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 # ReplaceREGION
with the correct region for your server. $command = @(COMMAND) aws ssm get-parameters \ --regionREGION
\ --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', } } -
将您的控制存储库推送到 CodeCommit。运行以下命令以将新的清单文件推送到您的存储库。
git add ./site/profile/manifests/codecommit.pp git commit -m 'Configuring for SSH connection to CodeCommit' git push origin production
-
部署清单文件。运行以下命令将更新的配置部署到你 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 -
更新 Pupp OpsWorks et Enterprise 服务器的分类。默认情况下,Puppet 代理每 30 分钟在节点(包括 Master)上运行一次。要避免等待,您可以手动在 Puppet Master 上运行代理。运行代理将选取新清单文件。
-
登录 Puppet Enterprise 控制台。
-
选择分类。
-
展开 PE 基础设施。
-
选择 PE Master。
-
在配置选项卡上,在添加新类中输入
profile::codecommit
。新类
profile::codecommit
可能不会在运行puppet-code deploy
后立即出现。如果该类未出现,请在此页面上选择刷新。 -
选择添加类,然后选择提交 1 更改。
-
在 Puppet Enterprise 服务器上手动运行 Puppet 代理。 OpsWorks 选择节点,在列表中选择您的服务器,再选择运行 Puppet,然后选择运行。
-
-
在 Puppet Enterprise 控制台中,更改存储库 URL 以使用 SSH 而不是 HTTPS。您在这些步骤中执行的配置将 OpsWorks 在 Puppet Enterprise 备份和还原过程中保存,因此在维护活动结束后,您无需手动更改存储库配置。
-
选择分类。
-
展开 PE 基础设施。
-
选择 PE Master。
-
在配置选项卡上,找到
puppet_enterprise::profile::master
类。 -
选择
r10k_remote
参数旁边的编辑。 -
将 HTTPS URL 替换为存储库的 SSH URL,然后选择提交 1 更改。
-
在 Puppet Enterprise 服务器上手动运行 Puppet 代理。 OpsWorks 选择节点,在列表中选择您的服务器,再选择运行 Puppet,然后选择运行。
-