![ansible 用户变量被本地机器用户覆盖](https://linux22.com/image/672738/ansible%20%E7%94%A8%E6%88%B7%E5%8F%98%E9%87%8F%E8%A2%AB%E6%9C%AC%E5%9C%B0%E6%9C%BA%E5%99%A8%E7%94%A8%E6%88%B7%E8%A6%86%E7%9B%96.png)
因此我正在进行 ansible 设置并通过我的 ansible_hosts 文件成功设置了主机配置:
104.236.59.171 ansible_connection=ssh ansible_user=root
检查主机的配置状态我得到:
104.236.59.171 | success >> { "var": { "hostvars['104.236.xx.xxx']": { "ansible_connection": "ssh", "ansible_user": "root", "group_names": [ "ungrouped" ], "inventory_hostname": "104.236.xx.xxx", "inventory_hostname_short": "104" } } }
但是,我本地机器上的用户/名称优先于ansible_user
成功登录所需使用的变量。
我可以使用 ansible 命令中的选项覆盖此-u
功能,但是当我在多个服务器实例上有多个不同的用户并且我正在对所有用户进行迭代时,这将不是一个选项。
我该如何覆盖从本地机器获取的默认用户?
谢谢你的帮助!
答案1
查看 Ansible 文档变量优先级。
如果您提供ansible_user
带有参数的变量,-u
它将始终覆盖其他每个变量定义。
由于inventory vars
几乎位于链接列表的顶部,因此您需要检查其他级别的变量定义。我会检查grep
其他变量定义并将其删除。