我们怎样才能确保一个没有实现的用户不在该傀儡节点中?

我们将所有用户声明为虚拟资源。 例如:

@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,以防万一有一个弱点/问题,我不发现。