如何将ansible playbooks存储在不同的目录中,但仍可以调用它们?

时间:2016-04-22 15:24:31

标签: ansible ansible-playbook

似乎ansible假定ansible.cfg文件存在于当前工作目录中,因此当您尝试调用存在于子目录中的playbook时,将无法加载角色和其他内容。

是否可以将playbook存储在不同的目录中?

请注意,ansible.cfg是源代码的一部分。

2 个答案:

答案 0 :(得分:2)

Per the documentation,Ansible将按以下顺序查找配置文件:

  • ANSIBLE_CONFIG(环境变量)
  • ansible.cfg(在当前目录中)
  • .ansible.cfg(在主目录中)
  • /etc/ansible/ansible.cfg

因此,如果您想从备用目录中调用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
    └── ...