嗨,
经过几天的挣扎,我决定在这里写下我的问题。
我有一个ansible(2.7)任务,该任务只有一个变量,该变量指向使用文件查找插件的主机变量。
对于一台主机,这是可行的,但是我有6台主机,其中查找文件中的值对于每台主机都应该是不同的。
您可以在查找的文件内传递变量吗?
我是ansible的新手,没有完全掌握它。
以前有人遇到过吗?
Task:
- name: Copy the file to its directory
template:
src: file.conf
dest: /path/to/file
vars:
file_contents: "{{file_configuration}}"
-----
hostvar file:
file_configuration:
- "{{lookup('file', './path/to/file') | from_yaml}}"
----
file that is looked up:
name: {{ value that should be different per host }}
driver:
long_name: unchanged value.
答案 0 :(得分:0)
您应该有6个host_vars
文件,每个主机一个。在该host_var文件中,设置所需的值。
例如
host1.yml的内容
---
my_value: something
host2.yml的内容
---
my_value: else
Ansible自动看到host_var
文件夹。它会在该文件夹中查找并搜索与剧本中的主机完全匹配的文件。
因此,请确保您的host_var / 文件名 .yml与您播放中的主机名匹配!
如果存在匹配项,则它将对该特定主机使用该.yml文件。