Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

будет ли его логин thebob затем определен два раза, в lanusers.pp с группами => ["lan"] и в shellusers.pp с группами => ["shell"]?

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

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

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

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

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

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