我是自学习ansible,并在下面的文件结构与我的定制ansible.cfg
和库存文件:
---ansible (Folder) <---Working level
---ansible.cfg (Customized cfg)
---dev (Inventory File)
---playbooks (Folder) <--Issue level
---hostname.yml
ansible.cfg
[defaults]
inventory=./dev
dev
[loadbalancer]
lb01
[webserver]
app01
app02
[database]
db01
[control]
control ansible_connection=localansible
hostname.yml
---
- hosts: all
tasks:
- name: get server hostname
command: hostname
我的问题是,当我在ansible-playbook playbooks/hostname.yml
级别上运行ansible (Folder)
时,一切正常。
PLAY [all] *********************************************************************
TASK [setup] *******************************************************************
ok: [control]
ok: [app01]
ok: [db01]
ok: [lb01]
ok: [app02]
TASK [get server hostname] *****************************************************
changed: [db01]
changed: [app01]
changed: [app02]
changed: [lb01]
changed: [control]
PLAY RECAP *********************************************************************
app01 : ok=2 changed=1 unreachable=0 failed=0
app02 : ok=2 changed=1 unreachable=0 failed=0
control : ok=2 changed=1 unreachable=0 failed=0
db01 : ok=2 changed=1 unreachable=0 failed=0
lb01 : ok=2 changed=1 unreachable=0 failed=0
但是,当我进入剧本文件夹并运行ansible-playbook hostname.yml
时,它会给我警告说
[WARNING]: provided hosts list is empty, only localhost is available
PLAY RECAP *********************************************************************
有什么东西可以阻止剧本访问库存文件吗?
发布于 2017-03-11 04:20:24
Ansible在搜索配置文件ansible.cfg
时不遍历父目录。如果要使用自定义配置文件,则需要将其放置在当前目录中,然后从该目录运行可执行文件,或定义指向该文件的环境变量ANSIBLE_CONFIG
。
在您的示例中:将目录更改为ansible
并执行是正确的方法:
ansible-playbook playbooks/hostname.yml
我不知道您从哪里得到的想法: Ansible将检查父目录中的配置文件-- 文档是明确的:
可以在配置文件中进行并使用更改,该配置文件将按以下顺序处理:
ANSIBLE_CONFIG
(环境变量)ansible.cfg
(在当前目录中).ansible.cfg
(在主目录中)/etc/ansible/ansible.cfg
https://stackoverflow.com/questions/42731172
复制相似问题