将常见的set_facts变量传递给多个剧本

时间:2020-10-19 17:18:25

标签: ansible

我有多个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变量动态传递给其他人?

1 个答案:

答案 0 :(得分:2)

使用set_fact在剧本运行时设置一个变量。因此,可以使用文件group_vars\all.yml来设置清单中所有主机的变量,而不必使用set_fact。 all是所有主机的默认组。

此文件的内容可能是:

hostname: user
randomvar: random

从现在开始,您所有的剧本都可以使用这些变量。而且您只有一个地方可以更改它们。