codecamp

Ansible 怎么使用 Roles

上一章「Ansible 什么是Roles」冻仁简单介绍了 Roles,接下来重头戏登场咯!

automate_with_ansible_roles_and_windows-07.jpg

我们可以通过 Galaxy (银河) 和 ansible-galaxy (Terminal) 来使用 Roles。

automate_with_ansible_roles_and_windows-08.jpg

什么是 Galaxy?

Galaxy 的全名为 Ansible Galaxy,它是官方维护的 Roles 市集 (marketplace) 网站。我们可以在网站上取得社群成员所维护的 Roles,其 source code 存放于 GitHub。

automate_with_ansible_roles_and_windows-09.jpg

ansible-galaxy 是什么?

ansible-galaxy 是管理 Roles 的指令,我们可以在 Terminal 里用它搜寻 (search)、安装 (install)、移除 (remove) Roles 等。换句话说它是 Ansible 世界的 pip

automate_with_ansible_roles_and_windows-14.jpg

想深入了解 ansible-galaxy 的话,不妨 man 一下它!

$ man ansible-galaxy

怎么用 Galaxy 搜寻 Roles?

  1. 开启浏览器 (Browsers) 并进入 https://galaxy.ansible.com
  2. 进到 Galaxy 的网站后,可在右上角的 Browser Roles 找到数不完的 Role。

    automate_with_ansible_roles_and_windows-10.jpg

  3. 在 Keyword 一栏输入关键字后,接下 Enter 即可搜寻。底下将以 win_vim role 为例。

    automate_with_ansible_roles_and_windows-11.jpg

  4. 在 Details 页签里,可以看到关于这个 Role 的版本记录 (Version History)、支持的平台 (Supported Platforms) 等资讯。

    Ansible 最小支持版本 (Minimum Ansible Version) 的部份也请留意,有些语法在旧版的 Ansible 是不被支持的喔!

    automate_with_ansible_roles_and_windows-12.jpg

  5. 在 README 页签里,可以看到作者写的说明文件。一般会在 Role Variables 底下列出哪些可以被覆写的预设变数。

    automate_with_ansible_roles_and_windows-13.jpg

怎么用 ansible-galaxy 搜寻 Roles?

除了在 Galaxy 网站搜寻 Roles 以外,我们也可以使用 ansible-galaxy search + 关键字进行搜寻。

automate_with_ansible_roles_and_windows-15.jpg

怎么安装 Roles?

请使用 ansible-galaxy install + Role 名称 来安装 role,如要自定存放 Roles 的位置,请使用 -p + 路径,详情请参考 Download Roles | Ansible Galaxy 一文。

automate_with_ansible_roles_and_windows-16.jpg

怎么初始化 Roles?

我们可以用 ansible-galaxy init + Role 名称 来建立一个新 role,其档案结构部份冻仁已在上一章的「Role 的基本结构」介绍过,这里就不详述了。

automate_with_ansible_roles_and_windows-17.jpg

以上,您学会怎么使用 Roles 了吗?下章冻仁将教大家如何利用 Galaxy 上的 Roles 建置 LNMP 环境。

后话

我们除了可以在 Galaxy 找到现成的 Roles 外,更可借由阅读前人的 source code 来学习各种知识与技巧。

倘若觉得别人的 Roles 不好使,您就自己写一个,然后分享出来吧!

相关连结


Ansible 什么是Roles
Ansible 用 Roles 部署 LNMP 网页应用程式(上)
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }