在 AWS Organization 中管理 SSM Agent
本节概述了如何在 AWS Organization 中管理 SSM 代理的安装,并提供 CloudFormation、Terraform、Shell、PowerShell、Ansible、Chef 和 Puppet 的示例代码。
请注意,这是示例代码,应在任何生产环境使用之前在开发环境中进行彻底测试和验证。
了解 SSM Agent
如前几节所讨论的,要开始使用 Systems Manager 管理环境中的节点,节点必须是受管理的,这意味着 SSM Agent 已安装在机器上,并且代理可以使用所需权限与 Systems Manager 服务端点通信。
AWS Systems Manager Agent (SSM Agent) 是在 Amazon Elastic Compute Cloud (Amazon EC2) 实例、边缘设备、本地服务器和虚拟机 (VM) 上运行的 Amazon 软件。SSM Agent 的源代码可在 GitHub 上获取。SSM Agent 使 Systems Manager 能够更新、管理和配置这些资源。代理处理来自 AWS Cloud 中 Systems Manager 服务的请求,然后按照请求中指定的方式运行它们。
因此,确保 SSM Agent 安装在节点上是必要的,也是使用 AWS Systems Manager 服务开始节点管理运维之旅的第一步。
操作系统支持
SSM Agent 支持广泛的操作系统和机器类型。请参阅用户指南中的支持的操作系统和机器类型以验证您的操作系统 (OS)、OS 版本和机器类型是否受支持。
预装 SSM Agent 的 AMI
为了开始使用 Systems Manager,AWS Systems Manager Agent (SSM Agent) 预装在 AWS 和可信第三方提供的某些 Amazon Machine Images (AMIs) 上。请参阅查找预装 SSM Agent 的 AMI,以获取预装的操作系统列表。
SSM Agent 安装方法
现在我们了解了哪些操作系统支持 SSM Agent,让我们探索在未预装 SSM Agent 的实例上安装代理的各种方法。安装方法可以分为两个主要场景:
- 新实例部署:在启动新实例时安装 SSM Agent。
- 现有实例管理:在已运行的实例上安装 SSM Agent。
在新实例上安装 SSM Agent
在启动新实例时,将 SSM Agent 安装纳入初始设置过程可确保从一开始就具有一致的管理能力。这种方法消除了部署后安装的需要。您可以通过多种方法实现这一点,如黄金 AMI、用户数据脚本或基础设施即代码工具等。方法的选择通常取决于您组织的部署实践和扩展需求。
黄金 AMI 方法
黄金 AMI 是一个自定义的 Amazon Machine Image,用作启动 EC2 实例的标准化模板。对于 Systems Manager 集成,组织可以创建预装 SSM Agent 的黄金 AMI,确保从这些 AMI 启动的所有实例都可以立即通过 Systems Manager 进行管理。这种方法消除了启动后安装脚本的需要,并降低了部署失败的风险。
创建黄金 AMI
- 手动:手动创建黄金 AMI 可以通过启 动实例、安装和配置 SSM Agent、测试配置,然后从该实例创建 AMI 来完成。
- EC2 Image Builder:如果您使用 EC2 Image Builder 创建黄金镜像,请配置镜像配方并选择在输出镜像中保留 SSM 代理的选项。
- Hashicorp Packer:如果您使用 Hashicorp Packer,请使用 shell Packer provisioner 运行 shell 命令来安装 SSM 代理。
{
"provisioners": [
{
"type": "shell",
"inline": [
"if [ -f /etc/system-release ]; then",
" # Amazon Linux",
" sudo yum install -y amazon-ssm-agent",
" sudo systemctl enable amazon-ssm-agent",
" sudo systemctl start amazon-ssm-agent",
"elif [ -f /etc/lsb-release ]; then",
" # Ubuntu",
" sudo snap install amazon-ssm-agent \u2014classic",
" sudo systemctl enable snap.amazon-ssm-agent.amazon-ssm-agent.service",
" sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service",
"fi"
]
}
]
}
或者,提供包含 Agent 安装 shell 命令的脚本路径。
{
"provisioners": [{
"type": "shell",
"script": "scripts/install_ssm.sh"
}]
}
使用 Packer 的 script provisioner 时,install_ssm.sh 应相对于您的 Packer 配置文件(.json 或 .pkr .hcl)存储。