首页 > 解决方案 > 自动检测 Ansible 的 EC2 实例 ssh/sudo 用户

问题描述

我有一组混合的 AWS EC2 实例,有些具有“ubuntu”,有些具有“ec2-user”作为默认 ssh/sudo 用户。其他一些是 Windows,但我现在愿意忽略这些。我想使用动态清单通过 ansible 管理它们 - 我正在使用 aws_ec2 插件 - 我需要一种方法来检测正确的 ssh/sudo 用户并将其与实例相关联。是否有用于创建混合 sudo 动态清单的插件、脚本或最佳实践?

我想到的一种可能性是运行一个脚本,该脚本尝试对每个实例进行“root”登录,并从通常的输出中获取正确的用户名(参见下面的输出)。然后我可以将用户名作为标签存储在实例上。

请以用户“ec2-user”而不是用户“root”登录。

请以用户“ubuntu”而不是用户“root”登录。

这似乎可以做到这一点

for HOST in $(ansible --list-hosts all |grep -v hosts);do
  timeout 2 ssh -Tq root@${HOST} | awk -F \" '{ print $2; exit}'
done

Whereansible --list-hosts返回主机的私有 IP。

如果第一个名称失败,另一个想法是以某种方式尝试第二个名称。

这应该是一个常见的问题,但我还没有找到任何现成的解决方案。

有任何想法吗?

标签: amazon-web-servicesamazon-ec2ansiblesudo

解决方案


推荐阅读