当将 -m 与全局清单一起使用时,Ansible 是否检查相对变量文件?

当将 -m 与全局清单一起使用时,Ansible 是否检查相对变量文件?

我创建了一个文件,

./group_vars/all

有一条简单的线

---
ansible_user: centos

我的库存文件/etc/ansible/inventory

[centos]
10.1.38.15

但是,当我使用时,ansible -m ping我发现它正在尝试与我的常规用户连接。

~/cp/ansible$ ansible -vvv centos -m ping
.... stuff
    "msg": "Failed to connect to the host via ssh: [email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).",
    "unreachable": true

您可以看到它正在尝试连接ecarroll@而不是连接centos@。如果我使用全局库存,Ansible 可以-m使用吗?./group_vars/

答案1

按照文档(我的重点):

您还可以将目录添加group_vars/host_vars/您的 playbook 目录中。该ansible-playbook命令默认在当前工作目录中查找这些目录。其他 Ansible 命令(例如ansibleansible-console等)只会寻找group_vars/并且host_vars/在库存目录中如果您希望其他命令从 playbook 目录加载组和主机变量,则必须--playbook-dir在命令行上提供该选项。如果您从 playbook 目录和 inventory 目录加载 inventory 文件,playbook 目录中的变量将覆盖 inventory 目录中设置的变量。

因此,您必须向命令本身提供这些变量,您可以使用

ansible -m setup 10.1.38.15 -e ansible_user=centos

或者,

ansible -u centos -m setup 10.1.38.15

相关内容