使用 Automation 和 Jenkins 更新 AMIs - AWS Systems Manager

使用 Automation 和 Jenkins 更新 AMIs

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

以下示例显示如何从运行在本地或 Amazon Elastic Compute Cloud(Amazon EC2)上的 Jenkins 服务器调用 Automation。对于身份验证,Jenkins 服务器使用 AWS 凭证,该凭证基于您在示例中创建并附加到实例配置文件的 IAM 策略。

注意

配置实例时,请务必遵循 Jenkins 安全最佳实践。

开始前的准备工作

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

为 Jenkins 服务器创建 IAM 策略
  1. 登录 AWS Management Console,然后使用以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

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

  3. 选择 JSON 选项卡。

  4. 将每个示例资源占位符替换为您自己的信息。

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

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

  7. 选择创建策略

  8. 在导航窗格中,选择角色

  9. 选择附加到 Jenkins 服务器的实例配置文件。

  10. 权限选项卡中,选择添加权限,然后选择附加策略

  11. 其他权限策略部分中,输入您在之前步骤中创建的策略名称。例如,JenkinsPolicy

  12. 选中您的策略旁边的复选框,然后选择附加策略

按照以下过程在 Jenkins 服务器上配置 AWS CLI。

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

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

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

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

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

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

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

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

  9. 选择管理 Jenkins,然后选择管理节点和云

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

  11. 在其余字段中输入您的信息。确保选择使用 EC2 实例配置文件获取凭证选项。

按照以下过程配置 Jenkins 项目来调用 Automation。

配置 Jenkins 服务器来调用 Automation
  1. 在 Web 浏览器中打开 Jenkins 控制台。

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

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

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

  5. Command(命令)字段中,运行 AWS CLI 命令,如下所示。将每个示例资源占位符替换为您自己的信息。

    aws ssm start-automation-execution \ --document-name runbook name \ --region AWS 区域 of your source AMI \ --parameters runbook parameters

    以下示例命令使用 UpdateMyLatestWindowsAmi 运行手册以及在 使用 Automation、AWS Lambda 和 Parameter Store 来更新黄金 AMI 中创建的 Systems Manager 参数 latestAmi

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

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

    Jenkins 软件中的示例命令。
  6. 在 Jenkins 项目中,选择立即构建。Jenkins 会返回类似于以下示例的输出。

    Jenkins 软件中的示例命令输出。