似乎ansible假定ansible.cfg文件存在于当前工作目录中,因此当您尝试调用存在于子目录中的playbook时,将无法加载角色和其他内容。
是否可以将playbook存储在不同的目录中?
请注意,ansible.cfg是源代码的一部分。
答案 0 :(得分:2)
Per the documentation,Ansible将按以下顺序查找配置文件:
因此,如果您想从备用目录中调用playbooks,可以将ANSIBLE_CONFIG
指向相应的ansible.cfg
。
答案 1 :(得分:0)
我遇到了同样的问题。我想把所有的剧本放在一个单独的目录中,而不是让它们在我的基本目录中飞来飞去。 我的基本目录在git控件下,它包含一个本地ansible.cfg文件,其中包含以下内容:
[defaults]
inventory=hosts
roles_path=roles
通过设置 roles_path ansible,查找基目录中的roles目录而不是playbooks的子目录。 请注意,如果您的另一个目录中包含您在剧本中引用的文件,则必须按照以下条件对其进行限定:
- name: copy nagios config files
copy:
src: ../files/nagios3/config/
dest: /etc/nagios3/conf.d/
owner: root
group: root
notify: reload nagios
在这种情况下,playbook位于与 files 目录相同级别的 playbooks 子目录中。 就像那样:
.
├── README
├── ansible.cfg
├── files
│ └── ...
├── host_vars
│ └── ...
├── hosts
├── playbooks
│ └── ...
├── roles
│ └── ...
└── templates
└── ...