1、ansible roles
ansible角色简介:
ansible roles是为了层次化,结构化的组织playbook
roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录之中,并且可以便捷的include它们
roles一般用于基于主机构建服务的场景之中,在企业复杂业务场景中应用的频率很高
以特定的层级目录结构进行组织的tasks,variables,handlers,templates,files等;相当于函数的调用把各个功能切割成片段来执行
2、roles目录结构
files #存放copy或script等模块调用的函数
tasks #定义各种tasks,要有main.yml,其他文件include包含使用
handlers #定义各种handlers,要有main.yml,其他文件include包含调用
vars #定义variables,要有main.yml,其他文件include包含调用
templates #存储由template模块调用的模板文本
meta #定义当前角色的特殊设定及其依赖关系,要有main.yml
defaults #要有main.yml的文件,用于设定默认变量
tests #用于测试角色
3、role存放的路径在配置文件ansible.cfg中定义
roles_path = path/roles (默认目录/etc/ansible/roles)
4、创建目录结构
ansible-galaxy init apche #创建角色
ansible-galaxy list #列出角色
5、playbook中使用roles
cat roles.yml
---
- name: test roles
hosts: westos
roles:
- apache
- westos
var1: value1 #此处变量会覆盖roles中的定义变量
6、控制任务执行顺序
---
- hosts: server2
roles:
- role: role1 #角色任务
pre_tasks: #角色执行前执行的play
- tasks1
tasks: #普通任务
- tasks2
post_tasks: #在角色和普通任务执行完毕后执行的play
- tasks3
handlers:
7、absible-galaxy命令工具
可在http://galaxy.ansible.com网站查找、下载ansible角色
安装选择的角色:
ansible-galaxy install geerlingguy.nginx
8、install local roles
tar zcf apche.tar.gz apche
mv apche.tar.gz /mnt
rm -fr apche
cat install_roles.yml
ansible-galaxy install -r install_roles.yml #安装本地角色