我有一个小的虚拟Linux服务器(500兆内存)。 我最终可能会得到一两个服务器,而不是更多。
我是一个开发人员,而不是系统pipe理员,所以我不知道涉及Linuxpipe理的最佳做法。 我知道我不想安装一台机器,发出一堆命令来设置用户,安装软件包,更改环境variables,只是在我的机器崩溃时丢失所有这些命令。
我宁愿将所有这些信息与我的代码一起保存在源代码库中。
明显的解决scheme是傀儡或厨师,但我不运行一组机器。 我想要一个声明的方式来设置用户,安装软件包等,但不想设置SSL证书,主服务器等(坦率地说,我不能,我的机器很便宜,只有很less的内存)。
有没有更好的解决scheme的立式机器? 我希望能够快速使用这个解决scheme来重新创build我的机器(在亚马逊,林德,rackspace或我的倒台)。
木偶很容易设置。 您几乎不需要做任何事情,客户端可以独立运行。 让我来举个例子。 假设你有一个名为config.pp的文件,内容如下:
package { 'apache2': ensure => installed } service { 'apache2': ensure => running, enable => true, require => Package['apache2'], } user { 'bob': ensure => present, uid => 1000, gid => 'bob', require => Group['bob'], } group { 'bob': ensure => present, gid => 1000, }
如果运行puppet apply config.pp ,将确保安装了apache2软件包,该服务正在运行,并且在引导时启动,并且用户bob将创build用户bob。
这就是全部 – 安装木偶客户端,input到这个文件,并运行一个命令。 你可以在crontab上安排它,如果你觉得保证configuration被保存在没有主人的情况下。 我曾经安装了10台ganeti服务器 – 这包括设置一些软件包和configuration,至less在一次中途重启 – 就像这样。
Puppet确实消耗了一些内存 – 500 MB是低端的,但是如果你打算主要安装东西,那应该就足够了。 我至less保留自己的服务器为1 GB,以保证puppet不会对服务器上运行的服务造成问题。
另外,Puppet绝对是声明式的,尽pipe你可能需要增加一些脚本来运行,或者用ruby代码来教它新的技巧。 为了您的需要,似乎不太可能需要采取这种措施。
Cfengine是一个configurationpipe理工具,启发了Puppet,然后厨师,超过15年的成功logging。
有几点需要注意:
你可以自动化你的安装过程,让Cfengine把它们从源代码仓库中检查出来,如果你丢失了现有的服务器,就可以在任何服务器上重放它们。 您还将获得自动修复的额外好处 – 一旦您定义了您希望服务器所在的状态,修改(例如,软件包被删除,用户删除等)将被configuration自动恢复pipe理工具。