Ansible

將 -m 與全域清單一起使用時,Ansible 是否會檢查相關的 vars 文件?

  • January 10, 2020

我創建了一個文件,

./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: ecarroll@10.1.38.15: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).",
   "unreachable": true

您可以看到它正在嘗試與ecarroll@而不是連接centos@。如果我使用全域庫存, Ansible 是否-m可以使用?./group_vars/

根據文件(我的重點):

您還可以將group_vars/host_vars/目錄添加到您的 playbook 目錄。該ansible-playbook命令預設在目前工作目錄中查找這些目錄。其他 Ansible 命令(例如 、ansibleansible-console)**只會在清單目錄中查找group_vars/和。host_vars/**如果您希望其他命令從 playbook 目錄載入組和主機變數,則必須--playbook-dir在命令行上提供該選項。如果您同時從 playbook 目錄和 inventory 目錄載入清單文件,則 playbook 目錄中的變數將覆蓋在 inventory 目錄中設置的變數。

因此,您必須將這些變數提供給命令本身,您可以使用

ansible -m setup 10.1.38.15 -e ansible_user=centos

或者,

ansible -u centos -m setup 10.1.38.15

引用自:https://unix.stackexchange.com/questions/560008