我有两个模板的工作流。首先,我将新主机添加到我的hosts.ini文件中:
- name: Add to host file
blockinfile:
path: /var/lib/awx/projects/_52__glusterfs/hosts.ini
block: |
gluster1 ansible_user= ansible_host=
第二,我等待主人的到来:
---
- name: Weit befor all hosts ssh up
hosts: localhost
tasks:
- name: Test 1
shell: cat hosts.ini
- name: Test 2
shell: cat /var/lib/awx/projects/_52__glusterfs/hosts.ini
- name: Test 3
shell: cat ansible.cfg
- name: Wait for hosts up
wait_for:
host: gluster1
port: 22
但我错了:
[WARNING]: provided hosts list is empty, only localhost is available. Note
that the implicit localhost does not match 'all'
因此,模板2中测试的输出是(伪代码输出):
shell: cat hosts.ini
>>>
[gluster]
shell: cat /var/lib/awx/projects/_52__glusterfs/hosts.ini
>>>
[gluster]
gluster1 ansible_user= ansible_host=
shell: cat ansible.cfg
>>>
[defaults]
inventory = /var/lib/awx/projects/_52__glusterfs/hosts.ini
host_key_checking = false
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o UserKnownHostsFile=/dev/null
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml
为什么在我的执行目录中有空的hosts.ini,为什么在/var/lib/awx/projects/_52__glusterfs/hosts.ini
文件中使用它而不是D6
?
发布于 2019-11-29 07:46:42
听起来,一旦你更新了清单,你就需要再次收集事实。你开始的时候
首先,我将新主机添加到我的hosts.ini文件中
但是,直到您告诉Ansible库存发生了变化,才会通知它这一。如果这是在播放期间完成的,则应该使用添加_主机模块:
- name: Add host gluster1 to group gluster
add_host:
name: gluster1
groups: gluster
这将更新Ansible的事实,即它将与新主机联系并查找有关它的一切,现在它知道它在gluster
组中。
请注意,然后您应该开始一个新的游戏,针对这个主机:
---
- name: First play to build hosts
hosts: localhost
tasks:
- name: Add host gluster1 to group gluster
add_host:
name: gluster1
groups: gluster
- name: Persist inventory
blockinfile:
path: /var/lib/awx/projects/_52__glusterfs/hosts.ini
block: |
gluster1 ansible_user= ansible_host=
state: present
- name: Second play to do gluster things
hosts: gluster # This group now exists in Ansible's in-memory inventory
tasks:
- name: Wait for hosts up
wait_for:
host: gluster1
port: 22
- name: Be awesome
debug:
msg: "Awesomeness Achieved"
发布于 2019-11-28 18:53:54
在您的配置文件中有如下内容:
[inventory]
enable_plugins = host_list, script, auto, yaml, ini, toml
你真的需要这些插件吗?如果不是,他们只会给你的处理增加时间。其中之一成功地将您的库存文件解析为空库存的可能性也很小。文档指出,
一旦一个库存插件成功地解析了一个源,任何剩余的清单插件都会被跳过。
如果你不需要那些插件,我会评论这一行(或者重做它以删除一些项目)。
另外,您确定它使用的是本地hosts.ini
吗?命令ansible-config
可能有助于确认这一点。
关于您的第一个问题(“为什么我在执行目录中有空hosts.ini”),您的剧本中没有任何指向正在创建或修改该文件的内容。你是想修改它吗?还是你不知道它是怎么创造出来的?问题还不清楚。
https://devops.stackexchange.com/questions/9893
复制相似问题