Ansible:如何解析庫存來源
我正在關注我從 Packt 獲得的 Ansible 教程,我已經創建了 3 個 Ubuntu 容器 (lxc) 並讓它們啟動並執行。我也可以登錄到他們每個人。
我已經通過以下方式下載了 Ansible:
git clone ansible-git-url
然後獲取了它。我的工作設置如下:
/home/myuser/code
在這裡我有 2 個文件夾:(ansible
整個 git repo)ansible_course
,我有 2 個文件:ansible.cfg
和inventory
.
inventory
包含以下內容:[allservers] 192.168.122.117 192.168.122.146 192.168.122.14 [web] 192.168.122.146 192.168.122.14 [database] 192.168.122.117
並
ansible.cfg
包含:[root@localhost ansible_course]# cat ansible.cfg [defaults] host_key_checking = False
然後從這條路徑:
/home/myuser/code/ansible_course
我嘗試執行以下操作:$ ansible 192.168.122.117 -m ping -u root
教程中的那個人就是這樣做的,他從 獲得了成功響應
ping
,但我收到以下錯誤消息:[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source [WARNING]: No inventory was parsed, only implicit localhost is available [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all' [WARNING]: Could not match supplied host pattern, ignoring: 192.168.122.117
在教程中,他從未說過我需要做一些特別的事情來提供
inventory
原始碼,他只是說我們需要使用inventory
我們擁有的 Linux 容器的 IP 地址創建一個文件。我的意思是,他沒有說我們需要執行命令來設置它。
您可能想告訴 ansible 主機文件在哪裡
ansible.cfg
,例如[defaults] inventory=inventory
假設
inventory
實際上是您的庫存文件。
背景
ansible
您可以依賴ansible.cfg
文件來指定文件的名稱,也inventory
可以像這樣手動指定它:明確告知
$ ansible -i inventory -m ping -u root 192.168.122.117
通過 ansible.cfg 隱式告知
$ ansible -m ping -u root 192.168.122.117
顯式
對於您明確告知
ansible
要使用哪個清單文件的方法,該用法顯示了以下描述:從
ansible
用法上看:-i INVENTORY, --inventory=INVENTORY specify inventory host path or comma separated host list.
隱式
對於隱式方法,您必須更精通 Ansible 才能意識到它是這樣工作的。您可以使用
ansible
’s 詳細模式來查看更多預設情況下正在執行的操作:$ ansible -vvv -m ping -u root box-101 ... ... config file = /Users/user1/somedir/ansible.cfg ... ... Using /Users/user1/somedir/ansible.cfg as config file Parsed /Users/user1/somedir/inventory inventory source with ini plugin META: ran handlers Using module file /Users/user1/projects/git_repos/ansible/lib/ansible/modules/system/ping.py ... ... box-101 | SUCCESS => { "changed": false, "invocation": { "module_args": { "data": "pong" } }, "ping": "pong" } ... ...
在上面我正在ping box-101。您可以看到這些行顯示
ansible.cfg
正在使用哪個文件:config file = /Users/user1/somedir/ansible.cfg Using /Users/user1/ansible.cfg as config file
並通過這個
ansible.cfg
文件最終清點哪些:Parsed /Users/user1/somedir/inventory inventory source with ini plugin
正是這些選項將 ansible 指向
inventory
文件:$ cat ansible.cfg ... [defaults] inventory = inventory ...