Puppet

怎樣才能保證那個puppet節點中不存在一個未被實現的使用者呢?

  • September 18, 2014

我們將所有使用者聲明為虛擬資源。例如:

@user { 'belmin':
   uid => 2001
   comment => 'Belmin Fernandez',
   groups => ['sysadmins'],
}

有時我們臨時realize為一個節點的使用者:

node web1 {
   realize User['belmin']
   (...)
}

我正在研究確保節點中未實現的使用者不存在於該伺服器上的方法。想到的第一種方法是在臨時realize刪除時執行此操作:

node web1 {
   User <| title == 'belmin' |> {
      ensure => absent,
   }
}

但是,在刪除臨時realize. 還有其他更優雅的建議嗎?

在寫這個問題時,想到在課堂上做這樣的事情:

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

我不完全確定這會起作用,但是在我測試它的時候把它放在那裡,以防它有我沒有發現的弱點/問題。

Puppet 有一種方法可以刪除所有未明確管理的使用者。這包括未實現的虛擬使用者。

resources {
   'user':
       purge => true
}

這會忽略 UID 低於 500 的系統使用者(對於 Debian 和一些 BSD,則為 1000)。它通常做正確的事。不用說,這應該非常謹慎地使用。

引用自:https://serverfault.com/questions/629198