ansible的roles(角色)功能

ansible的roles(角色)功能

1.角色的相关概念

角色集合,实际是相当于多种不同的tasks的文件的集中存储在某个目录下,该目录就是角色集合就是roles(默认是/etc/ansible/roles/目录,可通过ansible的配置文件来调整默认的角色目录),在该目录下有很多子目录,就是一个一个的不同角色目录,而在每个角色目录下就会有分别有具体的功能的实现

如:/etc/ansible/roles/  此为角色集合,目录下有自定义的各个子目录,如

mysql/子目录,也就是mysql角色

httpd/子目录,也就是httpd角色

nginx/子目录,也就是nginx角色

2.角色的目录结构

    每个角色的定义,以特定的层级目录结构进行组织:以mysql/子目录(mysql角色)为例:(每种角色的目录结构都一样)
    files/子目录
        存放由copy或script等模块调用的文件
    templates/子目录
        存放template模块查找所需要的模板文件的目录,如之前示例中用于给被管理主机提供nginx的模板配置文件
    tasks/子目录
        任务存放的目录,至少应该包含一个main.yml的文件,文件中定义了需要执行的任务清单,该目录下也可以有
        其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来
    handlers/子目录
        存放相关触发执行器的目录,至少应该包含一个main.yml的文件,文件中定义了触发器的任务清单,该目录下
        也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来
    vars/子目录
        变量存放的目录,至少应该包含一个main.yml的文件,文件中定义了相关的变量及其值,该目录下也可以有其
        他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来
    meta/   
        用于存放此角色元数据,至少应该包含一个main.yml的文件,文件中定义当前角色的特殊设定及其依赖关系,
        该目录下也可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来
    default/
        默认变量存放的目录,至少应该包含一个main.yml的文件,文件中定义了此角色使用的默认变量,该目录下也
        可以有其他.yml文件,但是需要在main.yml文件中用include指令将其他.yml文件包含进来

3.在playbook中调用角色方法一

在某些主机上完成某些任务:此时就需要调用相关的角色

 如:(相关示例详见实战部分)
        - hosts: webserver
          remote_user: root
          roles:
          - mysql
          - httpd

可以只调用一个角色,也可以调用多个角色 

ansible会到角色集合的目录(默认/etc/ansible/roles/ 目录)去找 roles:调用的角色,也就是在角色集合 目录下找同名的子目录,将子目录下的所有代码运行一遍

4.在playbook中调用角色方法二 

如:(相关示例详见实战部分)
        - hosts: webserver
          remote_user: root
          roles:
          - {role: mysql,var1: value1,var2: value2,...}
          - {role: httpd,var3: value3,var4: value4,...}

表示调用两个角色,(role键用于指定调用的角色名称,后续的key/value用于传递变量给角色,每个键后面对应的值之间有空格) 一个角色是mysql,向该角色传递变量var1,其值为value1,... 调用另一个角色httpd,向该角色传递变量var3,其值为value3,...

5.在playbook中调用角色时,实现条件判断 

如:(相关示例详见实战部分)
        - hosts: webserver
          remote_user: root
          roles:
          - {role: mysql,var1: value1,when:ansible_distribution_major_version=='7'}
          - {role: httpd,when:ansible_distribution_major_version=='6'}

表示当ansible_distribution_major_version的值为7时,调用mysql角色,传递变量var1,变量值为value1 表示当ansible_distribution_major_version的值为6时,调用httpd角色 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lisanmengmeng

蚊子腿也是肉

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值