ansible:角色的多个var文件?

ansible:角色的多个var文件?,ansible,Ansible,在我找到的所有ansible文档中,[role]/vars/main.yml文件被引用为角色变量的位置 使用[role]/defaults/main.yml可以进行一些定制,然后可以被[role]/vars/main.yml覆盖 如果我想解决许多场景,比如说基于一个主变量加载一组变量,然后将分组的变量放入每个文件中,如 [role]/vars/main.yml [role]/vars/scenario1.yml [role]/vars/scenario2.yml [role]/vars/scen

在我找到的所有ansible文档中,
[role]/vars/main.yml
文件被引用为角色变量的位置

使用
[role]/defaults/main.yml
可以进行一些定制,然后可以被
[role]/vars/main.yml
覆盖

如果我想解决许多场景,比如说基于一个主变量加载一组变量,然后将分组的变量放入每个文件中,如

[role]/vars/main.yml
[role]/vars/scenario1.yml
[role]/vars/scenario2.yml
[role]/vars/scenario3.yml
[role]/vars/scenario4.yml
换句话说,
[role]/vars
目录包含的不仅仅是
main.yml
文件,还有什么用处吗


具体的挑战是,使用公钥定义用户集,因此根据我是哪台机器,创建适当的用户帐户vars/main.yml的作用并不是覆盖
defaults/main.yml
中定义的变量。事实上,这实际上是适得其反的,因为
vars/main.yml
中定义的变量具有相当高的值,并且很难覆盖,而您通常希望
defaults/main.yml
中的变量易于由用户修改

关于
vars
文件夹,它包含按约定定义特定于您的角色的变量的文件。但是默认情况下只加载
vars/main.yml

同时,当您从角色中
包含变量时,该文件夹(如您的剧本旁边的
vars
文件夹,如果您有)位于搜索路径上。因此,如果我以您为例,您可以轻松地
在您的角色中的某个位置包含变量:scenario1.yml
,甚至
包含变量:“scenario{{scenario\u number}}}.yml”
,如果您动态地得到它的话

免责声明:我是以下示例中角色的维护者

下面是一个来自中国的真实例子

正如您所看到的,此角色有一个包含多个文件但没有
default.yml
。因此,默认情况下不加载任何角色变量。在需要时动态加载这些文件

有两个文件与角色支持的不同操作系统系列相关:和。根据需要在中加载它们,并执行以下任务:

-name:包括操作系统特定的变量。
包括变量:“configure-{{ansible_os_family}}.yml”

或者,您可以查看也可用于此类场景的。我认为您需要使用
include\u vars
来包含基于条件语句的选择文件。谢谢,解释得很好,所以我得到了所需的。