本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Ansible
  • 自动化运维工具Ansible入门教程(九)Ansible roles

自动化运维工具Ansible入门教程(九)Ansible roles

发布:TangLu2017-11-15 10:41分类: Ansible 标签: 自动化运维 ansible roles

Ansible roles也叫做角色,用于层次性结构化地组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles需要在playbook中使用include指令。roles就是将变量、文件、任务、模块及处理器分别放置于单独的目录中,并可以便捷地引用它们的一种机制。应用场景一般是基于主机构建服务。

一、创建Ansible roles步骤

1、首先创建一个roles(目录名可自定义)目录;

2、在roles目录中分别创建以各roles角色名称命名的子目录,如nginx、mysql

3、在每个角色目录中分别创建files、handlers、tasks、templates、vars等目录

4、在playbook文件中调用各角色

结构图应该是这样的:

roles.png


二、roles各目录中可用的文件

tasks目录:至少应该包含一个名为main.yml文件,其定义了此角色的任务列表,此文件可以使用include包含其他位于此目录中的task文件

files目录:存放会由copy或script等模块调用的不需要做修改的静态文件,如网页文件,使用copy模块时会自动从该目录找文件

template目录:template模块会自动在此目录中寻找jinja2模板文件,使用template模块就会自动从该目录找文件

handlers目录:应包含一个main.yml文件用于定义此角色用到的各handlers

vars目录:应包含一个main.yml文件用于定义此角色用到的变量,没有变量的话不用创建

site.yaml文件:该文件定义了哪些主机用哪个角色


实战操作步骤:

1、为每个roles建立需要的工作目录

mkdir -p /roles/nginx/{files,handlers,tasks,vars,templates}  #建立nginx角色
mkdir -p /roles/mysql/{files,handlers,tasks,vars,templates}  #建立mysql角色
touch /roles/nginx/{tasks,handlers,vars}/main.yml  #创建所需文件,仅以nginx角色为例

2、创建site.yaml文件,这里是指定host4这台主机使用nginx这个roles

site.png


3、建立tasks文件,写明需要执行的任务列表,比如这里就通过with循环安装了相关软件包

tasks.png


4、创建handlers文件,注意handlers的名字要和上一步notify定义的完全一致

handlers.png


5、创建vars文件,把tasks文件中使用的变量或者template中使用的变量在这里定义好

vars.png


6、创建jinja2模板文件,通常可以复制一份应用自带的配置文件过来,比如nginx.conf,然后再通过变量结合facts的信息去定义需要修改的配置,也可以自己定义变量(如第五步)。这里只过滤出了nginx配置文件中需要用到ansible变量的部分

jinja2.png


7、运行playbook

ansible-playbook /roles/site.yaml


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《自动化运维工具Ansible入门教程(九)Ansible roles
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-281.html  [生成短网址]

已有 4/1695 人参与

评论:

笛声 2018-05-06 18:18
网站干货满满,不过网站速度稍慢,不管是主页还是文章页
TangLu 2018-05-06 18:20
@笛声:谢谢支持 用的万网的虚拟主机 主要是便宜
笛声 2018-05-07 06:42
@TangLu:是我网络问题 用手机网络访问很快
TangLu 2018-05-10 09:05
@笛声:那就好 阿里的主机这方面应该还是能保障的

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~