1. 为什么使用roles
- 目录结构不够规范
- 编写好的任务如何重复调用
- 服务端配置文件改动,客户端参数信息也自动变化
- 汇总剧本中没有显示主机角色信息
- 一个剧本内容信息过多,不容易进行阅读,如何进行拆分
2. roles的使用
在安装ansible后,会有/etc/ansible/roles这个目录
2.1 规范目录
规范目录结构
cd /etc/ansible/roles
创建相应的角色目录
mkdir nfs
子目录
mkdir nfs/{vars,tasks,templates,handlers,files}
tree
2.2 在roles目录中创相关文件
编写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
- 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
编写vars目录中的main.yml
Data_dir: /data
编写files目录中的文件
-rw-r--r-- 1 root root 29 May 17 15:23 exports
编写handlers目录中的main.yml文件
vim main.yml
- name: restart nfs server
service: name=nfs state=restarted
目录中文件编写好汇总结构
.
├── files
│ └── exports
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
└── vars
└── main.yml
2.3 编写一个主剧本文件
在roles目录下
vim site.yml
编辑:
- hosts: nfs_server
roles:
- nfs-server
- hosts: rsync_server
roles:
- nfs-client
说明:hosts是配置的主机清单,roles 是roles下的目录,这里只是演示,没有创建nfs的client的roles ,可以自己根据步骤进行配置
2.4 template模块的说明
这里加入你使用了模板文件,那么在进行剧本编写的时候 就需要使用tempalte模块
template: src= dest=