codecamp

Ansible 是什么

在冻仁解说之前,先来听听大家认为的 Ansible 是什么。

automate_with_ansible_basic-07.jpg

Ansible 的命名由来?

此名取自 Ansible 作者最喜爱的《安德的游戏》1 小说,而这部小说更被后人改编成电影 -《战争游戏》。2

大家或许早在电影中就已看过安塞波 (Ansible),它是虚构的超光速通讯装置。片中主角安德 (Ender) 和他的伙伴们透过 Ansible 跨越时空指挥无数的战舰,就好比我们操控海量的远端服务器一样。

automate_with_ansible_basic-08.jpg

前人怎么说 Ansible?

摘至《奔跑吧 Ansible》第 ix 页的推荐序二。

维运自动化工具本来是用来简化维运工作的,但如果工具本身比较复杂,甚至需要一定的程序开发能力,就会增加使用和推广的难度。Ansible 有三个最吸引人的地方:无客户端、简单易用和日志集中控管。

Ansible 很简单,上手方便,不需要啃一本很大本的书才能学会使用 (从这一点来看,这可谓业界良心)。

- 萧田国 (开放运维联盟联合主席,高效运维社区发起人)

摘至《奔跑吧 Ansible》第 xxiii 页的原书推荐序。

我希望自动化的事情尽快完成,这样我就能有更多时间投入在我更该关注的事情上面。Ansible 并不是一个你需要整天和它打交道的系统。你可以很快地把它拿起来,很快地搞定,然后又很快地回到你更该关心的事情上面。

我希望这些也会成为你喜欢 Ansible 的原因。

- Michael DeHaan (Ansible 软件的创作者,Ansible, Inc. 前 CTO)

摘至 Red Hat 并购 DevOps 新秀 Ansible | iThome 一文。

automate_with_ansible_basic-09.jpg

冻仁心中的 Ansible 又是什么?

  1. Python 阵营的组态管理工具!个人对 Python 熟悉度大于 Ruby。3
  2. 不用帮每台机器 (instance) 预载 agent 4,只要有 SSH 和 Python 就可以闯天下!
  3. 在台湾的市占率较高 5:找的到前人可以问,甚至还有工作坊 (workshop) 的课可以听!
  4. 在目前 4 大主流的组态管理工具 (Puppet, SaltStack, Chef, Ansible) 中, Ansible 是最容易上手,且马上就可以用的工具。(自己说)

automate_with_ansible_basic-10.jpg

使用 Ansible 需要具备什么基础知识?

  1. 具备 Linux 服务器 (server) 基础操作和管理经验。
  2. 会使用 ssh 远端连线至 server。
  3. 知道基本的标准输入 (stdin) 输出 (stdout) 等观念。6
  4. 会安装 Linux 套件。7
  5. 知道 sudo 指令在做什么,并且会使用它。8
  6. 知道什么是档案权限,并且会修改它。
  7. 知道如何启用和停止系统服务 (Daemon / Service)。
  8. 会撰写简易的脚本 (Script)。

您已成功踏入 Ansible 的大门,恭喜你!

相关连结

1. 战争游戏,又名安德的游戏 (Ender's Game),是「奥森·斯科特·卡德」最著名的科幻小说,曾在 2013 年于大银幕上映。 
2. Ansible 命名的由来可参考《奔跑吧 Ansible》和 Ansible FAQ | Ji ZHANG's Blog 一文。冻仁早在 2013 年就在电影院的大银幕上看过 Ansible,但一直到了 2016 年才真正的了解它。 ↩
3. 组态管理工具要怎么选?依据分类帽大概可分粗分为 Python 学院 (Ansible, SaltStack) 和 Ruby 学院 (Chef, Puppet)。 ↩
4. 就业务面而言,有时的环境是不容许安装 agent 的。 ↩
5. 在 2016/11/23 的 DevOps Taiwan Meetup #3 - 配置管理工具大乱斗 (CM 大乱斗) 活动里,Ansible 是现场最多人使用的组态管理工具! ↩
6. 标准输入输出可参考 STDIN、STDOUT、STDERR 與 Bash Redirection 测试 - Tsung's Blog 一文。 ↩
7. 套件管理可参考 [完全用 GNU/Linux 工作] 04. 套件管理 | 冻仁的笔记一文。 ↩
8. sudo 可参考 sudo 指令使用说明 | 冻仁的笔记 一文。 ↩


Ansible 前言
Ansible 环境部署
温馨提示
下载编程狮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; }