Ansible playbook roles
时间:2019-03-21
本文章向大家介绍Ansible playbook roles,主要包括Ansible playbook roles使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 概述
角色(roles):如果我们使用playbook写成一个文件,这个文件会很大,但是不方便组织,我们可以分组,把playbook根据功能,如handler,tasks等分门别类的放在在各自的子目录下,形成一个集合,就是角色,建议把角色放在固定的目录下,目录可以ansible的配置文件中的roles_path来定义。
可以重复使用
参考: http://www.ansible.com.cn/docs/playbooks_roles.html
https://blog.51cto.com/ghbsunny/2047084
2 配置介绍
以层级结构组织Playbook的核心元素,成为roles。
核心元素包括以下几点:
Hosts:主机
Tasks:任务列表
Variables:变量
Templates:包含了模板语法的文本文件;
Handlers:由特定条件触发的任务;
在roles目录下,分别创建不同的目录,每个目录就是不同的角色,roles目录下是角色的集合:
如roles/创建如下的目录
mysql/
httpd/
nginx/
memcached/
roles模块的路径可以在配置文件/etc/ansible/ansible.cfg里roles_path定义.
每个角色,以特定的层级目录结构进行组织,例子如下:
/roles/mysql/
- files/ :存放由copy或script模块等调用的文件;
- templates/:template模块查找所需要模板文件的目录;
- tasks/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
- handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
- vars/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
- meta/:至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要在此文件中通过include进行包含;注意,角色和角色之间有依赖关系,如安装NT,先装nginx后装tomcat,一般不需定义,执行我们自己定义好安装顺序即可
- default/:设定默认变量时使用此目录中的main.yml文件;
nginx/
├── files 静态文件
├── tasks 任务列表
│ ├── copyfile.yml
│ ├── installnginx.yml
│ ├── main.yml 入口文件
│ └── start.yml
├── templates 模板文件
│ └── nginx.conf
└── vars 变量
└── handlers 被触发的动作
3 playbook调用角色
playbook调用角色有三个方法:
方法1:
方法2:传递变量给角色,调用角色时,注意依赖关系,可以自己先考虑好先后顺序
方法3:基于条件测试实现角色调用;
- CTF学习交流群 第一期入群题writeup大放送
- 如何使用Hue创建Spark1和Spark2的Oozie工作流
- 【译】深入研究 Laravel 的依赖注入容器
- 一次XSS突破的探险
- 如何使用Hue创建Spark2的Oozie工作流(补充)
- 如何基于CDSW基础镜像定制Docker
- OVSDB介绍及在OpenDaylight中的调用
- 如何在CDH集群的非元数据库节点安装MySQL5.7.12
- PySpark数据类型转换异常分析
- SQLI-LABS 更新帖(二)
- 如何重置Hue用户密码
- 如何使用R连接Hive与Impala
- Equation Group泄露工具之vBulletin无文件后门分析
- 如何使用CDSW在CDH集群通过sparklyr提交R的Spark作业
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 原来sqlite3_get_table() 是这样抓取数据的!!!
- 【tensorflow2.0】中阶api--模型、损失函数、优化器、数据管道、特征列等
- 最短路径Dijkstra算法的简单实现
- django-表单之获取表单信息(二)
- 【tensorflow2.0】高阶api--主要为tf.keras.models提供的模型的类接口
- django-表单之模型表单(三)
- sqlite3数据库封装 - 动态链接库
- 【tensorflow2.0】张量的结构操作
- 指针*和引用&的区别使用
- django-表单之手动渲染(五)
- django-表单之模型表单渲染(六)
- 【tensorflow2.0】张量的数学运算
- django-表单之数据保存(七)
- 用C++跟你聊聊“中介者模式”
- 【tensorflow2.0】AutoGraph的使用规范