五:Ansible Roles
五:Ansible Roles
一:Ansible Roles目录结构
1. 官方推荐最佳实践目录结构定义方式
roles/
common/ # this hierarchy represents a "role"
tasks/ #
main.yml # <-- tasks file can include smaller files if warranted
handlers/ #
main.yml # <-- handlers file
templates/ # <-- files for use with the template resource
ntp.conf.j2 # <------- templates end in .j2
files/ #
bar.txt # <-- files for use with the copy resource
foo.sh # <-- script files for use with the script resource
vars/ #
main.yml # <-- variables associated with this role
#不常用
defaults/ #
main.yml # <-- default lower priority variables for this role
meta/ #
main.yml # <-- role dependencies
library/ # roles can also include custom modules
module_utils/ # roles can also include custom module_utils
lookup_plugins/ # or other types of plugins, like lookup in this case
webtier/ # same kind of structure as "common" was above, done for the webtier role
monitoring/ # ""
fooapp/ # ""2. roles目录结构使用galaxy创建
[ ~]# cd /etc/ansible/roles/ [ roles]# tree wordpress/ nfs/ #项目名称 ├── defaults #低优先级变量 ├── files #存放文件 ├── handlers #触发器文件 ├── meta #依赖关系文件 ├── tasks #工作任务文件 ├── templates #jinja2模板文件 ├── tests #测试文件 └── vars #变量文件
备注:只需要这些目录,ansible的roles会自动识别里面的main.yml
二:Ansible Roles依赖关系
roles允许你在使用roles时自动引入其他的roles。role依赖关系存储在roles目录中meta/main.yml文件中。
例如:推送wordpress并解压,前提条件,必须要安装nginx和php,把服务跑起来,才能运行wordpress的页面,此时我们就可以在wordpress的roles中定义依赖nginx和php的roles
[ roles]# vim /etc/ansible/roles/wordpress/meta/main.yml
dependencies:
- { role: nginx }
- { role: php }如果编写了meta目录下的main.yml文件,那么Ansible会自动先执行meta目录中main.yml文件中的dependencies文件,如上所示,就会先执行nginx和php的安装。
如果安装wordpress,main.yml里有nginx和php 流程: 1.当你执行worepress的playbook,会先在meta的main.yml里找nginx 2.找到后,会在roles目录里找nginx,再去nginx目录的meta找依赖,如果无,会在tasks目录里找到安装、配置、启动等 3.装完nginx后再同理执行php 4.最后再执行wordpress的tasks
三:Ansible Roles创建目录
ansible-galaxy init 服务名 roles
[ ~]# cd /etc/ansible/roles/
[ /etc/ansible/roles]# ansible-galaxy init rsync roles
- rsync was created successfully
[ /etc/ansible/roles]# tree
.
└── rsync
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
9 directories, 8 files 相关推荐
laisean 2020-09-27
onepiecedn 2020-10-29
guchengxinfen 2020-10-12
houdaiye 2020-09-23
逆时针 2020-08-19
pzczyy 2020-08-19
annan 2020-08-02
hpujsj 2020-07-26
annan 2020-07-18
逆时针 2020-06-21
annan 2020-06-20
逆时针 2020-06-14
逆时针 2020-06-14
awoyaoc 2020-06-12
逆时针 2020-06-09
piaotiejun 2020-06-07
awoyaoc 2020-06-07