2017-06-16 89 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。* 其中,所有应有的尊重,似乎是与你所写的相反。 –