前言
上一篇文章《编写一个Ansible role》中讲到怎么去开发一个role,这篇文章就着重来说说开发完这个role以后,我们该怎么调用这个role。
本文中涉及的试验环境信息如下:
role配置
我们需要面对一个问题,就是我们开发的role放在哪里可以被调用到,针对这个问题,在Ansible中有以下规则:
规则一:自动寻找当前目录的roles文件夹
无论Ansible中对roles path是如何设置的,放在当前子目录roles文件夹下的role都会被找到。
规则二:环境变量定义的文件夹
如果定义了环境变量,那么Ansible也会搜索该文件夹下的role。
规则三:Ansbile配置文件中roles_path定义的文件夹
在这篇《Ansible配置文件ansible.cfg详解》文章中,有说到roles_path,这个变量允许用户自定义放置role的文件夹。如果有多个目录,则使用冒号分隔。
注意:如果没有定义环境变量,那么还可以通过配置变量来定义role文件夹;但是如果已经定义了环境变量,那么将失效。
基础调用role
现在就来调用一下上篇文章中开发的那个测试role,调用脚本如下:
执行效果就和所有内容在一个yaml脚本文件一样;但是Ansible会先执行role,再执行本文件中包含的任务,那有没有办法修改role和task的执行顺序呢?是的,我们可以通过和来调整role和task的执行顺序。
这样就OK了。
调用带有参数role
我们在调用role时,可以按照要求,传递参数进去,目前有两种常用的传参方式:
把role写成JSON Object的格式,直接传入参数
通过vars关键字使用YAML字典格式传入参数
与when一起使用role
有的时候,需要在满足一定条件的情况下再执行role,这个时候就需要和进行配合。比如这样:
总结
role作为学习Ansible中无法避开的一个内容,也是一个非常重要的内容,通过上一篇和这一篇的总结,整体上把我们常用的一些role的知识点都总结到位了,对于我们的日常工作也是足够了,后续的进阶过程中(一般也没啥必要~),可以多读一些其他牛人写的role。
领取专属 10元无门槛券
私享最新 技术干货