先放个链接,万一有人关注呢
↓ ↓ ↓ ↓ ↓
书接上回:Ansible自动化运维工具7.0:playbook实践应用
roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令引入即可。简而言之,roles就是分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以随时引用的一种机制。角色一般用于基于主机构建服务的场景中,但也可以用于构建守护进程等场景中。主要使用场景是代码复用度较高的情况下。
目录结构
在管理节点中创建roles目录结构以及安装应用
[][][][][]
查看当前所创建的目录结构
tree roles输出结果如下
roles├── nginx│ ├── files│ │ └── index.html│ ├── handlers│ │ └── main.yaml│ ├── tasks│ │ └── main.yaml│ ├── templates│ └── vars│ └── main.yaml└── site.yaml6 directories, 5 files
编辑playbook
编辑playbook
vim roles/nginx/tasks/main.yaml内容如下
---- name: install nginx packgeyum: name={{ item }} state=latestwith_items:- epel-release- nginx- name: copy index.htmlcopy: src=index.html dest=/usr/share/nginx/html/index.html- name: copy nginx.conf templatetemplate: src=nginx.conf.j2 dest=/etc/nginx/nginx.confnotify: restart nginx- name: make sure nginx service runningservice: name=nginx state=started enabled=yes
这次的playbook中许多内容都是以文件路径代替的。所以执行时,Ansible将会安装playbook中的顺序,从各个文件中读取内容。这样做的优势是,当一部分内容需要修改时,只需要修改其中一个文件的内容,从而方便日常管理。
编辑配置文件
在配置文件中修改一个参数值
vim nginx/templates/nginx.conf.j2内容如下
user nginx;worker_processes {{ ansible_processor_cores }};error_log /var/log/nginx/error.log;pid /run/nginx.pid;...
这里将配置文件中的worker_processes(工作进程)参数的值修改为一个变量(ansible_processor_cores),该变量的含义是通过管理节点获取被管理节点的CPU核数。也就是说,当Ansible读取该参数时,先获取被管理节点的CPU核数,然后将获取到的数值作为变量值填写到此处,再进行后续的操作。
由于上述变量是一个可以供Ansible执行的参数,所以属于Ansible的内置变量。
配置变量
由于配置文件中的worker_connections变量是用户的自定义变量,所以需要用户来定义它的值
vim roles/nginx/vars/main.yaml内容如下
worker_connections: 10240该文件专门用来定义变量值,playbook中的所有变量值都可以在该文件中进行定义。
配置handlers
handlers也可以放置在一个单独的文件中
vim roles/nginx/handlers/main.yaml内容如下
---- name: restart nginxservice: name=nginx state=restarted
这个handlers的目的是在给被管理节点复制了新的配置文件之后,能够及时使服务读取新的配置。
分配角色
开始给playbook分配角色,也就是,指定执行playbook的主机以及为其分配任务。
vim roles/site.yaml内容如下
- hosts: host5roles:- nginx
指定了执行任务的主机为host5,并且指定执行的任务为“nginx”。需要注意的是,此处的nginx指的是rolers/nginx目录,表示该目录下包含了整个任务。
执行playbook
ansible-playbook roles/site.yaml执行完成后,可访问到被控制节点上的Apache。
来不及解释了,快上车!(进群看公告)

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。
↓↓↓ 点个在看,无需赞赏!
原文作者:运维book思议;如有侵权,请联系管理员删除。