演练:将 Automation 与 Jenkins 一起使用 - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

演练:将 Automation 与 Jenkins 一起使用

如果组织在 CI/CD 管道中使用 Jenkins 软件,您可以将 Automation 作为构建后步骤添加到Amazon Machine Images(AMIs)。自动化是Amazon Web Services Systems Manager。您还可以使用 Jenkins 计划功能来调用 Automation 并创建自己的操作系统 (OS) 修补计划。

以下示例显示如何从运行在本地或上的 Amazon Elastic Compute Cloud (Amazon EC2) 中的 Jenkins 服务器调用 Automation。对于身份验证,詹金斯服务器使用Amazon凭证,该凭证基于您在示例中创建的 AWS Identity and Access Management (IAM) 用户。如果 Jenkins 服务器运行在 Amazon EC2 中,也可以使用 IAM 实例配置文件角色对其进行身份验证。

注意

配置您的实例时,请确保遵循 Jenkins 安全最佳实践。

开始前的准备工作

在您配置 Automation 用于 Jenkins 之前,请完成以下任务:

  • 完成 演练:简化AMI使用 Automation、Amazon Lambda和 Parameter Store 示例。下面的示例使用了UpdateMyLatestWindowsAmi在该示例中创建的运行簿。

  • 为自动化配置 IAM 角色。Systems Manager agement 需要实例配置文件角色和服务角色 ARN 来处理自动化。有关更多信息,请参阅 设置 Automation

  • 为 Automation 配置 IAM 角色之后,使用以下过程为 Jenkins 服务器创建 IAM 用户账户。自动化使用 IAM 用户账户的 Access 密钥和秘密对 Jenkins 服务器进行身份验证。

为 Jenkins 服务器创建用户账户

  1. 登录 Amazon Web Services Management Console,单击 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择策略,然后选择创建策略

  3. 选择 JSON 选项卡。

  4. 将默认内容替换为以下内容。务必将 us-west-2123456789012 替换为您要使用的区域和账户。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartAutomationExecution", "Resource": [ "arn:aws:ssm:us-west-2:123456789012:document/UpdateMyLatestWindowsAmi", "arn:aws:ssm:us-west-2:123456789012:automation-definition/UpdateMyLatestWindowsAmi:$DEFAULT" ] } ] }
  5. 选择查看策略

  6. Review policy (查看策略) 页面上,对于 Name (名称),输入内联策略的名称,例如 JenkinsPolicy

  7. 选择创建策略

  8. 在导航窗格中,选择 Users

  9. 选择 Add user

  10. Set user details 部分中指定用户名 (例如,Jenkins)。

  11. SelectAmazon访问权限类型部分,选择编程访问

  12. 选择 Next:Permissions (下一步: 权限)

  13. Set permissions for 部分中,选择 Attach existing policies directly

  14. 在筛选条件字段中,输入您之前创建的策略的名称。

  15. 选中策略旁边的复选框,然后选择后续:标签

  16. (可选)添加一个或多个标签键/值对以组织、跟踪或控制该用户的访问,然后选择后续:审核

  17. 验证详细信息,然后选择 Create

  18. 将访问密钥和秘密密钥复制到文本文件。您可以在接下来的过程中指定这些凭证。

可以使用以下过程配置Amazon您的詹金斯服务器上的 CLI。

为 Automation 配置 Jenkins 服务器

  1. 使用首选浏览器 Connect 到端口 8080 上的 Jenkins 服务器以访问管理界面。

  2. 输入在/var/lib/jenkins/secrets/initialAdminPassword。要显示您的密码,请运行以下命令。

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. 詹金斯安装脚本会将您引导到自定义 Jenkins页. Select安装建议的插件

  4. 安装完成后,选择管理员凭据中,选择保存凭证,然后选择开始使用 Jenkins

  5. 在左侧导航窗格中,选择管理 Jenkins,然后选择管理插件

  6. 选择Available选项卡,然后输入Amazon EC2 plugin

  7. 选中复选框Amazon EC2 plugin,然后选择不重新启动

  8. 安装完成后,选择返回首页

  9. 选择管理 Jenkins,然后选择配置系统

  10. 部分中,选择添加新的云,然后选择Amazon EC2

  11. 在其余字段中输入您的信息。您必须输入Amazon凭证添加凭证字段。

使用以下过程配置您的 Jenkins 项目来调用 Automation。

配置 Jenkins 服务器以调用 Automation

  1. 在 Web 浏览器中打开 Jenkins 控制台。

  2. 选择要配置用于 Automation 的项目,然后选择 Configure

  3. Build 选项卡上,选择 Add Build Step

  4. 选择 Execute shellExecute Windows batch command (具体取决于您的操作系统)。

  5. 命令框中,运行AmazonCLI 命令,如下。

    aws --region the Amazon Web Services 区域 of your source AMI ssm start-automation-execution --document-name your runbook name --parameters parameters for the runbook

    以下示例命令使用UpdateMyLatestWindowsAmiRunbook 和 Systems Manager 参数latestAmi在中创建演练:简化AMI使用 Automation、Amazon Lambda和 Parameter Store

    aws --region region-id ssm start-automation-execution \ --document-name UpdateMyLatestWindowsAmi \ --parameters \ "sourceAMIid='{{ssm:latestAmi}}'"

    在 Jenkins 中,命令类似于以下屏幕截图中的示例。

    
                            Jenkins 信息
  6. 在 Jenkins 项目中,选择 Build Now。Jenkins 会返回与以下示例类似的输出。

    
                            Jenkins 信息