在昨天的文章中我整理了一些重用 Ansible 内容的方法,但有时候,我们要完成一项任务可能不单单只需要 task,还需要一些其他的设定、档案之类的。在这种情况下,Ansible 提供了另外一个机制,称为 role,来帮助我们可以把各种内容打包成一个 role 来使用。
根据目前的官方文件,role 是透过资料夹来定义的,底下预设会有这八个资料夹,但只要有至少一个就行。
<role_name>/
tasks/
handlers/
library/
files/
templates/
vars/
defaults/
meta/
预设情况下,Ansible 会在每个资料夹底下搜寻 main.yml
(或是 main
、main.yaml
)来决定这个 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 之後,我们该如何使用它呢?总共有三种方法:
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 做文件签名(下)
缘由: 从UIUX那边总是会收到各种有趣的需求,这次收到的新需求为希望launch页面可以停止个几秒...
今天我们就继续把昨天没说完的接下去说完吧 5.Image(Image程序码) 图片对一个App来说非...
MoneyDJ理财网 - 葛兰碧八大法则 葛兰碧八法是根据移动平均线和股价之间的关系,来判断买入,卖...
设定好角色栏位後,接下来就是大量同步BPM角色名单的签核主管 因此下方程序执行的步骤 1.读取BPM...
Fargate吃不到 ECS Fargate是一个Serverless的服务,Serverless顾...