我有一个小集群,由几个 Linux 节点组成。有一个共享的 NFS,我在所有节点上都有相同的用户帐户和共享的 SSH 密钥,但除此之外,每个节点都有自己的文件系统和配置。
我希望能够从中心节点控制所有节点的配置。典型的配置主要由配置文件组成,既在用户目录中,也在/etc
或中/opt
。有时我也需要在所有节点上安装相同的软件包或运行其他 shell 命令。
这是一个小型集群,几乎不需要企业级自动化系统或其他复杂安装。您是否尝试过并测试过其他方法,最好是轻量级和开源的?或者甚至直接基于 BASH/SSH 黑客?谢谢。
答案1
我强烈推荐 Saltstack。它灵活、可扩展、轻量且免费。
答案2
Ansible如果您使用 Homebrew 从 Linux 或 Mac OS X 控制它们,应该可以解决问题。控制机器不支持 Windows。Linux 节点需要有 SSH 和 Python,但由于大多数 Linux 发行版默认安装 Python,因此您可能已经满足要求。您需要做的就是安装在 master 上使用 ansible,这应该很容易。
观看 23 分钟快速入门视频以获得更好的想法。我还建议看看临时命令简介文档中的部分内容:
在组中的所有服务器(在本例中为 atlanta)上运行该命令,以 10 个并行分叉运行:
$ ansible atlanta -a "/sbin/reboot" -f 10
确保软件包已安装,但不要更新它:
$ ansible webservers -m yum -a "name=acme state=installed"
要将文件直接传输到多个不同的服务器:
$ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
确保所有网络服务器上都启动了服务:
$ ansible webservers -m service -a "name=httpd state=started"
也有一些例子剧本。
答案3
答案4
尝试预计脚本。它们是在多台机器上自动运行相同任务的绝佳方式。
使用 expect 脚本,您无需手动登录每台机器并一遍又一遍地执行相同的任务。我用它来做诸如在所有机器上更改用户密码、在每台机器上运行检查脚本等事情。