我有多个Ansible roles
,每个都有自己的playbook
,如以下结构所示:
roles/
|-- abc/
-- def/
-- hij/
-- someother/
common.yml
abc.yml
def.yml
hij.yml
但是,所有剧本都具有set_facts
模块,该模块在每个剧本中设置相同的变量。即:因此,如果abc.yml
剧本具有以下内容,则所有其他剧本都完全相同。
- hosts: all
tasks:
- set_fact:
hostname: "user"
randomvar: "random"
问题是,如果set_facts
中的一个变量需要更新,则意味着需要在每个剧本中完成。有没有办法创建单个剧本并将set_facts
变量动态传递给其他人?
答案 0 :(得分:2)
使用set_fact在剧本运行时设置一个变量。因此,可以使用文件group_vars\all.yml
来设置清单中所有主机的变量,而不必使用set_fact。 all
是所有主机的默认组。
此文件的内容可能是:
hostname: user
randomvar: random
从现在开始,您所有的剧本都可以使用这些变量。而且您只有一个地方可以更改它们。