目录
role目录
└── roles
├── project
│ ├── default
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ ├── templates
│ └── vars
└── project.yml
/roles/project/:项目名称,有以下子目录
files/:存放由copy或script模块等调用的文件
templates/:template模块查找所需要模块文件的目录
tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它文件需要在此文件中通过include进行包括
handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包括
vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包括
meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包括
default/:设定默认变量时使用此目录中的main.yml文件
格式
1、roles/project.yml
调用角色方法1:
[root@ansible roles]# vim mysql.yml
---
- hosts: mysql
remote_user: root
roles:
- mysql ###角色的文件夹名字
[root@ansible roles]# vim nginx.yml
---
- hosts: all
remote_user: root
roles:
- mysql
- nginx
调用角色方法2:
---
- hosts: websrvs
remote_user: root
roles:
- { role: mysql, tags: ['web','httpd'] }
- { role: mencached, tags: 'web' } ###给角色添加tag
- { role: nginx, tags: "httpd", when: ansible_os_family == "RedHat" } ###给角色添加判断when语句
2、tasks/main.yml
方法1:
[root@ansible tasks]# vim main.yml
- name: create user
user: name=nginx system=yes shell=/sbin/nologin
- name: copy config files
template: src=nginx.j2 dest=/etc/nginx/nginx.conf
notify: restart service
方法2:
[root@ansible tasks]# vim main.yml
- include: uesr.yml #####调用本目录角色
- include: group.yml
- include: /roles/mysql/task/yum.yml #####跨角色目录调用task
[root@ansible tasks]# vim user.yml
- name: create user
user: name=nginx system=yes shell=/sbin/nologin
[root@ansible tasks]# vim copy.yml
- name: copy config files
template: src=nginx.j2 dest=/etc/nginx/nginx.conf ####推送配置文件模板
notify: restart service ####调用handlers
3、handlers/main.yml
方法1:
[root@ansible handlers]# vim main.yml
- name: restart service
service: name=nginx state=restarted
方法2:
[root@ansible handlers]# ls
main.yml restart.yml stop.yml
[root@ansible handlers]# cat main.yml
- include: restart.yml
- include: stop.yml
[root@ansible handlers]# cat restart.yml
- name: restart service
service: name=nginx state=restarted
[root@ansible handlers]# cat stop.yml
- name: stop service
service: name=nginx state=stopped
4、vars/main.yml
var1: value
var2: value