amazon-web-services - 自动检测 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。
如果第一个名称失败,另一个想法是以某种方式尝试第二个名称。
这应该是一个常见的问题,但我还没有找到任何现成的解决方案。
有任何想法吗?
解决方案
推荐阅读
- git - 如何在 git commit 消息中设置 windows 环境变量?
- sql - t-sql 从平面日期列表中汇总日期范围,按其他列分组
- perl - 在 IBM Cloud Shell 中加载包
- .htaccess - 带参数的 Htaccess 301 重定向
- python - Plotly python axix 股票格式问题与具有毫秒的纪元时间
- javascript - 使用推送通知刷新页面
- scala - Spark - 列表达式
- bigcommerce - BigCommerce Stencil 自定义页面模板未出现
- ffmpeg - ffmpeg:实时 HLS 播放随着时间的推移而延迟
- android - 在 View 而不是 xml 中定义样式和自定义属性