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

演练:将自动化与 Jenkins 一起使用

如果组织在 CI/CD 管道中使用 Jenkins 软件,则可以添加自动化作为构建后步骤,用于将应用程序发行版预安装到 Amazon Machine Images (AMIs) 中。自动化是 Amazon Systems Manager 的一项功能。您还可以使用 Jenkins 计划功能来调用自动化并创建自己的操作系统 (OS) 修补计划。

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

注意

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

开始前的准备工作

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

  • 完成 演练:使用自动化、AMI 和 Parameter Store 简化 Amazon Lambda 的修补 示例。以下示例使用在该示例中创建的 UpdateMyLatestWindowsAmi 运行手册。

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

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

为 Jenkins 服务器创建用户账户

  1. 登录 Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/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. 选择 Review policy (审核策略)

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

  7. 选择 Create policy(创建策略)。

  8. 在导航窗格中选择用户

  9. 选择添加用户

  10. 设置用户详细信息部分中指定用户名(例如,Jenkins)。

  11. 选择 Amazon 访问类型部分中,选择程序访问

  12. 选择下一步:权限

  13. 设置权限对象部分中,选择直接附加现有策略

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

  15. 选择策略旁边的复选框,然后选择下一步:标签

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

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

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

使用以下过程在 Jenkins 服务器上配置 Amazon CLI。

为自动化配置 Jenkins 服务器

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

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

    sudo cat /var/lib/jenkins/secrets/initialAdminPassword
  3. Jenkins 安装脚本会将您引导到自定义 Jenkins 页面。选择安装建议的插件

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

  5. 在左侧导航窗格中,选择队列管理,然后选择部署

  6. 可用选项卡,然后输入 Amazon EC2 plugin

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

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

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

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

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

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

配置 Jenkins 服务器以调用 自动化

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

  2. 选择要配置用于自动化的项目,然后选择配置

  3. 构建选项卡上,选择添加构建步骤

  4. 选择执行 shell执行 Windows 批命令(具体取决于您的操作系统)。

  5. 命令框中,运行 Amazon CLI 命令,如下所示:

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

    以下示例命令使用 UpdateMyLatestWindowsAmi 运行手册以及在 演练:使用自动化、AMI 和 Parameter Store 简化 Amazon Lambda 的修补 中创建的 Systems Manager 参数 latestAmi

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

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

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

    
                            Jenkins 信息