使用Rex自动化您的数据中心
在我日复一日的工作中,我遇到了很多我实际上“讨厌”的任务。 这些任务中的大多数都是重复的事情,占用了大量的时间。 我的一个同事曾经告诉我,“如果你不得不多做一个任务,自动化!” 这是一个令我感兴趣的建议。 自那天以来,我一直在想自动化,以及如何使流程比以前流畅。 但主要的问题是,您将要使用什么工具?
Puppet,Chef,CFEngine等
作为一个系统或托管工程师或者通常所做的工作,首先在Google的“数据中心自动化”中输入,您得到的是很多商业公司试图出售您的自动化框架。 像Puppet,Chef等等,当你看到他们的文档时,很好,它是巨大的,需要很多时间来正确安装和配置。 更不用说,您需要在每个服务器上安装一个守护进程,以使框架正常工作(想象一下,在40-50台服务器上尝试这样做,并且想像一下如果你有100-200个服务器,那实际上并不是一个选项我在寻找一个简单的框架来自动化我的任务时。
雷克斯
Rex是一个小而轻便的框架,我遇到访问一个网站(我忘了是哪一个)。 起初我不知道该怎么做,但是当浏览文档时,我很兴奋,看到了使用它的可能性。 几分钟之内,我得到了它(由于他们的方便的YUM存储库(我使用CentOS)),而且很酷的是,它是用Perl编写的,所以理论上你可以在任何平台(包括Windows)上运行它。 Rex的最大优势在于,您可以使用您的Rex安装的“主”服务器上的ssh密钥(或用户传递组合),并使用ssh进行连接,因此您无需在目标服务器上安装守护进程。
Rex的结构如何
当您首次创建Rex项目(安装后,轻松查看安装文档: http : //rexify.org/get/index.html ),使用“rexify”。 它将为您创建一个非常干净的结构的文件夹:
- 一个名为Rexfile的文件,您可以在此定义所有主机和用户名和密码
- 一个包含perl模块(.pm文件)的lib文件夹。 它会自动创建一个名为uptime的默认服务器组的任务,以便您可以测试与服务器组的连接是否正常工作
给我一个可以使用的例子?
嗯,大家都知道保持所有服务器是最新的重要性。 所以我做的是创建一个任务来更新我的所有服务器(使用yum update)并检查它是否成功,并通过电子邮件向我报告,下面列出了标准的正常运行时间任务:
package task; use Rex -base; desc "Get uptime of server"; task "uptime", group => 'all', sub { say run "uptime"; }; desc "Run updates"; task "runupdate", group => 'all', sub { # Variables my $EMAIL='<your e-mail>'; my $hostname = connection->server; # Execute yum update say "Executing yum update on $hostname"; sudo "yum -y -e 0 -d 0 update"; if($? == 0) { run 'echo "Update was successful" | mail -s "Update was completed on `hostname -s`" ' . $EMAIL; } else { run 'echo "Update was not successful" | mail -s "Update did not work on `hostname -s`" ' . $EMAIL; }; };
给我多一点! 我需要更多!
我想最好地了解您将要自己尝试的全部潜力,安装并开始实验。 检查rexify.org网站的完整文档(这是很好的文档记录,如果您不明白有关的内容,请访问FreeNode上的#rex IRC通道,开发人员也可在此处使用)。 我只想花点时间,感谢jfried,这个奇妙框架的开发者! 支持和帮助,使这个框架更大!
不要忘了查看我的博客: http : //livebyt.es有关托管的更多文章!