五、Ansible自动化运维实战-Role-角色扮演
1.简介
roles则是再ansible中,playbooks的目录组织结构。将代码或文件进行模块化,称为roles的文件目录组织结构。
易读,代码可重用,层次清晰。
2.目标
通过role远程部署nginx并配置
3.准备目录结构
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
echo 1234 > roles/nginx/files/index.html # 这是主页文件,单独创建
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2 # 把下载下来的nginx.conf配置文件复制一份到文件里
2.编写任务
vim roles/nginx/tasks/main.yaml tasks是任务
————————————————
---
- name: install epel-release packge # 安装epel
yum: name=epel-release state=latest
- name: install nginx packge # 安装nginx
yum: name=nginx state=latest
- name: copy index.html # 拷贝一个主页文件
copy: src=index.html dest=/usr/share/nginx/html/index.html # index.html是
- name: copy nginx.conf template #
template: src=nginx.conf dest=/etc/nginx/nginx.conf # template,金甲模板,模板文件,是对带变量的文件copy
notify: restart nginx
- name: make sure nginx service running # 启动nginx
service: name=nginx state=started enabled=yes
————————————————
3.准备配置文件
vim /roles/nginx/templates/nginx.conf.j2
——————————
worker_processes {{ ansible_processor_cores }} ; # 调用内部已知变量CPU内核数,可以用ansible host1 -m setup -a 'filter=ansible_processor_cores'查看,金甲模板会先替换文件中的变量,再执行
weorker_connections {{ worker_connections }} ; # 自定义变量
——————————
4.编写变量
上方的自定义变量并没有定,我们需要在vars里定义
vim /roles/nginx/vars/main.yaml
————————
worker_connections: 10240
————————
5.编写处理程序
vim roles/nginx/handlers/main.yaml
————————
---
- name: restart nginx
service: name=nginx state=restarted
————————
6.编写剧本
vim roles/site.yaml
————————
- hosts: webserver # 剧本的主机对象
roles: # 剧本的目录
- nginx # 剧本的目录
————————
7.实施
cd roles
ansible-playbook site.yaml --ayntax-check 不能check其他文件,其他文件之间无法联系,只有上级的site.yaml具有调用能力
ansible-playbook site.yaml
去目标主机检查是否配置完成