ansible进阶(roles应用)

ansible 进阶

一、roles简介

一个项目从开始到结束,不是简单几十个playbook就可以完事了,当文件数很多,有上百个的话,仅通过简单的includes不停的引用,那最终的结果错综复杂。这个时候ansible roles就可以很好的发挥它的作用了。

roles,字面意思是角色的含义,可以理解为有相互关联功能的集合。我们把安装ntp、mem、nginx、db等等的功能角色放在一个大仓库里,然后用到哪个,从那里面去拿,拿一个,拿两个都可以。

roles:是个目录,角色集合

里面放的有:

    mysql/
    httpd/
    nginx/
    memcached/
每个角色是一个目录

每个角色的格式,一特定的层级目录结构进行组织,如下:

mysql/
    files/
    templates/
    tasks/
    handlers/
    vars/
    meta/
用到哪个目录,给出哪个目录

二、在playbook中调用角色的方式

- hosts: webservers
  remote_user: root
  roles:
  - mysql
  - memcached
  - nginx

三、以mysql/为例,分别介绍各个目录的意思

(1)files/:存放copy或script模块等调用的文件

(2)templates/:templates查找所需要模块文件的目录;

(3)tasks/:(必须要有)至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含;

(4)handlers/:至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含;

(5)vars/:定义的是变量,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含;

(6)meta/:定义此当前角色的特殊设定及其他依赖关系,至少应该包含一个名为main.yml的文件,其他的文件需要在此文件中通过include进行包含;

(7)default/:为当前角色设定默认变量时使用目录中的main.yml文件

四、例子

(1)mkdir /etc/ansible/roles/nginx{files,tasks,templates,handlers,vars,default,meta} -pv

(2)tree /etc/ansible/roles/nginx

ansible进阶(roles应用)

(3)cd /etc/ansible/roles/nginx/

(4)vim tasks/main.yml

ansible进阶(roles应用)

(5)cp /root/working/files/nginx.conf.j2 templates/

(6)调用,去working目录下,建立一个ansible文件夹,cd到里面去,然后vim nginx.yml

ansible进阶(roles应用)

(7)运行结果

ansible进阶(roles应用)

五、其他配置添加

1、定义触发器

(1)cd /etc/ansible/roles/nginx 放在handlers目录下:vim handlers/main.yml

ansible进阶(roles应用)

(2)vim tasks/main.yml

ansible进阶(roles应用)

(3)ansible-playbook –check nginx.yml

ansible进阶(roles应用)

定义tags,直接在tasks/main.yml上加上tags: instconf就可以了

2、自定义变量的使用

(1)cd working/ ,vim myuser.yml

ansible进阶(roles应用)

(2)ansible-playbook myuser.yml

(3)再那两台机子上看一下:

ansible进阶(roles应用)

3、调用roles的第二种方法:传递变量给角色

mkdir -pv /etc/ansible/roles/memcached/tasks
cd /memcached
vim tasks/main.yml

- name: install package
  yum: name=memcached state=present
- name: start memcached
  service: name=memcached state=started enabled=true

调用:vim lnm.yml
- hosts: all
  remote_user:
  roles:
  - { role:nginx, when:ansible_distribution_major_version == '7' }
  - { role:memcached, when:ansible_hostname == 'memcached' }


ansible-playbook --check lnm.yml

大致先写到这,ansible是门庞大的课程,未完待续。

 

原创文章,作者:N24_yezi,如若转载,请注明出处:http://www.178linux.com/65914

(3)
N24_yeziN24_yezi
上一篇 2017-01-05 10:16
下一篇 2017-01-05 15:50

相关推荐

  • 27期第一周学习小结

    第一周 1. 描述计算机的组成及其功能。 计算机主要组成部分以下五种:运算器,控制器,存储器,输入设备,输出设备。 运算器的功能是对数据进行算术运算与逻辑运算,就是对数据进行加工处理。 控制器的功能是调度二进制程序,数据,内存寻址,以及协调计算机输入设备和输出设备等各计算机部件之间的正常工作。 存储器的功能是存储二进制指令和数据。存储器是编址存储单元。 输入…

    Linux干货 2017-07-15
  • linux系统文件的元数据

    linux系统文件的元数据 什么是元数据 文件的数据分两种: 一种元数据,既属性数据:metadata 一种就是数据本身:data 如何查看元数据: stat stat命令用于显示文件的状态信息 [root@localhost ~]# stat /tmp/mylinux File: ‘/tmp/mylinux’ Size: 143 Blocks: 0 IO …

    Linux干货 2018-03-11
  • Package Manager

    Package Manager Package 管理工具的分类 rpm yum Source Code Install 管理工具的分类 前段管理工具:Debian:debRedhat,Suse…:rpm 前端管理工具:Debian:apt-getRedhat:yum,dnf RPM RPM是什么?RPM全称是RPM Package Manager…

    2016-03-27
  • 配置epl时,出现“time out”错误,解决办法

    一:配置环境、网络环境及出现的故障 1:配置环境 本机在配置epel仓库时,配置文件所在路径为/etc/yum/repos.d/centos7.repo.以下为配置文件的的详细内容 [base]name=centos 7.3baseurl=file:///misc/cdgpgkey=file:///misc/cd/RPM-GPG-KEY-Centos-7 […

    2017-06-10
  • 文本编辑三剑客之gawk

     awk 本章内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 awk条件判断 awk循环 awk数组 awk函数 调用系统命令 1.awk介绍 ★ Linux 文本处理工具三剑客:grep、sed、awk。其中grep是一种文本过滤工具;sed是文本行编辑器,而awk是一种报表生成器,就是对文件进行格式化处理的…

    Linux干货 2016-09-24
  • Python修饰器的函数式编程

    Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西。虽然好像,他们要干的事都很相似——都是想要对一个已有的模块做一些“修饰工作”,所谓修饰工作就是想给现有的模块加上一些小装饰(一些小功能,这些小功能可能好多模块都会用到),但又不让这个小…

    Linux干货 2016-08-15

评论列表(1条)

  • luoweiro
    luoweiro 2017-02-23 07:43

    很详细的步骤,赞,加油。