我们正在编写一个基于 Web 的工具来配置我们由多个服务器提供的服务。这包括接口配置、dhcp 配置等。
在生成正确输出的数据库和视图中有配置,如何发送/使其可用于服务器?
我正在考虑通过 scp 发送它并通过 ssh 调用 reload 命令到服务。我也在考虑使用 Func 来完成所有工作,因为这是 Python 工具,并且似乎会与基于 Python 的 (django) 配置工具集成。
还有其他建议吗?
我们正在编写一个基于 Web 的工具来配置我们由多个服务器提供的服务。这包括接口配置、dhcp 配置等。
在生成正确输出的数据库和视图中有配置,如何发送/使其可用于服务器?
我正在考虑通过 scp 发送它并通过 ssh 调用 reload 命令到服务。我也在考虑使用 Func 来完成所有工作,因为这是 Python 工具,并且似乎会与基于 Python 的 (django) 配置工具集成。
还有其他建议吗?
我尝试使用 Puppet 进行配置管理,主要是因为它周围的所有嗡嗡声。不幸的是,我发现(为时已晚)puppetmaster 的扩展性非常糟糕,并且不能很好地处理异构环境。它适用于数十台服务器,但其固有的架构阻止了扩展。
所以我切换到了 Cfengine 3,你几乎没有注意到它对性能的任何影响,并且由于它的分布式架构而可以更好地扩展。此外,我后来发现 Puppet 只是在 Ruby 中低效地重新实现 Cfengine 2 的尝试。请参阅http://verticalsysadmin.com/blog/uncategorized/relative-origins-of-cfengine-chef-and-puppet
如果您的设置将用于一些有用的事情,而不仅仅是玩弄,请使用 Cfengine 3!
我认为您正在寻找Puppet和Foreman来管理 puppet(创建服务器组)。
有很多方法可以做到这一点,包括 Chef、Bcfg2、Capistrano 等。Puppet 现在拥有最大的“领先优势”。肯定有一个学习曲线,但结果是值得的。
您可以将服务器配置文件保存在 puppet master 上(在版本控制中)。当你在 master 上部署最新的配置文件时,puppet 客户端可以自动拉取它们并重新启动服务。Puppet“模板”可以为每个服务器动态生成配置文件。
Puppet 为包(apt、yum)、文件和操作系统感知等内容提供了“提供者”。
你可以看看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 访问。
这真的取决于你打算做什么,因为这个问题有点模糊。其他答案涵盖了可用的工具;选择一个而不是另一个归结为目的。
您是否打算管理服务器以及这些服务器上的服务?如果是这样,请尝试使用 Puppet、CFEngine 或其他一些工具来管理服务器配置。
或者,更具体地说,您是否正在寻找与服务器通信的部署/构建工具?这样您就可以输入类似于“mytool deploy myproject”的内容,并将您的项目传播到所有服务器?在这种情况下,织物将是使用的工具。
一般来说,一个好的配置将包含两者......但是从它的声音(管理 DHCP/网络/等)来看,Puppet 是值得的。