我是自我学习的,并且使用我的自定义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
当我进入playbooks文件夹并运行ansible-playbook hostname.yml
时,它会给我一个警告说
[WARNING]: provided hosts list is empty, only localhost is available
PLAY RECAP *********************************************************************
是否存在阻止Playbook访问库存文件的任何内容?
答案 0 :(得分:0)
Ansible不会遍历父目录以搜索配置文件ansible.cfg
。如果要使用自定义配置文件,则需要将其放在当前目录中并从那里运行Ansible可执行文件,或者定义指向该文件的环境变量ANSIBLE_CONFIG
。
在您的情况下:将目录更改为ansible
并执行是正确的方法:
ansible-playbook playbooks/hostname.yml
我不知道你从哪里知道Ansible会检查父目录中的配置文件 - documentation是明确的:
可以在配置文件中进行更改,并按以下顺序处理:
ANSIBLE_CONFIG
(环境变量)ansible.cfg
(在当前目录中).ansible.cfg
(在主目录中)/etc/ansible/ansible.cfg