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,那么相关的证书文件可以放置在此目录中
正常调用的时候:
不传入参数的时候,使用的是默认的值,所以输出linux
测试:
打开角色变量配置(此时无值传递的时候才会使用默认的值)
将一个角色同时调用两次
此时只能输出一次:(默认情况下只会执行一次)
解决办法:
将该属性设置为ture,此时就可以重复的调用
在以下两个目录下都定义了变量,并且传递了值
在这三者中,vars目录的变量值优先级最高,其他的值无法进行覆盖:
命令行的优先级比前面的更高:
将jinja2的变量的默认值放到下面的目录: