我已经用谷歌搜索并阅读了“to-puppet-or-to-chef-that-is-the-question”文章。
我对用例感兴趣,在现实世界的实现中,人们根据实际问题选择了一个或另一个。
我对与 cobbler问题的集成特别感兴趣(我知道 puppet 是这个方向的标准方法);作为任何人在鞋匠 - 厨师整合方面的任何经验?
提前致谢
我有大约十几个 Linux 机器,偶尔需要在上面运行相同的命令。除了登录到每台机器并一次运行一个命令之外,是否有更简单的方法(或自动化方法)来做到这一点?它不是所有时间都相同的命令,也不是在预设时间,所以它不是像cron.
从我记事起,我们就一直在使用 cron 来处理我们所有的作业调度需求。从存储克隆/快照到数据库报告、日常系统报告再到监控检查,所有内容都通过 cron 安排在数百台服务器上。
缺点非常明显:难以管理作业,没有简单的方法来创建依赖项(尤其是跨不同服务器),当然,不可避免地有人“暂时”跳过作业但后来忘记删除注释。
我们尝试了一个商业产品,但最终它被认为是从 cron 升级的太贵了。
我看到了其他选项,例如 SLURM、Oracle Grid Engine、Torque/Maui、Quartz、DIET、Condor,它们似乎面向更大、更同质的集群环境,其作业可以在任意数量的类似节点上运行:网格计算之类的。我们的环境相当混合(各种 Linux、AIX 和 FreeBSD),我们需要在不同类型的系统之间创建依赖关系(例如,Linux 机器上的作业可能需要确定 AIX 机器上的作业是否应该运行。)
有没有人有从 cron 迁移到更集中管理的产品的经验?有什么选择软件的技巧,还是开源或商业化更好?
我发现我经常为我的许多客户设置几乎相同的服务器和 VPS,这可能非常耗时。通常,每次部署之间唯一变化的是要提供服务的不同网站。有没有一种简单的方法可以使所有这些自动化并消除设置 56 个相同服务器的无聊单调?
到目前为止,我部署的服务器只是 Ubuntu,但我可能会开始使用其他 linux 操作系统甚至 Windows。到目前为止,我已经看过 Capistrano,但它似乎专注于编写小的 ruby 程序来完成这项工作,而我根本没有任何知识
我有兴趣了解用于管理许多 Linux 机器的工具和技术。(即部署和维护更新。)
我想到的一种方法是编写一个 Bash 脚本,将另一个脚本上传到服务器并按顺序为每个服务器执行脚本。例如:
foreach server
{
connect to server and scp update_script.sh to ~/scripts
ssh user@server -e "sh ~/scripts/update_script.h"
}
Run Code Online (Sandbox Code Playgroud)
而 update_script 将使用apt-get/aptitudeoryum或任何东西来更新服务器上的包。
有没有更好的方法来做这样的事情?
我发现自己花了很多时间来设置新服务器。我总是拥有完全相同的软件堆栈:
nginx mysql php + php-fpm + xcache memcached munin
我从我的 github 存储库中提取所有配置和 init.d 脚本。
我所有的服务器都运行 Debian。我的第一步通常是 apt-get update 和 apt-get install vim(和其他基本包)。
Capistrano 或 Puppet 是否能够自动化这个过程?如果两者都是,哪一个更适合这份工作?
PS:我更喜欢 Capistrano,因为我对 Ruby 很满意。
linux ×2
puppet ×2
automation ×1
capistrano ×1
chef ×1
cluster ×1
cobbler ×1
condor ×1
cron ×1
deployment ×1
rhel5 ×1
torque ×1
vps ×1