无法访问Ansible中本地主机旁边的主机

时间:2017-03-11 03:57:36

标签: 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

当我进入playbooks文件夹并运行ansible-playbook hostname.yml时,它会给我一个警告说

[WARNING]: provided hosts list is empty, only localhost is available


PLAY RECAP *********************************************************************

是否存在阻止Playbook访问库存文件的任何内容?

1 个答案:

答案 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
  •