Puppet: как создавать и управлять пользователями и группами Unix

12

На прошлой неделе я потратил все силы на изучение кукол. Теперь я страдаю от переполнения ментального буфера и не уверена, что когда-либо смогу приручить этого зверя. Я сталкивался со многими аннотированными примерами, но из-за их бесчисленных вариаций я не могу различить рекомендуемый (недавний) стиль кукол и условные обозначения, и специальные подходы «работает для меня». Я терпеть не могу, потому что это похоже на вещи базового уровня.

Так. Используя Puppet для управления группами и пользователями, основная группа пользователей равна их собственному имени пользователя, другие группы могут быть предназначены lanдля сетевых входов в систему, wheelдля администраторов, shellдля пользователей с оболочкой на произвольных узлах, mailдля пользователей, daemonsдля различных демонов. Вход администратора будет осуществляться на всех узлах, и, что еще хуже, вход в локальную сеть также может быть входом в оболочку.

Из того, что я понимаю, можно определить пользователя несколько раз, если вы используете виртуальные определения, которые реализуются в какой-то момент. Звучит потрясающе, так как это работает с несколькими группами для пользователя? Скажем, Боб может использовать как узлы локальной сети, так и узел beastie.wan; тогда его логин thebobопределяется два раза, в lanusers.pp с groups => ["lan"]и в shellusers.pp с groups => ["shell"]? Что, если Боб хочет, чтобы его пароль для локальной сети был отделен от его пароля оболочки?

Код, который я сейчас использую, не имеет виртуальных определений, пользователи - это просто жестко запрограммированные отдельные включения. В какой-то момент я наткнулся на пример с использованием виртуальных машин, и именно здесь я застрял, потому что я не понимаю, как развернуть код, чтобы Puppet создал первичную группу и необходимые группы, которые я определил вначале, а затем присоединился к пользователю в этих группах. ,

Правильно. Пожалуйста, скажите мне правильно.

ураганный огонь
источник

Ответы:

6

Теперь я страдаю от переполнения ментального буфера и не уверена, что когда-либо смогу приручить этого зверя.

Первое: расслабься. Я узнал, что когда вы новичок в изучении чего-то такого, как Puppet, довольно легко стать подавленным и не иметь возможности сделать многое.

тогда его логин thebob определяется два раза: в lanusers.pp с groups => ["lan"] и в shellusers.pp with groups => ["shell"]?

Нет. Практически определить это в одном месте (может быть users.pp) с groups => ['shell', 'lan',].

На узлах осознайте, какие пользователи вам нужны. Например, если node beaminмы хотим, чтобы все shellпользователи:

node beamin {
    Account <| groups == 'shell' |>
}

Что, если Боб хочет, чтобы его пароль для локальной сети был отделен от его пароля оболочки?

Тогда Боб, вероятно, должен получить 2 разных аккаунта с разными логинами.

Бельмин Фернандес
источник
Благодарю. Ты прав насчет первой части, я действительно ошеломлен. Но ваш второй ответ помог, казалось, что он заставил другие мысли двигаться, и теперь у меня есть манифест, который работает правильно, с практически определенными пользователями, которые реализуются в их правильных местах. Спасибо, что помогли мне с этим. :)
барабанная дробь
Не проблема. До виртуальных объявлений эта проблема имела очень запутанное решение. Считай, что тебе повезло, что ты попал на борт Puppet express сейчас ;-).
Бельмин Фернандес
Я использую виртуальные объявления, но мне нужно, чтобы некоторые пользователи были в группе "sudo" на некоторых хостах, а не на других. Это не решает этот сценарий (и мне трудно понять, что делать: D).
jjmontes
3

Puppet плохо справляется со сложным управлением пользователями / группами. Вы бы гораздо лучше развернули что-то вроде LDAP - насколько мне это не нравится, это будет работать намного лучше, чем пытаться заставить Puppet подчиниться.

ombble
источник
Или FreeIPA. Puppet хорош для учетных записей служб, которые должны быть в системе, но не должны управлять обычными пользователями ...
ewwhite
4
При всем моем уважении (то, что вы - лучший участник SF): я не думаю, что это отвечает на вопрос. В: «Как мне создавать и управлять пользователями и группами Unix в Puppet?». A: «LDAP». Я считаю, что такие ответы лучше подходят для комментариев. Конечно, если это обсуждалось ранее в мета или что-то, может быть, я просто не информирован. Пожалуйста, не ненавидь меня :-).
Бельмин Фернандес
3
@ BeamingMel-Bin: на SF существует сильный дух «правильного инструмента для работы». Если кто-то спрашивает: «Как лучше всего ударить по этому винту молотком, чтобы он вошел в него?», Мы скажем: «купите отвертку», а не дайте длинных трактатов о преимуществах различных техник молотка. Это потому, что большинство опрошенных здесь настолько неопытны или невежественны, что не знают, что существуют лучшие решения, и даже не могут существовать лучшие решения (и, следовательно, они не знают, что спрашивать), есть ли лучший способ управлять этим? винт? »или« как лучше въехать в этот винт? »).
womble
1
@drumfire: Опять же, если вы спрашиваете, как сделать что-то глупое, правильный ответ - «не делай этого». Так работает СФ. Мы здесь не для того, чтобы помогать людям делать глупости, мы здесь для того, чтобы создавать более эффективных системных администраторов.
womble
3
SF, являясь частью первоначальной трилогии, существует намного дольше и обладает гораздо более сильным «независимым духом», чем другие, более однородные сайты SE. Есть также состав пользователей, чтобы рассмотреть. Сисадмины капризны и самоуверенны.
Уомбл