2017-06-16 90 views
1

我使用VirtualBox運行16.04 Ubuntu桌面機器。該VM安裝了Ansible 2.4.0。我試圖運行一個特別的,有說服力的命令來證明它是有效的(我在做一個在線課程)。爲了模擬一個小型服務器場,我用LXC(Linux的containters),並有三個人正在運行:Ansible指定直接主機的ad-hoc命令 - 沒有主機匹配

[email protected]:/home/tomasz/ansible# lxc-ls --fancy 
NAME STATE AUTOSTART GROUPS IPV4  IPV6 
db1 RUNNING 0   -  10.0.3.248 -  
web1 RUNNING 0   -  10.0.3.110 -  
web2 RUNNING 0   -  10.0.3.226 - 

我可以ssh到這些服務器,但是當我嘗試運行一次性ansible命令,例如:

[email protected]:/home/tomasz/ansible# ansible 10.0.3.248 -m ping -u ubuntu 

我收到以下錯誤,沒有庫存已匹配:

[WARNING]: No inventory was parsed, only implicit localhost is available 

[WARNING]: provided hosts list is empty, only localhost is available 

[WARNING]: Could not match supplied host pattern, ignoring: 10.0.3.248 

[WARNING]: No hosts matched, nothing to do 

我百思不得其解,說實話,並作爲Ansible新手,我不知道如何將此推進。似乎這樣一個簡單的問題,在這裏沒有遇到任何類似的東西在stackoverflow。非常感謝任何提示!

+0

_I正在做一個在線課程。該課程中是否有一章叫做「庫存」? –

+0

是的,有,但在這個例子中,我爲特定主機運行一次性的Ansible命令,正如你所看到的,我直接在命令中提供這個主機的IP地址。在這種情況下,根據我的理解,庫存文件是無關緊要的。 –

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[超級用戶](http://superuser.com/)或[Unix&Linux堆棧交換](http://unix.stackexchange.com/)會是一個更好的地方。 – jww

回答

0

我直接在命令中提供該主機的IP地址。在這種情況下,根據我的理解,庫存文件是無關緊要的。

錯誤。您指定host pattern,它應該與您廣告資源中的主機相匹配。庫存是Ansible必須的。

有一個選項可以指定「內聯」庫存。對於您的情況:

ansible all -i '10.0.3.248,' -m ping -u ubuntu 
在這個例子中

:主圖案是all,庫存是一臺主機10.0.3.248的列表。
最後注意逗號 - 重要的是,這種方式Ansible知道它是內聯庫存,而不是文件路徑。

+0

感謝您的回覆。這是一個遺憾,我不能在這裏粘貼一個截圖。我想告訴你,運行該課程的人(tutoriaLinux YT頻道)完全符合我所問的內容。他輸入:ansible 10.0.3.248 -m ping -u ubuntu並獲得Ansible ping響應。 –

+0

要完成此確切命令,您應該定義庫存。 –

+0

此外,在Ansible文檔的主圖案部分,它說: 也可以解決特定的主機或名稱設置主機: one.example.com one.example.com:two.example .com 192.0.2.50 192.0.2。* 其中,所有應有的尊重,似乎是與你所寫的相反。 –