Ansible全局加密变量

时间:2014-03-26 04:52:50

标签: ansible ansible-playbook

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

基本上我不想在任何地方复制var_files,如下所示:

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

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

2 个答案:

答案 0 :(得分:9)

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

group_vars目录可以相对于(优先级递减):剧本,库存文件或/ etc / ansible。

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

  • group_vars/all/settings.yml表示正常变量
  • group_vars/all/encrypted.yml为拱形的。

如果您不喜欢我选择的文件名,请选择您自己的文件名,但这并不重要,只要它在all组下。

答案 1 :(得分:0)

没有。你的例子中有一个文件中的两个Ansible剧本,并且Ansible中的抽象级别不高(高于剧本)。

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

运行它

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