Roles应用场景
复杂场景(建议使用roles)
- 变更指定主机或主机组
- 如命名不规范维护和传承成本大
- 某些功能需Inlogs.com/blog/675193/201901/675193-20190102225646401-1546983424.png)
roles下面每一个目录是一个项目,比如git项目,该目下按功能集的不同又分为多个功能集 如 tasks(执行命令) files(要传输到远程的文件)
vars(要去使用的变量),每个功能集下面有一个main.yml
roles示例-1
cd /etc/ansible/roles/ #roles可以放在任何目录
mkdir nginx && cd nginx
mkdir {tasks,templates,files,vars,handlers,meta,default}
vim tasks/nginstall.yml
---
- name: install nginx
yum: name=nginx state=installed
cp ~/ansible/templates/nginx.conf.j2 /etc/ansible/roles/templates #先把nginx.conf.j2中的for循环注释掉
vim tasks/ngconf.yml
- name: nginx config
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
vim tasks/main.yml
- include: nginstall.yml
- include: ngconf.yml
vim nginx-role.yml #随便哪个目录
---
- hosts: web
remote_user: root
vars:
- webs:
- node1
- node2
- node3
roles:
- nginx
ansible-playbook -C nginx-role.yml
ansible-playbook nginx-role.yml
示例2 使用handlers
vim handlers/main.yml
---
- name: restart nginx
service: name=nginx state=restarted
vim tasks/ngconf.yml
- name: nginx config
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
vim nginx-role.yml
---
- hosts: web
remote_user: root
vars:
- webs:
- node1
- node2
- node3
roles:
- nginx
修改templates下面的nginx.conf.j2中的端口测试
ansible-playbook nginx-role.yml