tasks目录:角色需要执行的主任务文件放置在此目录中,默认的主任务文件名是main.yml.当调用角色时,默认会执行main.yml的任务
handlers目录:当角色需要调用handlers时,默认会在此目录中的main.yml文件中查找对应的handler
defaults目录:角色使用的变量可以写入到此目录中的main.yml文件中,通常,defaults/main.yml文件中的变量都用于设置默认值,以便在你没有设置对应变量值时,变量有默认的值可以使用,定义在defaults/main.yml文件中的变量的优先级是最低的。

vars目录:角色会使用的变量可以写入到此目录中的main.ym文件中。vars/main.yml文件和defaults/main.yml文件的区别是defaults/main.yml文件中的变量的优先级是最低的,而vars/main.yml文件中的变量的优先级是非常高的,如果只是想提供一个默认的设置,可以把对应的变量定义在defaults/main.yml中,如果想确保别人在调用角色的,使用的值是你指定的值,则可以把变量定义在vars/main.yml中。因为在此文件中的变量的优先级非常高,所以其值难以被覆盖。

meta目录:如果你想要赋予这个角色一些元数据,则可以将元数据写入到meta/main.yml文件中,这些元数据用于描述角色的相关属性,比如作者信息,角色主要作用等等。
template目录:角色相关的模板可以放置在此目录中,当使用角色相关的模板时,如果没有指定路径,则默认从此目录中查找对应名称模板文件。
files目录:角色可能会用到的一些其他文件放置在此目录中,比如,当你定义nginx角色时,需要配置https,那么相关的证书文件可以放置在此目录中

ansible 如果目录存在 ansible vars_files_元数据


ansible 如果目录存在 ansible vars_files_优先级_02


正常调用的时候:

ansible 如果目录存在 ansible vars_files_元数据_03


ansible 如果目录存在 ansible vars_files_元数据_04


不传入参数的时候,使用的是默认的值,所以输出linux

ansible 如果目录存在 ansible vars_files_优先级_05


ansible 如果目录存在 ansible vars_files_优先级_06


测试:

ansible 如果目录存在 ansible vars_files_优先级_07


ansible 如果目录存在 ansible vars_files_元数据_08


ansible 如果目录存在 ansible vars_files_元数据_09


打开角色变量配置(此时无值传递的时候才会使用默认的值)

ansible 如果目录存在 ansible vars_files_元数据_10


ansible 如果目录存在 ansible vars_files_元数据_11


ansible 如果目录存在 ansible vars_files_优先级_12

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_13


将一个角色同时调用两次

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_14


此时只能输出一次:(默认情况下只会执行一次)

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_15


解决办法:

ansible 如果目录存在 ansible vars_files_默认值_16


将该属性设置为ture,此时就可以重复的调用

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_17


ansible 如果目录存在 ansible vars_files_优先级_18


在以下两个目录下都定义了变量,并且传递了值

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_19


ansible 如果目录存在 ansible vars_files_元数据_20


ansible 如果目录存在 ansible vars_files_元数据_21


ansible 如果目录存在 ansible vars_files_默认值_22


在这三者中,vars目录的变量值优先级最高,其他的值无法进行覆盖:

ansible 如果目录存在 ansible vars_files_优先级_23


命令行的优先级比前面的更高:

ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_24


ansible 如果目录存在 ansible vars_files_默认值_25


ansible 如果目录存在 ansible vars_files_ansible 如果目录存在_26


将jinja2的变量的默认值放到下面的目录:

ansible 如果目录存在 ansible vars_files_元数据_27


ansible 如果目录存在 ansible vars_files_默认值_28


ansible 如果目录存在 ansible vars_files_元数据_29


ansible 如果目录存在 ansible vars_files_元数据_30


ansible 如果目录存在 ansible vars_files_元数据_31


ansible 如果目录存在 ansible vars_files_默认值_32


ansible 如果目录存在 ansible vars_files_默认值_33


ansible 如果目录存在 ansible vars_files_默认值_34