Мы объявляем всех наших пользователей виртуальными ресурсами. Например.:
@user { 'belmin':
uid => 2001
comment => 'Belmin Fernandez',
groups => ['sysadmins'],
}
Иногда мы временно realize
пользователь узла:
node web1 {
realize User['belmin']
(...)
}
Я исследую способы гарантировать, что пользователи, которые не реализованы в узле, не существуют на этом сервере. Первый способ, который приходит на ум, - это делать это, когда временное realize
устранен:
node web1 {
User <| title == 'belmin' |> {
ensure => absent,
}
}
Однако кто-нибудь может случайно пропустить это при удалении временного realize
. Есть ли другие более элегантные предложения?
Puppet имеет средства для удаления всех пользователей, которые не управляются явно. Это включает в себя виртуальных пользователей, которые не осознаются.
resources {
'user':
purge => true
}
Это игнорирует системных пользователей с UID ниже 500 (или 1000 для Debian и некоторых BSD). Обычно он поступает правильно. Излишне говорить, что это следует использовать с большой осторожностью.
При написании вопроса подумал о том, чтобы сделать что-то подобное в классе:
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
.
Я не совсем уверен, что это сработает, но выкладываю его, пока тестирую, на случай, если в нем есть слабость / проблема, которых я не заметил.