如何使用 Puppet 跨服务器同步用户密码?

如何使用 Puppet 跨服务器同步用户密码?

我被指派使用 Puppet 在任意数量的服务器上同步用户密码,这样用户就可以更改一次密码,并将更改推送到任意数量的服务器。我看到的大多数建议都是使用其他东西,比如 LDAP,但我被特别指示使用 Puppet。

到目前为止,我只有一个类,它在运行时设置用户的密码。它应该从 facter 中获取用户 ID,以防止某人更改他人的密码。

class pwdchange ($newpassword = '') {
  user {"$::id":
    ensure   => present
    password => $encryptednewpassword
  }
}

我正在寻找的是如何获取明文参数,检查它以确保它是一个好的密码,并使用 md5 加密它。我将这样做以从 到newpasswordencryptednewpassword我需要在命令中使用 exec 资源吗md5sum?或者我应该有一个使用 ruby​​ 代码加密密码的模板?或者有没有我没有看到的简单易行的方法?

答案1

我知道这对解决您的问题没有多大帮助,但我建议您回到您的管理团队并解释为什么这是一个糟糕的设计,以及为什么我们已经不再使用旧的 NIS 通过网络复制密码文件。需要考虑的几件事是,LDAP 将提供一个位置来管理 sudoers、自动挂载、组权限、用户权限、用户访问(userX 只能登录 hostX),并且配置起来并不困难。如果您有 AD 环境,您可以针对该环境进行身份验证。

但如果你必须这样做,那就让它简单一点。我会抓取密码/影子/组并使用一个系统来创建用户,并让 puppet 确保该字符串存在于以下文件中,但如果我没记错的话,你将必须使用 erb 模板来添加动态和静态内容。

我希望这会有点帮助。

相关内容