我们将所有用户声明为虚拟资源。 例如:
@user { 'belmin': uid => 2001 comment => 'Belmin Fernandez', groups => ['sysadmins'], }
有时我们暂时realize一个节点的用户:
node web1 { realize User['belmin'] (...) }
我正在研究如何确保节点中未实现的用户不在该服务器上。 首先想到的方法是在临时realize被删除时执行此操作:
node web1 { User <| title == 'belmin' |> { ensure => absent, } }
但是,在临时realize的去除中,很容易被人忽略。 还有其他更优雅的build议吗?
木偶有一种方法来删除所有未明确pipe理的用户。 这包括没有得到实现的虚拟用户。
resources { 'user': purge => true }
这会忽略UID低于500的系统用户(或者Debian和一些BSD为1000)。 它通常做正确的事情。 不用说,这应该使用非常谨慎。
在写这个问题时,想到在课堂上做这样的事情:
class our_users { user { 'belmin': ensure => absent, uid => 2001 comment => 'Belmin Fernandez', groups => ['sysadmins'], } }
然后,在节点中:
node web1 { include our_users User <| title == 'belmin'|> { ensure => present, } } node web2 { include our_users }
然后,任何没有实现用户的节点和覆盖的ensure属性都将使用户确保absent 。
我并不完全肯定,这将工作,但把它放在那里,而我testing,以防万一有一个弱点/问题,我不发现。