程序员的 Puppet 体验之旅:真心不好用

运维 系统运维
Puppet是一种开源的IT自动化工具,可以促进系统管理员相互交流和共享,避免重复的劳动。随着 Devops 概念越演越火,Puppet的名气也越来越大。但是Puppet真的好用吗?本文的作者却不以为然,一起来看看。

作为程序员,我却有好几年的时间都要替公司管理服务器,所以对各种运维技术都研究了一番。2010年的时候,调研了 Puppet、Chef 等工具,当时就觉得不适用。 后来随着 Devops 概念越演越烈,Puppet名气变到:

 不puppet,无devops

吓的我每隔几个月就要去翻Puppet的文档,害怕错过了大时代,但是每次的结论都和当初一样:Puppet不好用。

服务器软件安装界最大的痛点是:

 各种依赖包凌乱复杂,下载安装都非常困难

人们为了解决这个痛点,开发了一系列软件:

  • Redhat/centos的yum
  • ubuntu/debian的apt-get
  • 甚至编程软件也来插一脚:java的maven,python的pip,ruby的gem 等等

这些工具都很好用,基本上解决了问题。

而Puppet并不解决这个痛点,它是建立在软件管理程序之上的,就是说 在Redhat上跑Puppet,它用up2date更新软件,在Ubuntu上跑Puppet,它用apt-get下载软件。

Puppet是什么?

在我看来,Puppet有两大功能:

  1. 一种方言,用来格式化写作软件安装脚本;
  2. 服务器集群操作工具 ,你可以在一台机器上指挥N台服务器运行/下载/安装。

第1点,Puppet的写作语法相当复杂,对比 Markdown之于文本写作来说,puppet的语法称得上謷牙诘屈,需要花大量时间学习,而且难于记忆。

安装一个软件,用shell命令写的安装脚本可能只有50行,puppet要写200-300行,还非常不直观,难以看懂。

因为软件安装的最大痛点已经被软件安装器解决了,puppet能做的很少,你随便找一个现成的puppet mannifests看看,你会觉得它相当无聊。

幸亏,有好心人 Example(42) 提供了一堆已经写好的puppet manifesthttps://github.com/example42/puppet-modules,我觉得puppet大半的价值都在这里。

第2点,对于普通人来说,能够像木马一样批量操作多台服务器,太酷了! 但是对于SA,这是日常工作。

最通常的做法,是先找一台服务器做登陆机,然后把它和其它所有服务器用ssh keygen打通登录。 sshd安装包自带一个ssh-copy-id脚本,执行,输入一次密码就可以打通。

在登录机上装一个web server,把各种软件/包/安装目录 放在web server的http document目下,要用的时候wget -O就可以。

要把一个软件部署在多台服务器上,写一段 for ip in ip_lists :ssh ip -e "" 这样的shell就可以了。

如果用python写批量安装脚本,可以直接使用pssh、Fabric 等包,它们都需要 提前打通服务器之间的ssh keygen 登录。

用ssh keygen打穿服务器,可能会有安全隐患,那台登录机太要命了。但是不打穿,用直接登录的方式,那么系统管理员的电脑就是成了火药库,所以风险不在这里。

结论

Puppet逃避了软件安装的最大痛点,能做的事情很少,学习曲线还这样陡峭,鸡肋都算不上。

原文链接:http://lutaf.com/209.htm

责任编辑:黄丹 来源: 鲁塔弗的博客
相关推荐

2021-05-13 09:27:13

JavaThreadLocal线程

2023-03-13 00:21:21

调试器断点开发者

2021-05-10 07:35:11

SwaggeYApi部署

2014-10-20 10:53:13

ArubaWi-Fi无线网络

2019-05-09 18:24:28

Windows 10Windows操作系统

2021-02-17 21:33:39

路由器产品网络

2014-11-04 10:15:28

Android

2014-09-03 13:19:46

编程语言程序员

2018-03-22 15:36:26

程序员RubyiOS

2012-07-20 10:32:32

程序员

2020-10-19 08:14:58

Windows10

2023-10-25 16:36:06

数字化转型IT系统

2019-10-31 16:10:48

Windows 10Windows技巧

2020-03-19 14:30:13

Windows触摸板MacBook

2014-09-03 09:36:10

编程语言

2018-09-03 09:40:38

华为程序员危机

2021-08-16 13:44:37

手机电子日本

2021-12-22 23:19:05

Windows 10Windows微软

2023-10-24 08:01:38

String传统

2021-03-19 05:58:31

APP手机热点推荐
点赞
收藏

51CTO技术栈公众号