0

我们正在编写一个基于 Web 的工具来配置我们由多个服务器提供的服务。这包括接口配置、dhcp 配置等。

在生成正确输出的数据库和视图中有配置,如何发送/使其可用于服务器?

我正在考虑通过 scp 发送它并通过 ssh 调用 reload 命令到服务。我也在考虑使用 Func 来完成所有工作,因为这是 Python 工具,并且似乎会与基于 Python 的 (django) 配置工具集成。

还有其他建议吗?

4

4 回答 4

1

我尝试使用 Puppet 进行配置管理,主要是因为它周围的所有嗡嗡声。不幸的是,我发现(为时已晚)puppetmaster 的扩展性非常糟糕,并且不能很好地处理异构环境。它适用于数十台服务器,但其固有的架构阻止了扩展。

所以我切换到了 Cfengine 3,你几乎没有注意到它对性能的任何影响,并且由于它的分布式架构而可以更好地扩展。此外,我后来发现 Puppet 只是在 Ruby 中低效地重新实现 Cfengine 2 的尝试。请参阅http://verticalsysadmin.com/blog/uncategorized/relative-origins-of-cfengine-chef-and-puppet

如果您的设置将用于一些有用的事情,而不仅仅是玩弄,请使用 Cfengine 3!

于 2011-01-25T15:46:31.537 回答
0

我认为您正在寻找PuppetForeman来管理 puppet(创建服务器组)。

有很多方法可以做到这一点,包括 Chef、Bcfg2、Capistrano 等。Puppet 现在拥有最大的“领先优势”。肯定有一个学习曲线,但结果是值得的。

您可以将服务器配置文件保存在 puppet master 上(在版本控制中)。当你在 master 上部署最新的配置文件时,puppet 客户端可以自动拉取它们并重新启动服务。Puppet“模板”可以为每个服务器动态生成配置文件。

Puppet 为包(apt、yum)、文件和操作系统感知等内容提供了“提供者”。

于 2010-05-28T21:52:43.640 回答
0

你可以看看Fabric

例如,这是我的一个备份脚本的摘录,它在远程主机上启动 Mercurial 服务器并在那里推送本地变更集:

from fabric.api import *
env.hosts = ['login@my.host.com']

def mybckp():
    run('cd ~/somedir; hg serve -a 111.222.111.222 -d') # start mercurial server in daemon mode
    local('hg push')  # push local changesets

要执行它,我只需键入:

fab mybckp

基本上,Fabric 提供的是从 Python 脚本内部对另一台(远程)主机的 shell 进行简单方便的 SSH 访问。

于 2010-05-28T21:01:19.177 回答
0

这真的取决于你打算做什么,因为这个问题有点模糊。其他答案涵盖了可用的工具;选择一个而不是另一个归结为目的。

您是否打算管理服务器以及这些服务器上的服务?如果是这样,请尝试使用 Puppet、CFEngine 或其他一些工具来管理服务器配置。

或者,更具体地说,您是否正在寻找与服务器通信的部署/构建工具?这样您就可以输入类似于“mytool deploy myproject”的内容,并将您的项目传播到所有服务器?在这种情况下,织物将是使用的工具。

一般来说,一个好的配置将包含两者......但是从它的声音(管理 DHCP/网络/等)来看,Puppet 是值得的。

于 2010-06-28T04:53:31.573 回答