--创建时间:2021年3月9日

--修改时间:2021年3月9日

--作者:飞翔的小胖猪

roles是各个单独功能性模块的集合,通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷地include它们的一种机制。

简介

roles:多个角色的集合, 可以将多个的role,分别放至roles目录下的独立子目录中

文件夹说明

roles/project/ :项目名称,有以下子目录
- files/ :存放由copy或script模块等调用的文件
- templates/:template模块查找所需要模板文件的目录

- tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件,其它文件需在此文件中通过include进行包含
- default/:设定默认变量时使用此目录中的main.yml文件,比vars的优先级低

以上的文件夹包含了一个role整的目录结构,在使用role时可以不全部都创建,可即用及建。也可以先行创建,文件夹下可以为空。

编写流程

1.创建roles的目录结构

mkdir roles/功能名自定义/{files,tasks,templates,vars,handlers,meta,default}

2.编写主的main.yml文件

[root@135 playbook]# cat roles/功能名自定义/tasks/main.yml
- include: touch_file.yml
- include: user.yml
- include: copy_file.yml

tasks目录下的main.yml文件时整个role的模块入口。其中include行表示单独的模板,置于tasks/目录下。

此处的include有顺序要求,执行次序是从上至下。请根据自身软件逻辑调整功能模块的调用顺序。

3.编写各个单独的功能性模块

根据tasks/main.yml文件中的include行有序的编写单个功能性模块。

[root@135 tasks]# cat copy_file.yml
- name: copy file
copy: src=test.txt dest=/tmp/ backup=yes
notify: test11

单个模块编写时,需要把这个模块涉及的所有东西都编写完再进行下一个模块的编写。

(有些模块会用到变量,hander,文件等,需要在专用的文件夹中进行相关资源的编写)

 3.1  准备文件

[root@135 playbook]# cat roles/功能名自定义/files/test.txt
lvan test hhahahaha
asfassf

  3.2 编写对应的handler

[root@135 playbook]# cat roles/功能名自定义/handlers/main.yml
- name: test11
shell: echo "`date` test_lvan" >> /var/log/message

4.  编写调用的playbook文件

在roles目录同级目录下创建一个playbook文件用作调用role模块。

[root@135 playbook]# cat http_role.yml
---
- hosts: oracle_11g
remote_user: root
gather_facts: no roles:
- http

调用文件是整个role编写的最后一步,要确定所有单个功能性模块都编写完成后再编写调用的playbook文件。

5.测试role的功能性

使用ansible-playbook -C 命令检测编写的role是否正常。该步骤不是必须的,但是检测一下总是好的。

[root@135 playbook]# ansible-playbook -C http_role.yml

检测有时候会因为逻辑错误出现检测不通过,但又确定没有语法和参数的错误。

一般出现在某一个模块需要依赖上一个模块的执行结果。而-C参数是检测不会真实执行,则会出现依赖性的报错。此时不用管这类报错,一般提示有:没有该用户   文件路径不存在等。

role调用

role在编写调用的playbook时可以给role设置标签和条件用来控制筛选待执行的role。

基本调用

[root@135 playbook]# cat http_role_base.yml
---
- hosts: websrvs
remote_user: root
roles:
- mysql
- memcached
- nginx

条件调用

[root@135 playbook]# cat http_role_term.yml
---
- hosts: all
remote_user: root
roles:
- { role: nginx, username: nginx, when: ansible_distribution_major_version == '7' }

传参调用

[root@135 playbook]# cat http_role_args.yml
---
- hosts: all
remote_user: root
roles:
- mysql
- { role: nginx, username: nginx }

tags调用

[root@135 playbook]# cat http_role_tags.yml
---
- hosts: websrvs
remote_user: root
roles:
- { role: nginx ,tags: [ 'nginx', 'web' ] ,when: ansible_distribution_major_version == "6“ }
- { role: httpd ,tags: [ 'httpd', 'web' ] }
- { role: mysql ,tags: [ 'mysql', 'db' ] }
- { role: mariadb ,tags: [ 'mariadb', 'db' ] }

执行命令:ansible-playbook  --tags="nginx,httpd,mysql"  http_role_tags.yml

模块展示

不同文件夹下各个文件配置模版展示。

tasks

tasks目录下存放的是整个role的所有模块,至少包含一个main.yml文件和一个功能性yml文件。

main.yml

cat  main.yml
- include: user.yml

单个功能模块

cat  user.yml
- name: create user
user: name=test_lvan system=yes shell=/sbin/nologin

vars

变量存放路径。

cat  main.yml
user: lvan
name_test: lvan11

handlers

cat  main.yml
- name: restart
service: name=nginx state=restarted

default

存放变量的目录,优先级比vars目录中的低,如果vars中的main.yml没有匹配的变量再来这里找。

cat  main.yml
user: nginx
group: nginx
tarball_name: nginx-1.6.3.tar.gz
nginx_configuration: nginx.conf.j2
nginx_dir: nginx-1.6.3

files

该文件夹下保存的是tasks文件夹下模块要用到的文件,没有特殊格式就只是单个普通文件。

templates

该文件夹下保存的是tasks文件夹下模块要用到的文件,ansible专用模版文件。就是可以包含变量的文件。每个模版文件的定义均不一样,只展示较简单的格式。

cat  nginx.conf.j2
worker_processes {{ ansible_processor_vcpus }}

其中{{ ansible_processor_vcpus }}就是变量。

ansible复习笔记_role-从零到无的更多相关文章

  1. ansible复习笔记_基础-从零到无

    --创建时间:2021年1月25日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 前言 该文档仅作为作者复习ansible使用,对格式和流程没有做过多的编排和概述.不喜勿喷. 基础 ans ...

  2. ansible复习笔记_playbook-从零到无

    --创建时间:2021年3月9日 --修改时间:2021年3月9日 --作者:飞翔的小胖猪 yaml语法格式 每单一文件第一行,使用 "---"开始.在结尾的时候使用三个点&quo ...

  3. Ansible安装及初始化-从零到无

    --时间:2019年1月12日 --作者:飞翔的小胖猪 前言 说明 文档指导读者在Redhat系列操作系统上安装Ansible软件及初始化配置,包括服务端及被控端的配置文件设置. 以下所有操作都在An ...

  4. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  5. 斜率优化DP复习笔记

    前言 复习笔记2nd. Warning:鉴于摆渡车是普及组题目,本文的难度定位在普及+至省选-. 参照洛谷的题目难度评分(不过感觉部分有虚高,提高组建议全部掌握,普及组可以选择性阅读.) 引用部分(如 ...

  6. 数位DP复习笔记

    前言 复习笔记第五篇.(由于某些原因(见下),放到了第六篇后面更新)CSP-S RP++. luogu 的难度评级完全不对,所以换了顺序,换了别的题目.有点乱,见谅.要骂就骂洛谷吧,原因在T2处 由于 ...

  7. FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅲ

    第三波,走起~~ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅰ FFT/NTT复习笔记&多项式&生成函数学习笔记Ⅱ 单位根反演 今天打多校时 1002 被卡科技了 ...

  8. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  9. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

随机推荐

  1. protobuf详解

    protobuf的基本类型和默认值,python中的小坑 标量数值类型 标量消息字段可以具有以下类型之一--该表显示了.原型文件,以及自动生成类中的对应类型: 默认值 python操作的坑 目录结构 ...

  2. python网络爬虫-静态网页抓取(四)

    静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...

  3. Android中ActionBar和ToolBar添加返回箭头

    感谢大佬:https://blog.csdn.net/baidu_32682229/article/details/77927745 ActionBar添加返回箭头 //onCreate方法中 Act ...

  4. Java中静态变量与非静态变量的区别

    感谢大佬:https://www.cnblogs.com/liuhuijie/p/9175167.html ①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 ...

  5. 解决sublime代码不提示的问题

    如果想让sublime在你输入标签的过程中给你提示,需要按要求开启以下功能. 1.开启代码自动提示功能

  6. iOS App 架构文章推荐

    iOS应用开发架构 iOS应用架构谈系列 阿里技术沙龙 2.2.1. Hybrid App 2.2.2. taobao 客户端架构 2.2.3. alipay 客户端架构   iOS APP 架构漫谈 ...

  7. MHA高可用配置及故障切换

    MHA高可用配置及故障切换 目录 MHA高可用配置及故障切换 一.案例概述 二.案例前置知识点 1. MHA概述 2. MHA的组成 (1)MHA Manager(管理节点) (2)MHA Node( ...

  8. JavaWeb项目中斜杠(/)表示web工程、webapps的场景

    "/"代表当前web工程的常见应用场景 ①.ServletContext.getRealPath(String path)获取资源的绝对路径 /** * 1.ServletCont ...

  9. Solution -「洛谷 P5827」点双连通图计数

    \(\mathcal{Description}\)   link.   求有 \(n\) 个结点的点双连通图的个数,对 \(998244353\) 取模.   \(n\le10^5\). \(\mat ...

  10. Note -「Mobius 反演」光速入门

    目录 Preface 数论函数 积性函数 Dirichlet 卷积 Dirichlet 卷积中的特殊函数 Mobius 函数 & Mobius 反演 Mobius 函数 Mobius 反演 基 ...