zoukankan      html  css  js  c++  java
  • ansible中roles的简单使用

    一.初识roles

      上节中我们已经了解了playbook,详见  https://www.cnblogs.com/wangtaobiu/p/10691689.html

      当我们在配置playbook时会发现它会越来越庞大,所有的tasks,handles,templates等任务或文件都写在一个yml文件中,这样在修改中难免会浪费时间,显得缺乏条理性.而roles的出现刚好解决了这一问题.

      roles的特点 : 目录结构清晰.在使用roles的时候,我们会将不同的任务放在不同的目录下,结构一目了然,在修改的过程中也更方便寻找.

            可以相互调用.在roles中,所有的任务和文件都可以自由调用,通过import或include方法,可以将要执行的任务导入一个文件中,使roles在实现playbook功能的情况下更有条理性.下边是roles目录下安装nginx的目录结构 :

    nginx/
    ├── files     存放静态的文件
    │   └── fstab
    ├── handlers  存放需要触发的任务,里面必须main.yml文件
    │   └── main.yml
    ├── tasks     存放的执行的任务 ,里面必须main.yml文件
    │   ├── copyfile.yml
    │   ├── install.yml
    │   ├── main.yml
    │   └── start.yml
    ├── templates 存放的模板文件
    │   ├── centos6.conf
    │   └── nginx.conf
    └── vars      存放的是参数,里面必须main.yml文件
        └── main.yml  

      从上图中可以看出handles,tasks,vars文件需要用main.yml文件来触发任务,而且针对Contos的不同版本做了相应的判断,所有任务一目了然.

    二.roles入口文件设置

      当我们把roles中所有的任务都配置好以后,最后就需要在roles同级的目录下设置入口文件.入口文件的设置最好以任务名命名,方便识别.例如上边的例子中入口文件可以命名为nginx.yml,下边是文件中的内容,重点在于roles下指定nginx目录.

    - hosts: web
      remote_user: root
      roles:
      - nginx  

    三.roles中任务的导入

      以下是tasks目录下的main文件 : 

    - import_tasks: install.yml   #下载
    - import_tasks: copyfile.yml  #复制文件到远程主机
    - import_tasks: start.yml     #启动nginx
    - name: fstab
      copy: dest=/tmp/wq.txt src=fstab
      tags: fstab
    

      注意 : 因为在main文件中任务是自上而下执行的,所以在导入任务时必须按顺序进行.

    四.roles的执行顺序

    - 先查找当前目录下roles目录里面指定的对应文件夹
    - 找tasks目录下面的main.yml文件,如果import_tasks 就导入
    - 如果遇到了templates,去找templates文件夹下面的对应文件
    - 如果遇到了notify,去找handlers里面的main.yml文件
    - 如果遇到了copy,去找files里面的对应文件
    - 如果看到了变量,如果是setup收集的变量就去setup,如果不是就去vars里面的main.yml文件查找
    

      

  • 相关阅读:
    信号
    test
    keil4打开keil5工程卡死问题
    day01
    SSH问题
    QT_day02
    QT_day01
    C++_day9am
    文件描述符与重定向
    C++_day8pm_多态
  • 原文地址:https://www.cnblogs.com/wangtaobiu/p/10719190.html
Copyright © 2011-2022 走看看