假设我只有一个 Vault 文件,其中包含一堆我想保密的变量。有没有办法在 Ansible 中加载文件一次,然后所有角色和所有任务都可以全局访问?
基本上我不喜欢到处复制 var_files,像这样:
- hosts: webserver
var_files: encrypted.yml
roles: ....
- hosts: dbserver
var_files: encrypted.yml
roles: ....
假设我只有一个 Vault 文件,其中包含一堆我想保密的变量。有没有办法在 Ansible 中加载文件一次,然后所有角色和所有任务都可以全局访问?
基本上我不喜欢到处复制 var_files,像这样:
- hosts: webserver
var_files: encrypted.yml
roles: ....
- hosts: dbserver
var_files: encrypted.yml
roles: ....
您可以使用group_vars,它们是根据主机所属的组自动加载的变量文件。所有主机都是该all
组的成员,因此您可以将公共变量放在group_vars/all
.
group_vars 目录可以相对于(优先级降低):剧本、库存文件或 /etc/ansible.
如果要分离加密和未加密的公共变量,也可以将其用作目录:
group_vars/all/settings.yml
对于正常变量group_vars/all/encrypted.yml
对于拱形的。如果你不喜欢我选择的文件名,选择你自己的,没关系,只要它在all
组下。
不。您在示例中拥有的是一个文件中的两个 Ansible 剧本,并且 Ansible 中没有更高级别的抽象(高于剧本)。
我真的不知道这真的有效!但我相信每个文件只有一个剧本只是一个普遍的好习惯。毕竟,当你运行它时,你运行它ansible-playbook
而不是ansible-playbooks
这与在一个文件中包含两个剧本无关,但如果您担心安全性,您应该考虑使用Ansible Vault(1.5 中的新功能)