我希望Puppet不管理密码(即在更改密码时将其重置),而是在Puppet创建用户时设置初始密码。
我当时正在考虑对设置密码notify
的Exec
资源执行操作,但是当Puppet管理的任何属性(例如,组成员身份,主目录等)被修改时,都会触发该操作。我不要那个。
有任何想法吗?
我希望Puppet不管理密码(即在更改密码时将其重置),而是在Puppet创建用户时设置初始密码。
我当时正在考虑对设置密码notify
的Exec
资源执行操作,但是当Puppet管理的任何属性(例如,组成员身份,主目录等)被修改时,都会触发该操作。我不要那个。
有任何想法吗?
Answers:
Puppet本身不支持“在创建用户时设置密码,但不支持”。
一种选择是设置外部身份验证源,例如LDAP。
另一个是您notify
的Exec
主意,但是会使您Exec
变得更聪明。
exec {
"/usr/sbin/usermod -p '${password}' ${user}":
onlyif => "/bin/egrep -q '^${user}:[*!]' /etc/shadow",
require => User[$user];
}
我还没有测试过,但是通过检查是否未在Exec
资源中设置密码,您应该得到想要的结果。我认为以这种方式设置notify
/ refreshonly
东西不是必需的,但可能不会受到伤害。
egrep '^${username}:!!:.*:' /etc/shadow
grep -Eq '^${user}:[*!]!?:' /etc/shadow"
似乎是最便携式的,不会用锁定的密码重置用户。
!
用于无密码设置,在这种情况下egrep -q '^${user}:[*!]:' /etc/shadow
效果更好。