【发布时间】:2019-11-17 20:51:45
【问题描述】:
我正在创建一个通过一组 AWS EC2 主机并安装一些基本包的 ansible playbook。在剧本可以执行任何任务之前,剧本需要使用正确的user: {{ userXXX }} 登录到每个主机(2 种发行版 AWS Linux 或 Ubuntu)@ 这是我不太确定如何传递正确用户登录名的部分,它可以是ec2-user 或ubuntu。
- name: setup package agent
hosts: ec2_distros_hosts
user: "{{ ansible_user_id }}"
roles:
- role: package_agent_install
我假设 ansible_user_id 将基于 ansible 的保留变量工作,但这里不是这种情况。我不想为不同的发行版创建 2 个单独的剧本,是否有一个优雅的解决方案来动态查找用户登录并用作 user: ?
这里是未知用户ansible-playbook -i inventory/ec2.py agent.yml的失败cmd
【问题讨论】:
-
ec2.py 脚本是否返回有关发行版的任何信息?如果没有,这是不可能的,因为 Ansible 需要访问主机来了解发行版。您可以创建 hosts_vars 并将变量
ansible_user设置为每个主机的用户。但是这种做法是没有意义的,因为如果您需要每个 host_vars 覆盖每个主机,那么动态清单脚本没有太大意义。
标签: amazon-ec2 ansible