我的一个帐户中有将近 150 个 ec2 实例。我想从每个实例中提取一些系统信息。我知道我可以单独登录每个系统并使用特定命令获取信息。但我希望一次性获得所有信息。我可以编写一个简单的脚本,但问题是,当我有一个堡垒主机时,我需要通过 ssh 进入每个实例,而用户名是不同的。例如,对于某些实例,它的[电子邮件保护]对于一些人来说[电子邮件保护]。
ssh -i "prod-key-pair.pem" [email protected] ssh -i "sandbox-key-pair.pem" [email protected] 'bash -s' << EOF
cat /etc/*-release|grep -m 1 NAME >>os_detail.txt
ifconfig | grep inet |head -1 |awk -F ' ' '{print $2}' >>os_detail.txt
EOF
我的问题是,如何才能逐个选择 centos 和 ec2-user,如果使用 centos 失败,则应尝试 ec2-user。其次,执行这两个命令时会在服务器中创建文件,但我希望在我运行脚本的本地系统中使用这些文件。
关于如何解决这个问题有什么指点吗?
答案1
在 2017 年 re:invent 大会期间,AWS 推出了Amazon EC2 系统管理器。此服务可用于运行脚本(SSM运行文档)/命令(SSM 运行命令) 通过亚马逊提供的 API 进行远程控制。
默认情况下,最新的 Windows 实例和 Amazon Linux 实例已默认安装 SSM 代理。其他实例需要手动安装,这很简单,而且只需安装一次。
他们有文档,我们可以在其中创建或使用现有文档并在我们列出的机器上运行它们。我们通过 API 响应获取这些命令生成的必要输出。
要启用此服务,我们必须确保分配给 EC2 实例的 IAM 角色已启用 SSM 权限。
以下是一些可获得进一步帮助的链接:
- https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html
- https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html
要获取实例元数据,您可以使用实例中的此命令。
wget -q -O -http://169.254.169.254/latest/meta-data/实例 ID