更新 Linux AMI
本 Systems Manager Automation 演练向您展示了如何使用控制台或 AWS CLI 和 AWS-UpdateLinuxAmi
运行手册,使用您指定的最新软件包补丁更新Linux AMI。自动化是 AWS Systems Manager 的一项功能。AWS-UpdateLinuxAmi
运行手册也能自动安装其他具体站点相关的软件包和配置。您可以使用该演练更新各种 Linux 分发版,包括 Ubuntu Server、CentOS、RHEL、SLES 或 Amazon Linux AMIs。有关支持的 Linux 版本的完整列表,请参阅 Patch Manager 先决条件。
使用 AWS-UpdateLinuxAmi
运行手册可以自动完成映像维护任务,而无需使用 JSON 或 YAML 编写运行手册。您可以使用 AWS-UpdateLinuxAmi
运行手册执行以下类型的任务。
-
在 Amazon Linux、Red Hat Enterprise Linux、Ubuntu Server、SUSE Linux Enterprise Server 或 CentOS Amazon Machine Image (AMI) 上升级所有分配程序包和 Amazon 软件。这是默认运行手册行为。
-
在现有映像上安装 AWS Systems Manager SSM Agent 以启用 Systems Manager 功能,例如使用 AWS Systems Manager Run Command 的远程命令执行,或者使用 Inventory 的软件清单收集。
-
安装其他软件包。
开始前的准备工作
在您开始使用运行手册之前,请先为自动化配置角色和 EventBridge(后者可选)。有关更多信息,请参阅 设置自动化。此演练还要求您指定 AWS Identity and Access Management (IAM) 实例配置文件的名称。有关创建 IAM 实例配置文件的更多信息,请参阅配置 Systems Manager 所需的实例权限。
AWS-UpdateLinuxAmi
运行手册接受以下输入参数。
参数 | 类型 | 描述 |
---|---|---|
SourceAmiId |
String |
(必需)源 AMI ID。 |
IamInstanceProfileName |
String |
(必需)您在配置 Systems Manager 所需的实例权限中创建的 IAM 实例配置文件角色的名称。实例配置文件角色为自动化提供在您实例上执行操作的权限,例如运行命令或启动和停止服务。运行手册仅使用实例配置文件角色的名称。如果您指定 Amazon Resource Name (ARN),则自动化会失败。 |
AutomationAssumeRole |
String |
(必需)您在 设置自动化 中创建的 IAM 服务角色的名称。服务角色(也称为担任角色)为自动化提供权限,用于担任您的 IAM 角色和代表您执行操作。例如,在运行手册中运行 |
TargetAmiName |
String |
(可选)新 AMI 在创建之后的名称。默认名称是系统生成的字符串,其中包括源 AMI ID 以及创建时间和日期。 |
InstanceType |
String |
(可选) 启动作为工作区主机的实例的类型。实例类型因区域而异。默认类型为 t2.micro。 |
PreUpdateScript |
String |
(可选) 在应用更新前要运行的脚本的 URL。默认值 (\"none\") 不运行脚本。 |
PostUpdateScript |
String |
(可选) 在应用软件包更新后要运行的脚本的 URL。默认值 (\"none\") 不运行脚本。 |
IncludePackages |
String |
(可选) 仅更新这些指定的软件包。默认值 (\"all\") 将应用所有可用的更新。 |
ExcludePackages |
String |
(可选) 在所有情况下从更新中排除的软件包的名称。默认值 (\"none\") 不排除任何软件包。 |
自动化步骤
AWS-UpdateLinuxAmi
运行手册默认情况下包括以下自动化操作。
- 步骤 1:launchInstance(
aws:runInstances
操作) -
此步骤使用 Amazon Elastic Compute Cloud (Amazon EC2) 用户数据和 IAM 实例配置文件角色启动实例。用户数据根据操作系统安装相应的 SSM Agent。安装 SSM Agent 后,您可以利用 Systems Manager 功能,例如 Run Command、State Manager 和 Inventory。
- 步骤 2:updateOSSoftware(
aws:runCommand
操作) -
此步骤在已启动实例上运行以下命令:
-
从 Amazon S3 下载更新脚本。
-
运行可选的更新前脚本。
-
更新分发软件包和 Amazon 软件。
-
运行可选的更新后脚本。
执行日志存储在 /tmp 文件夹中,供用户以后查看。
如果您希望升级特定软件包集,则可以使用
IncludePackages
参数提供列表。在提供时,系统仅尝试更新这些软件包及其依赖项。不执行任何其他更新。默认情况下,如果未指定包含 软件包,则程序将更新所有可用软件包。如果要在升级中排除特定软件包集,则可以向
ExcludePackages
参数提供列表。如果提供,这些软件包保持其当前版本,与任何其他指定的选项无关。默认情况下,在未指定任何排除软件包时,将不排除软件包。 -
- 步骤 3:stopInstance(
aws:changeInstanceState
操作) -
此步骤停止已更新实例。
- 步骤 4:createImage(
aws:createImage
操作) -
此步骤创建一个新 AMI,带有可将其链接到源 ID 和创建时间的描述性名称。例如:“EC2 自动化在 {{global:DATE_TIME}} 从 {{SourceAmiId}} 生成了 AMI”,其中 DATE_TIME 和 SourceID 表示自动化变量。
- 步骤 5:terminateInstance(
aws:changeInstanceState
操作) -
此步骤通过终止正在运行的实例来清除执行过程。
- 输出
-
自动化返回新的 AMI ID 作为输出。
注意
默认情况下,当自动化运行 AWS-UpdateLinuxAmi
运行手册时,系统会在默认 VPC (172.30.0.0/16) 中创建一个临时实例。如果您删除了默认 VPC,会收到以下错误:
VPC not defined 400
要解决此问题,您必须复制 AWS-UpdateLinuxAmi
运行手册并指定子网 ID。有关更多信息,请参阅 VPC not defined 400。
使用自动化创建经过修补的 AMI (AWS Systems Manager)
访问 https://console.aws.amazon.com/systems-manager/
,打开 AWS Systems Manager 控制台。 在导航窗格中,选择 自动化。
-
选择执行自动化。
-
在自动化文档列表中,选择
AWS-UpdateLinuxAmi
。 -
在文档详细信息部分,验证文档版本是否设置为运行时的默认版本。
-
选择下一步。
-
在执行模式部分中,选择简单执行。
-
在输入参数部分,输入在开始前的准备工作部分收集的信息。
-
选择执行。控制台将显示自动化执行的状态。
在自动化完成后,请从更新后的 AMI 启动测试实例以验证更改。
注意
如果自动化有任何步骤失败,自动化执行页面上会列出有关失败的信息。自动化设计为在成功完成所有任务后终止临时实例。如果步骤失败,系统可能不会终止实例。因此,如果某个步骤失败,请手动终止临时实例。