Можно ли добавить существующего пользователя в группу с Puppet 2.7.18?
У нас есть два модуля, каждый из которых определяет один класс:
- Модуль «пользователь» создает всех пользователей, включая пользователя foo и панель пользователя.
- Модуль "Subversion" работает с различными conf-файлами и создает группу SVN.
Мы бы хотели добавить пользователя foo в группу svn внутри модуля "subversion".
Я пробовал параметр членства, как описано в существующем запросе функции :
group {
"svn":
ensure => present,
gid => xxxxx;
}
user {
"foo":
group => ["svn"],
membership => minimum;
}
Но я получаю следующую ошибку:
ошибка: не удалось получить каталог с удаленного сервера: ошибка 400 на сервере SERVER: повторное объявление: пользователь [foo] уже объявлен в файле /pathto/modules/subversion/manifests/init.pp в строке xx; не может повторно объявить в /pathto/modules/users/manifests/init.pp:xxx на узле myserver.example.com
Эта функция уже реализована? Если нет, есть ли хороший обходной путь?
Использование виртуальных ресурсов Puppet - верный способ сделать это, но если вы не можете изменить определения пользователей и нуждаетесь в исправлении обходного пути, следующее ужасно и надуманно, но сработает:
По сути, мы просто проверяем, содержит ли somegroup пользовательский foo ... если нет, используйте обычные команды usermod, чтобы добавить его в дополнение к существующим группам, к которым принадлежит foo.
источник
getent group somegroup|cut -d: -f4|grep -q foo
чтобы не предполагать, что мы используем/etc/group
.path
параметр. Я предлагаю иметь глобальный ресурс по умолчанию, возможно, который тянет$PATH
с лица.Спасибо - безобразный хак, но он выполняет свою работу. Вот пример (объединяющий вышеупомянутые комментарии), чтобы добавить 'nrpe' в группу 'nagios'. Я использовал пакет require, поскольку пользователь здесь предоставляет RPM, а не puppet.
источник