果冻想
认真玩技术的地方

Ansible role使用入门

Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。
Ansible系列博文直达链接:Ansible入门系列

前言

上一篇文章《编写一个Ansible role》中讲到怎么去开发一个role,这篇文章就着重来说说开发完这个role以后,我们该怎么调用这个role。

本文中涉及的试验环境信息如下:

服务器信息如下:
192.168.5.2 # 管理主机
192.168.5.3 # 被管理远程主机
192.168.5.4 # 被管理远程主机

inventory文件内容如下:
[web]
192.168.5.3
192.168.5.4

role配置

我们需要面对一个问题,就是我们开发的role放在哪里可以被调用到,针对这个问题,在Ansible中有以下规则:

  • 规则一:自动寻找当前目录的roles文件夹
    无论Ansible中对roles path是如何设置的,放在当前子目录roles文件夹下的role都会被找到。

  • 规则二:环境变量ANSIBLE_ROLES_PATH定义的文件夹
    如果定义了环境变量ANSIBLE_ROLES_PATH,那么Ansible也会搜索该文件夹下的role。

  • 规则三:Ansbile配置文件中roles_path定义的文件夹
    在这篇《Ansible配置文件ansible.cfg详解》文章中,有说到roles_path,这个变量允许用户自定义放置role的文件夹。如果有多个目录,则使用冒号:分隔。

注意:如果没有定义环境变量ANSIBLE_ROLES_PATH,那么还可以通过配置变量roles_path来定义role文件夹;但是如果已经定义了环境变量ANSIBLE_ROLES_PATH,那么roles_path将失效。

基础调用role

现在就来调用一下上篇文章中开发的那个测试role,调用脚本如下:

---

- hosts: web
  gather_facts: False
  tasks:
    - name: task1
      debug: msg="I am task1"
  roles: 
    - roledemo

执行效果就和所有内容在一个yaml脚本文件一样;但是Ansible会先执行role,再执行本文件中包含的任务,那有没有办法修改role和task的执行顺序呢?是的,我们可以通过pre_taskspost_tasks来调整role和task的执行顺序。

---

- hosts: web
  gather_facts: False
  pre_tasks:
    - name: pretask
      debug: msg="I am pre task"
  tasks:
    - name: task1
      debug: msg="I am task1"
  roles: 
    - roledemo
  post_tasks:
    - name: posttask
      debug: msg="I am post task"

这样就OK了。

调用带有参数role

我们在调用role时,可以按照要求,传递参数进去,目前有两种常用的传参方式:

  • 把role写成JSON Object的格式,直接传入参数
  • 通过vars关键字使用YAML字典格式传入参数
---

- hosts: web
  gather_facts: False
  roles: 
    - {role: roledemo, website: "www.baidu.com"}
    - role: roledemo1
      vars:
        author: Jelly

与when一起使用role

有的时候,需要在满足一定条件的情况下再执行role,这个时候就需要和when进行配合。比如这样:

---

- hosts: web
  roles: 
    - role: roledemo
      when: ansible_default_ipv4.address == "192.168.5.3"

总结

role作为学习Ansible中无法避开的一个内容,也是一个非常重要的内容,通过上一篇和这一篇的总结,整体上把我们常用的一些role的知识点都总结到位了,对于我们的日常工作也是足够了,后续的进阶过程中(一般也没啥必要~),可以多读一些其他牛人写的role。如果觉的还不错,可以点击下方的“打赏”哦。

现在是晚上十点半,好饿!

果冻想,认真玩技术的地方。

2020年6月2日,于内蒙古呼和浩特。

赞(0) 打赏
未经允许不得转载:果冻想 » Ansible role使用入门
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

玩技术,我们是认真的

联系我们关于果冻

感谢支持果冻想

支付宝扫一扫打赏

微信扫一扫打赏