可靠配置:路径不是相对于Ansible.cfg的



整体上下文

我正试图将所有安全方面的敏感信息从一组易解释的剧本和角色的修订控制树中分离出来。敏感信息是比如我们硬件的实际IP地址,变成用户名,初始用户密码等等。这些变量以某种方式自然地出现在两个地方。一个是CCD_ 1和另一个位于可解析repo的根的CCD_。

ansible.cfg

我已经将ansible配置文件移到了一个单独的目录中。它包含到vault密码的相对路径,以及几个vault_id文件。,我是这样操作的

ANSIBLE_CONFIG=/path/to/ansible.cfg ansible-playbook playbook.yaml

我的期望是ansible将尝试定位相对于ansible.cfg的机密(包含在ansible.cfg中……例如vault_identity_list(的路径。推理基于Ansible 2.4移植指南中的一段内容。

定义的所有相对路径都是相对于ansible.cfg文件本身的。以前,它们因环境而异。新的行为应该更可预测。

事实并非如此,仍将根据执行剧本的目录(或者,可能是包含剧本的目录,对此不确定(查找密码文件,而不是相对于ansible.cfg

我想知道是否可以让Ansible在其他地方查找密码文件(即使用环境变量(。

我目前的解决方案是将所需的文件软链接到剧本的目录中。

可靠版本:2.10

您在移植指南中误解的是,在中

定义的所有相对路径都是相对于ansible.cfg文件本身的。

他们的意思是

[在ansible.cfg文件中]定义的所有相对路径都是相对于ansible.cfg文件本身的。

当移植指南语句在实际配置文件文档的上下文中时,您也可以更清楚地理解这一点。


如果您想获取相对于所用配置文件位置的文件,您可以使用特殊变量ansible_config_file,然后使用dirname过滤器获取其目录。

例如:

- debug:
msg: "{{ ansible_config_file | dirname }}/foo.txt"

使用运行时

ANSIBLE_CONFIG=/path/to/ansible.cfg ansible-playbook playbook.yml 

将产生:

ok: [localhost] => 
msg: /path/to/foo.txt

最新更新