ansible运维自动化之五---roles高级进阶

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

猜你喜欢

转载自www.cnblogs.com/houjibofa/p/10212599.html