资源有限的独立服务器的傀儡或厨师

use*_*398 1 configuration-management puppet chef

我有一个小型虚拟 linux 服务器(500 兆内存)。我最终可能会再获得一两台服务器,而不是更多。

我是开发人员,而不是系统管理员,所以我不知道涉及 linux 管理的最佳实践。我知道我不想设置机器,发出一堆命令来设置用户,安装包,更改环境变量,如果我的机器崩溃,只会丢失所有这些。

我宁愿将所有这些信息与我的代码一起保存在源存储库中。

明显的解决方案是 puppet 或 Chef,但我没有运行一组机器。我想要一种设置用户、安装软件包等的声明方式,但不想设置 ssl 证书、主服务器等(坦率地说,我不能,我的机器很便宜,内存也很少)。

是否有更好的独立机器解决方案?我希望能够快速使用此解决方案来重新创建我的机器(在 amazon、linode、rackspace 或我的桌面上)。

Dan*_*ral 5

Puppet 很容易设置。您几乎不需要做任何事情,并且客户端可以独立运行。让我给你举个例子。假设您有一个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,
}
Run Code Online (Sandbox Code Playgroud)

如果您运行puppet apply config.pp,它将确保安装了包 apache2,该服务正在运行并在启动时启用,并且用户 bob 将与组 bob 一起创建。

这就是全部 -- 安装 puppet 客户端,将其输入到此文件中,然后运行命令。如果您想确保在没有 master 的情况下检查配置,您可以在 crontab 上安排它。我曾经安装了 10 台 ganeti 服务器——这涉及设置许多软件包和配置,中途至少重启一次——非常像这样。

Puppet 确实消耗了一些内存——500 MB 有点低端,但如果你主要运行它来安装东西,它应该足够了。我至少将自己的服务器保持在 1 GB,以保证 puppet 不会对服务器上运行的服务造成问题。

此外,Puppet 绝对是声明性的,尽管您可能需要通过要运行的脚本或 ruby​​ 代码来增加它以教它新的技巧。对于您的需求,您似乎不太可能不得不求助于它。