Перекрестная публикация от Ask @ PuppetLabs. (Там просто не хватает трафика.)
Я видел несколько примеров добавления пользователей в% wheel с помощью Augeas. Это все вариации одного и того же; вставка пользовательского узла в конце.
Что мне нужно сделать, так это удалить пользователей, добавленных вне управления конфигурацией. Чтобы Puppet мог управлять группой, должны присутствовать только пользователи, определенные в моем классе Puppet, а все остальные должны быть удалены.
Похоже, что выполнить простую команду Sed было бы намного проще, но многие люди говорят, что нужно держаться подальше от exec. Неужели в данном случае это плохое решение?
При таком определении пользователей колеса они будут добавлены, но если вы удалите Джейн из класса, она не будет удалена из группы колеса при следующем запуске Puppet.
class wheel {
augeas { "wheelgroup":
context => "/files/etc/group/wheel",
changes => [
'set user[1] bob',
'set user[2] jane',
]
}
}
Единственный способ, который я нашел, - это очистить группу колес и каждый раз заново добавлять их.
class wheel {
augeas { "wheelgroup":
context => "/files/etc/group/wheel",
changes => [
'rm user',
'set user[1] bob',
'set user[2] jane',
]
}
}
Я считал onlyif
чтобы соответствовать моим определенным пользователям, чтобы предотвратить его запуск при каждом запуске Puppet. Однако это также единственный способ удалить пользователей, добавленных за пределами Puppet, чтобы гарантировать, что% wheel управляется исключительно Puppet.
Это решение также не подходит для параметризации для повторного использования.
Возможно, можно было бы использовать Тип участников группы для особой настройки членов группы. Возможно, вам потребуется использовать параметр forcelocal.