首页 > 其他 > 详细

Ansible 三: Role

时间:2020-06-04 20:59:12      阅读:41      评论:0      收藏:0      [点我收藏+]

前面的playbook适应用小型的工程,当我们维护的有多个工程的时候,我们希望工程分开执行,且每个工程都有自己的配置。这种大型工程就要用到Role的功能了。

Role的功能依赖于目录命名规则和目录摆放,其实就是把不同的功能分发到不同目录下的yml文件去。

roles:          <--所有的角色必须放在roles目录下,这个目录可以自定义位置,默认的位置在/etc/ansible/roles。这个位置也是可以自己改变的

  project:      <---具体的角色项目名称,比如nginx、tomcat、php

    files:     <--用来存放由copy模块或script模块调用的文件。

    templates: <--用来存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。

    tasks:     <--此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。

      main.yml

    handlers:  <--此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作。

      main.yml

    vars:      <--此目录应当包含一个main.yml文件,用于定义此角色用到的变量。

      main.yml

    defaults:  <--此目录应当包含一个main.yml文件,用于为当前角色设定默认变量。

      main.yml

    meta:      <--此目录应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系。

      main.yml

 

还是以之前创建文件,修改文件权限的playbook来重新规划roles的文件。文件结构如下。

技术分享图片

 

 

tasks目录下面三个文件。main.yml, task1.yml, task2.yml..

main.yml中是include task1.yml和task2.yml

- include: task1.yml

- include: task2.yml

task1.yml:

- name: create a go file

  command: touch /home/go/{{file_name}}

 

task2.yml, 其中定义了handler

- name: change the mod

  command: chmod 755 /home/go/{{file_name}}

  notify: handler rm

 

上面任务用到的变量file_name,定义在vars/main.yml中

file_name: go_test.go

 

handlers/main.yml 中定义了具体的handler处理动作

- name: handler rm

  command: rm /home/go/{{file_name}}

 

最后在role_test.yml中定义了具体要执行的role

---

- hosts: webservers

  remote_user: wuqi

  roles:

- role: role_test

 

执行ansible-playbook role_test.yml 就可以了。这样就将之前的一个playbook的任务通过role的方式组织起来了

Ansible 三: Role

原文:https://www.cnblogs.com/zhanghongfeng/p/13045629.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!