在 3000 多个 Solaris、AIX 和 Linux 服务器上更改 root 密码的最佳方法是什么?

fiz*_*ers 12 linux unix ssh password root

长话短说:大型老公司,大量 UNIX/Linux 服务器。

我继承了几年前留下的一堆脚本的责任。其中之一是一个脚本,该脚本每 X 个月运行一次,以全局更新我们所有服务器上的 root 密码。

该脚本是一堆 Shell 脚本和 Expect,它在我们所有服务器和中央命令和控制服务器之间建立的 SSH 信任上工作。

问题是,剧本一团糟。Expect 命令试图说明存在于任何 UNIX/Linux 机器上的每个可能版本的“passwd”——它们差异很大。

随着我们扩展和升级很多基础设施,脚本变得非常难以管理。

我的问题是:有没有更好的方法来做到这一点?假设已经建立了 SSH 信任,同时更改 3000 多台服务器上的 root 密码的最佳方法是什么?

tom*_*omi 17

使用人偶

Puppet 非常灵活,易于维护并使用 SSL。听起来可能有点矫枉过正,您必须付出一些额外的努力来构建 Puppet 系统。

但。这很可能不是您对这些机器进行的最后一次大规模更新。当实际的任何大规模更新过程开始并且脚本非常可读/可重用时,Puppet 将会并且确实为您节省了大量时间。

至少几年前这对我有用,而且我仍然可以重复使用其中一些 Puppet 食谱(又名脚本)。我还在较小的环境中使用了它,只需确保每台机器实际上都具有已知状态

我已经多次(在许多公司)证明,所有定制的部署脚本在一段时间后或当下一个人介入时都会变得痛苦。而且只要你带着手机,旧的脚本就会并且确实困扰着你。

如果您认为这听起来不错,这里有一个很棒的 Puppet 教程,其中包含虚拟环境,可以帮助您入门。

  • 请更正您的答案,puppet 使用 SSL,而不是 SSH。同意其余部分,尽管 [ansible](http://ansible.cc) 似乎是更适合此用例的轻量级替代方案。只需在 GNU/Linux 机器中使用 `pip install ansible`,构建一个主机列表和 `ansible -m user -a "password=$crpyt"`。不需要代理。开箱即用地管理 GNU/Linux、AIX 和 Solaris。 (7认同)
  • 同意,但*不要*使用 `user{"root":}` 来设置密码。相反,使用一个更安全的`exec{"chpasswd -e ..."}`。 (4认同)