Linux企业实战-ansible(53)角色

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

如果我们在写playbook的时候不给定义变量

首先我们设置如下两个文件均调用同一个文件

均使用的默认变量

这是因为我们将ansible.conf下列操作打开

如果我们没有打开的话那么结果都是www.westos.org

默认情况下我们无法多次调用同一个角色

如果我们调用两遍也只会显示一遍

如果我们做如下操作,我们新建衣蛾yml文件然后里面写上allow——duplicates:true就可以多次调用

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

当我们需要传递参数的时候参数不同我们需要多次调用

vars目录:角色会使用到的变量可以写入到此目录中的
main.yml文件中,看到这里你肯定会有疑问,vars/main.yml文件和defaults/main.yml文件的区别在哪里呢?区别就是,defaults/main.yml文件中的变量的优先级是最低的,而vars/main.yml文件中的变量的优先级非常高,如果你只是想提供一个默认的配置,那么你可以把对应的变量定义在defaults/main.yml中,如果你想要确保别人在调用角色时,使用的值就是你指定的值,则可以将变量定义在vars/main.yml中,因为定义在
vars/main.yml文件中的变量的优先级非常高,所以其值比较难以覆盖。

如果我们定义的值别人不想用也可以通过如下操作进行覆盖

当我们进行操作时不给变量值会赋予默认的值

我们也可以给值

我们也可以通过handler进行操作