我正在关注我从 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
,例如假设
inventory
实际上是您的库存文件。背景
明确告知 通过 ansible.cfg 隐式告知ansible
您可以依赖ansible.cfg
文件来指定文件的名称,也inventory
可以像这样手动指定它:显式
对于您明确告知
ansible
要使用哪个清单文件的方法,该用法显示了以下描述:从
ansible
用法上看:隐式
对于隐式方法,您必须更精通 Ansible 才能意识到它是这样工作的。您可以使用
ansible
's 详细模式来查看更多默认情况下正在执行的操作:在上面我正在ping box-101。您可以看到这些行显示
ansible.cfg
正在使用哪个文件:并通过这个
ansible.cfg
文件最终清点哪些:正是这些选项将 ansible 指向
inventory
文件: