3

假设我只有一个 Vault 文件,其中包含一堆我想保密的变量。有没有办法在 Ansible 中加载文件一次,然后所有角色和所有任务都可以全局访问?

基本上我不喜欢到处复制 var_files,像这样:

- hosts: webserver
  var_files: encrypted.yml
  roles: ....

- hosts: dbserver
  var_files: encrypted.yml
  roles: ....  
4

2 回答 2

9

您可以使用group_vars,它们是根据主机所属的组自动加载的变量文件。所有主机都是该all组的成员,因此您可以将公共变量放在group_vars/all.

group_vars 目录可以相对于(优先级降低):剧本、库存文件或 /etc/ansible.

如果要分离加密和未加密的公共变量,也可以将其用作目录:

  • group_vars/all/settings.yml对于正常变量
  • group_vars/all/encrypted.yml对于拱形的。

如果你不喜欢我选择的文件名,选择你自己的,没关系,只要它在all组下。

于 2014-05-26T15:24:05.567 回答
0

不。您在示例中拥有的是一个文件中的两个 Ansible 剧本,并且 Ansible 中没有更高级别的抽象(高于剧本)。

我真的不知道这真的有效!但我相信每个文件只有一个剧本只是一个普遍的好习惯。毕竟,当你运行它时,你运行它ansible-playbook而不是ansible-playbooks

这与在一个文件中包含两个剧本无关,但如果您担心安全性,您应该考虑使用Ansible Vault(1.5 中的新功能)

于 2014-03-29T06:08:11.003 回答