1.理解roles在企业中的定位及写法
查看创建目录结构
ansible - galaxy list
指定新的位置
vim ansible.cfg
roles_path = ~/.ansible/roles


建立项目
cd roles/
ansible-galaxy init vsftpd
tree vsftpd/

编辑任务执行(顺序)文件
vim vsftpd/tasks/main.yml
tasks file for vsftpd
- name: install vsftpd
dnf:
name: vsftpd
state: present
- name: start vsftpd
service:
name: vsftpd
enabled: yes
- name: set firewalld
firewalld:
service: ftp
state: enabled
permanent: yes
immediate: yes
- name: setup config file
template:
src: vsftpd.conf.j2
dest: /etc/vsftpd/vsftpd.conf
notify: restart vsftpd
编辑j2文件
vim vsftpd/templates/vsftpd.conf.j2
anonymous_enable={{state}}
编辑变量文件
vim vsftpd/vars/main.yml
vars file for vsftpd
state: YES
编辑触发器文件
vim vsftpd/handlers/main.yml
handlers file for vsftpd
- name: restart vsftpd
service:
name: vsftpd
state: restarted
编辑yaml文件
cd ..
vim vsftpd.yml
- name: create ftp server
hosts: all
roles:
- name: create vsftpd
role: vsftpd

运行
ansible-playbook vsftpd.yml

这样把各个部分都分开,各自书写,不用过于考虑缩进,而且更加直观。
2.关于roles执行的技巧
playbook 中使用 roles :
---
- hosts : server2
roles :
- role : role1
- role : role2
var1 : value1 ## 此处变量会覆盖 roles 中的定义变量
直接覆盖数据
vim vsftpd.yml
- name: create ftp server
hosts: all
roles:- name: create vsftpd
role: vsftpd
state: 'NO'
控制任务执行顺序
---
- hosts : server2
roles :
- role : role1 ## 角色任务
pre_tasks : ##角色执行前执行的 play
- tasks1
tasks : ##普通任务
- tasks2
post_tasks : ##在角色和普通任务执行完毕后执行的 play
- tasks3
handlers :
3.role的下载和共享
#ansible---galaxy 命令工具 #
* Ansible Galaxy 是一个免费共享和下载 Ansible 角色的网站 , 可以帮助我们更好的定义和学习 roles 。
* ansible - galaxy 命令默认与 https :// galaxy.ansible.com 网站 API 通信 , 可以查找 、 下载各种社区开发的 Ansible 角色
* ansible - galaxy 在 Ansible 1.4.2 就已经被包含了
* 在 galaxy.ansible.com 网站查询 roles
在官网找到后下载
ansible-galaxy collection install altispeed.web
将自己编写的打包以及怎么下载
tar zcf vsftpd.tar.gz vsftpd
mv vsftpd.tar.gz /tmp/rm -fr vsftpd
vim vsftpd_role.yaml
- src: file:///tmp/vsftpd.tar.gz
name: westos
ansible-galaxy install -r vsftpd_role.yaml
