--创建时间: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. 集合框架-List集合的常见方法

    1 package cn.itcast.p4.list.demo; 2 3 import java.util.List; 4 import java.util.ArrayList; 5 6 publi ...

  2. React之redux学习日志(redux/react-redux/redux-saga)

    redux官方中文文档:https://www.redux.org.cn/docs/introduction/CoreConcepts.html react-redux Dome:https://co ...

  3. plsql 普通游标

    -- ①普通游标:操作步骤 边敲边想 学无止境 /* 游标:指针:内存中的一块数据缓冲区,上下文: 将查询到的结果集缓存起来,便于进行逐行定位处理. 使用完成后要及时关闭: 操作步骤? 1.定义游标 ...

  4. nextcloud个人云搭建

    nextcloud个人云搭建 目录 nextcloud个人云搭建 树莓派安装系统 安装OMV5 安装dockcer 挂载硬盘进行映射(使用u盘测试的) 不足 配置数据库 使用docker拉取postg ...

  5. CEH v8~v11 Module Slides 和 Lab Manual 下载

    课程内容 CEH v8 01 Introduction to Ethical Hacking CEH v8 02 Footprinting and Reconnaissance CEH v8 03 S ...

  6. 10分钟了解代码命名规范(Java、Python)

    前言 关于代码命名,我相信是经常困扰很多小伙伴的一个问题,尤其是对于强迫症晚期患者.怎么说呢,每次小编在写代码之前,总会在想啊想啊,用什么命名法好呢?对于经常在C++.Java.Python等主流语言 ...

  7. 使用Hot Chocolate和.NET 6构建GraphQL应用(6) —— 实现Query排序功能

    系列导航 使用Hot Chocolate和.NET 6构建GraphQL应用文章索引 需求 从前几篇文章可以看出,使用Hot Chocolate实现GraphQL接口是比较简单的,本篇文章我们继续查询 ...

  8. springboot druid 数据库连接池连接失败后一直重连

    在使用个人阿里云测试机,在查询实时输出日志时,看到数据库连接失败后,服务器一直在重连服务器.开始以为是遭受重复攻击,后面把服务重启后,就没有出现一直重连的情况.看以下输出日志: 2022-02-09 ...

  9. Win10 提示凭证不工作问题

    感谢大佬:https://cloud.tencent.com/developer/article/1337081 在公司局域网远程自己计算机的时候,突然无法远程了,提示"您的凭据不工作 之前 ...

  10. VC 常用

    转载请注明来源:https://www.cnblogs.com/hookjc/ ------------------------------------------------------------ ...