有谁知道如何将剧本放入文件夹中,但共享相同的角色、group_vars 以及通常位于根目录的其他内容?
这就是我想要的:
root_dir:
- group_vars
- roles
- inventory
- playbooks
- my_playbook.yml
- site.yml
- deploy.yml
我们的根目录现在变得相当大,我想将一些剧本分成自己的文件夹(如上面的 playbooks/ 所示)。一个相同的小型 playbook 在目录(例如 playbooks/)与根目录中无法运行,因为它不会从 group_vars 中获取内容。
我可以部分解决这个问题,并在我的剧本/中运行一个剧本/
目录:
- hosts: host_group
sudo: true
gather_facts: false
vars_files:
- ../group_vars/all/main.yml
这会获取 main.yml 中定义的变量。但是,我不清楚这是否会添加 group_vars/ 中定义的组变量,而不是明确指定的 ../group_vars/。
Thanks!
Ansible 将会接听group_vars
没有明确说明路径:
这是示例目录结构/tmp/ansible
:
/tmp/ansible
├── group_vars
│ └── test_group.yml
├── inventory
├── playbooks
│ └── foo.yml
└── site.yml
库存文件:
[test_group]
localhost
主要剧本site.yml
:
# site.yml
---
- include: playbooks/foo.yml
二级剧本foo.yml
:
---
- hosts: localhost
tasks:
- debug: var=foo
组变量test_group.yml
:
foo: bar
以下是执行辅助剧本的所有方法:
-
使用相对路径从根文件夹/tmp/ansible
:
ansible-playbook -i inventory playbooks/foo.yml -c local
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
"var": {
"foo": "bar"
}
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
-
来自父路径中库存的 Playbooks 子文件夹/tmp/ansible/playbooks
:
ansible-playbook -i ../inventory foo.yml -c local
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
"var": {
"foo": "bar"
}
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0
正如我们在上面的例子中看到的,ansible-playbook将根据路径寻找变量inventory file
或执行 ansible 的文件夹。无需额外工作即可分离 Playbook。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)