Day 30:Ansible Role

在昨天的文章中我整理了一些重用 Ansible 内容的方法,但有时候,我们要完成一项任务可能不单单只需要 task,还需要一些其他的设定、档案之类的。在这种情况下,Ansible 提供了另外一个机制,称为 role,来帮助我们可以把各种内容打包成一个 role 来使用。

Role 的组成

根据目前的官方文件,role 是透过资料夹来定义的,底下预设会有这八个资料夹,但只要有至少一个就行。

<role_name>/
  tasks/
  handlers/
  library/
  files/
  templates/
  vars/
  defaults/
  meta/

预设情况下,Ansible 会在每个资料夹底下搜寻 main.yml(或是 mainmain.yaml)来决定这个 role 的内容。

如何安装 Role

Ansible 除了可以把东西打包成 Role 以外,还可以把它发布到网路上,供其他需要的人下载。在 Python 的世界,我们可以透过 pip 来安装套件,而在 Ansible,这就要透过 Ansible Galaxy 来达成了。

举例来说,若我要安装 geerlingguy.docker 这个在 host 上安装 docker 的 role 的话,只要透过以下命令,就能在我的 managed node 上面安装了。

ansible-galaxy install geerlingguy.docker

话说在 galaxy 上面搜寻的话,应该还会看到另一个名词 --- collection。若我的理解没错,这是在比较新一些的版本新增的一种发布 Ansible 内容的方式,底下可以包含 plugin、module、playbook 或是 role 等资源。

如何使用 Role

安装好 role 之後,我们该如何使用它呢?总共有三种方法:

  • roles:在 play 底下有个 roles 的参数,只要给他一个 array 包含这份 play 需要使用的 role,就可以执行他们了。
  • import_role / include_role:在 task 底下我们也可以透过这两个 module 来静态或是动态的引入 role。

小结

今天就是最後一天了,老实说没有什麽结束的感觉。这三十天下来都是过得战战兢兢,每天都在尝试学习新的东西,不过还是有很多东西要学呀...本来还想说可以多谈谈有关可观测性或是 log 的部分(这些也是我认为长期以来 NOJ 中存在的问题),无奈於时间与经验不足,希望这一年能够有时间好好把他们补完。


<<:  Day 29 - 3D绘图篇 - 噪声地形演算I - 成为Canvas Ninja ~ 理解2D渲染的精髓

>>:  Day 29 - 用 canvas 与 fabricjs 做文件签名(下)

客制化带背景音乐与画面淡出的launchScreen

缘由: 从UIUX那边总是会收到各种有趣的需求,这次收到的新需求为希望launch页面可以停止个几秒...

Flutter基础介绍与实作-Day11 Nice to Meet you Widgets(2)

今天我们就继续把昨天没说完的接下去说完吧 5.Image(Image程序码) 图片对一个App来说非...

策略实作 - 葛兰碧八法

MoneyDJ理财网 - 葛兰碧八大法则 葛兰碧八法是根据移动平均线和股价之间的关系,来判断买入,卖...

23.移转 Aras PLM大小事-流程签核动态指派(2)

设定好角色栏位後,接下来就是大量同步BPM角色名单的签核主管 因此下方程序执行的步骤 1.读取BPM...

Fargate不是发糕不能吃

Fargate吃不到 ECS Fargate是一个Serverless的服务,Serverless顾...