一、 规范目录结构
[root@m01 roles]# cd /etc/ansible/roles
[root@m01 roles]# mkdir {rsync,nfs} --- 创建相应角色目录
[root@m01 roles]# mkdir{nfs,rsync}/{vars,tasks,templates,handlers,files} --- 创建角色目录下面的子目录
[root@m01 roles]# tree
.
├── nfs
│ ├── files --- 保存需要分发文件目录
│ ├── handlers --- 保存触发器配置文件信息
│ ├── tasks --- 保存要执行的动作信息文件 ok
│ ├── templates --- 保存需要分发模板文件 模板文件中可以设置变量信息
│ └── vars --- 保存变量信息文件
└── rsync
├── files
├── handlers
├── tasks
├── templates
└── vars
二、 在roles目录中创建相关文件
1、 编写tasks目录中的main.yml文件
[root@m01 roles]# vim /tasks/main.yml
- name: 01-copy conf file
copy: src=exports dest=/etc
notify: restart nfs server
- name: 02-create data dir
file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
# path: ['data01','data02','data03']
# state: directory
# owner: nfsnobody
# group: nfsnobody
- name: 03-boot server
service: name={{ item }} state=started enabled=yes
with_items:
- rpcbind
- nfs
vim main.yml
- include_tasks: copy_info.yml
- include_tasks: create_dir.yml
- include_tasks: boot_server.yml
vim copy_info.yml
- name: 01-copy conf file
copy: src=exports dest=/etc
notify: restart nfs server
vim create_dir.yml
- name: 02-create data dir
file: path={{ Data_dir }} state=directory owner=nfsnobody group=nfsnobody
vim boot_server.yml
- name: 03-boot server
service: name={{ item }} state=started enabled=yes
with_items:
- rpcbind
- nfs
2、编写vars目录中的main.yml文件
[root@m01 vars]# vim main.yml
Data_dir: /data
3、编写files目录中的文件
[root@m01 files]# ll
total 4
-rw-r--r-- 1 root root 29 May 17 15:23 exports
4、编写handlers目录中的main.yml文件
[root@m01 files]# vim main.yml
- name: restart nfs server
service: name=nfs state=restarted
目录中文件编写好汇总结构
(文件加载的流程)
[root@m01 nfs]# tree
├── nfs-server (角色目录②)
├── files
│ └── exports (分发文件信息③)
├── handlers (一些通知的信息,触发器的配置④)
│ └── main.yml
├── tasks (在目录中先找tasks中的信息,具体干什么事①)
│ └── main.yml
├── templates ()
└── vars
└── main.yml (然后找vars 其中调用了一些变量②)
├── rsync (角色目录②)
│ └── files
│ └── handlers
│ └── tasks
│ └── templates
│ └── vars
└── site.yml (首先读取它,根据配置信息找到角色目录①)
三、 编写一个主剧本文件
[root@m01 roles]# cat site.yml
- hosts: nfs_server
roles:
- nfs-server
- hosts: rsync_server
roles:
- rsync