我希望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效果更好。