playbook核心元素之 --> 角色role
角色:
以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;
role_name/
files/:存储由copy或script等模块调用的文件;
tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;
其它的文件需要由main.yml进行"包含"调用;
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;
其它的文件需要由main.yml进行"包含"调用;
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;
其它的文件需要由main.yml进行“包含”调用;
templates/:存储由template模块调用的模板文本;
meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关
系;其它的文件需要由main.yml进行"包含"调用;
default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;
实例
[root@ansible roles]# pwd /etc/ansible/roles --> 配置文件中定义的默认路径 [root@ansible roles]# mkdir nginx [root@ansible roles]# tree nginx nginx ├── default ├── files ├── handlers │ └── main.yml ├── meta ├── tasks │ └── main.yml ├── templates │ └── nginx.conf.j2 └── vars └── main.yml
[root@ansible roles]# vim nginx/tasks/main.yml - name: install nginx yum: name=nginx state=present tags: insngx - name: install conf file template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf tags: ngxconf notify: reload nginx service - name: start nginx service service: name=nginx enabled=true state=started
[root@ansible roles]# vim nginx/templates/nginx.conf.j2 //可以简单修改端口号测试 //在配置文件中引用一个变量
[root@ansible roles]# vim nginx/handlers/main.yml - name: reload nginx service service: name=nginx state=restarted
[root@ansible roles]# vim nginx/vars/main.yml ngxport: "8090" --> 修改nginx监听的端口测试
编写playbook调用角色
[root@ansible roles]# vim nginx.yml --> 配置文件中定义的位置(/etc/ansible/ansible.cfg ) - hosts: centos7 remote_user: root roles: - nginx
测试
[root@ansible roles]# ansible-playbook nginx.yml
转载于:https://blog.51cto.com/sixijie123/1878106