Мы объявляем всех наших пользователей как виртуальные ресурсы. Например:
@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
}
Тогда на любом узле, для которого не реализован пользователь и перезаписан атрибут обеспечения
, этот пользователь будет гарантированно отсутствовать
.
Я не совсем уверен, что это сработает, но поставлю пока я тестирую его на случай, если в нем есть слабые места / проблемы, которых я не заметил.
Puppet имеет средства для удаления всех пользователей, которые не управляются явно. Сюда входят виртуальные пользователи, которые не реализованы.
resources {
'user':
purge => true
}
Это игнорирует системных пользователей с UID ниже 500 (или 1000 для Debian и некоторых BSD). Обычно он поступает правильно. Излишне говорить, что это следует использовать с большой осторожностью.