简介:roles则是ansible中,playbooks的目录组织结构,将代码或文件进行模块化,成为roles的文件目录组织结构,易读,代码可重用,层次清晰。
需求:通过role远程部署nginx并配置
首先在ansible服务器上下载个tree程序方便观察结构:yum install -y tree
1.创建目录结构
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 角色名
files 普通文件
handlers 触发器程序
tasks 主任务
templates 金甲模板(有变量的文件)
vars 自定义变量
2.编写任务:vim roles/nginx/tasks/main.yaml(注意语法结构)
---
- name: install epel-relaease packge
yum: name=epel-release state=latest
- name: install nginx packge
yum: name=nginx state=latest
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: make sure nginx service running
service: name=nginx state=started enabled=yes
3.准备配置文件
vim roles/nginx/templates/nginx.conf.j2
worker_processes {{ ansible_processor_cores }}; 调用内部已知变量
worker_connections {{ worker_connections }}; 自定义变量
4.编写变量:
vim roles/nginx/vars/man.yaml
worker_connections:10240
5.编写处理程序:
vim /roles/nginx/hanlers/main.yaml
---
- name: restart nginx
service: name=nginx state=restarted
6.编写剧本
vim roles/site.yaml
- hosts: hosts1
roles:
- nginx
完成测试:
ansible-playbook /root/roles/site.yaml --syntax-check 测试剧本
ansible-playbook site.yaml 执行剧本