Вопрос: Как маленькие ребята эффективно учатся и используют Puppet? [закрыто]


Шесть месяцев назад, в нашем некоммерческом проекте, мы решили начать миграцию нашего системного управления в среду, контролируемую Puppet, потому что мы ожидаем, что число серверов будет значительно увеличиваться между настоящим и последующим годом.

Поскольку решение принято, наши ИТ-ребята стали слишком раздражать слишком часто. Их самые большие возражения:

  • «Мы не программисты, мы сисадмины»;
  • Модули доступны в Интернете, но многие отличаются друг от друга; колеса заново изобретаются слишком часто, как вы решаете, какой из них соответствует законопроекту;
  • Код в нашем репо недостаточно прозрачен, чтобы найти, как что-то работает, они должны рекурсивно проходить через манифесты и модули, которые они могли бы даже написать себе некоторое время назад;
  • Один новый демон требует написания нового модуля, соглашения должны быть похожими на другие модули, сложный процесс;
  • «Давайте просто запустим его и посмотрим, как он работает»
  • Тонны едва ли известных «расширений» в модулях сообщества: «trocla», «augeas», «hiera» ... как могут наши системные администраторы отслеживать?

Я понимаю, почему большая организация отправит своих системных администраторов на курсы кукол, чтобы стать кукольными мастерами. Но как бы мелкие игроки узнали о Кубке на профессиональном уровне, если они не ходят на курсы и в основном изучают его через свой браузер и редактор?


107
2018-06-06 08:38


Источник




Ответы:


Я начал использовать Puppet перед развертыванием новой инфраструктуры и просто купил (хорошо считать) книгу по этой теме. Я не думаю, что большинство людей действительно получают профессиональное обучение марионеток. Я работал над примерами, пока не смог сформировать процесс в моей среде. Это было в декабре 2011 года, поэтому в течение нескольких недель я смог понять основы и получить структуру производства. Я не был новичком в управлении конфигурацией, имея Cfengine но многие из ваших проблем сисадминов резонируют. Я допустил ошибки, и мне приходилось рефакторировать несколько раз, но я все хорошо работал.

Несколько замечаний по вашим пунктам ...

  • Роль традиционной системы администрирования меняется. Адаптируйте или оставите позади. Я был успешным системным инженером, но мне тоже нужно переделать (изучая Python, например). Фокус на отдельных серверах уменьшается, поскольку аппаратная абстракция через виртуализацию, а также облачные и частные облачные сервисы. Это означает автоматизацию системных задач и использование управления конфигурацией для борьбы с большим количеством серверов. Добавить Концепции DevOps к миксу, и вы увидите, что ожидания клиента / конечного пользователя и требования меняются.

  • Модули кукол, доступные в Интернете, отличаются стилем и структурой, и да, я видел много перекрытий, избыточности и дублирования усилий. Один из разработчиков, с которым я работал, сказал: «Вы могли бы разработать свои собственные инструменты за время, проведенное в Интернете, для чего-то, что работает!» Это помогло мне сделать паузу, поскольку я понял, что Puppet, похоже, больше подходит для разработчиков, чем администраторы, которые ищут лучшие практики или правильно подход.

  • Документ сильно, чтобы понять, как все связано. Учитывая неустойчивые определения и отсутствие стандарт способ сделать что-то, ваша структура управления конфигурацией действительно уникальна для вашей среды. Эта прозрачность должна быть разработана внутри.

  • Я бы сказал, что достаточно легко дублировать модуль для размещения нового демона или добавить службу в существующий манифест, в зависимости от того, как вы организовали свои серверы и роли.

  • Я потратил много времени на одну цель, прежде чем нажимать изменения на большие группы серверов. Запуск марионетки вручную на представительном сервере позволил мне отлаживать изменения и оценивать их влияние. Может быть, это немного консервативно, но это было необходимо.

  • Я не уверен, насколько я буду зависеть от модулей сообщества. Мне пришлось начните использовать Augeas для некоторой работы, и выразил сожаление по поводу того, что это была функциональность, которую я принял как должное в CFEngine.

В целом, я чувствую, что нет четкого стандарта, когда дело доходит до Puppet. Мне не удалось выяснить, как организовать структуру каталогов на моем Puppetmaster, понять, как управлять подписью сертификата, получать правильный обратный DNS повсюду, получение Марионеток соответствующим образом для окружающей среды и понимания того, когда использовать модули сообщества и строить свои собственные. Это сдвиг в мышлении, и я вижу, как это может вызвать панику сисадмина. Однако это было также решение, построенное с нуля, поэтому у меня была роскошь оценки инструментов. Решение идти таким образом было основано на mindshare и импульсе позади Puppet. Это стоило усилий, чтобы узнать что-то новое.

Запомнить, этот сайт также является хорошим ресурсом.


102
2018-06-06 09:02



Я отказался от опыта в Puppet, чтобы полностью справиться с состоянием окружающей среды за две недели. Я отвечаю за ~ 40 виртуальных машин, хотя все работает Ubuntu. Это упростило ситуацию совсем немного. Я по профессии разработчик. «Адаптироваться или остаться позади» - теперь у меня есть devops + sysadmin + architect. Отличный ответ! - François Beausoleil
Я бы рекомендовал им начать развертывание небольших сервисов, сначала в автономном режиме, а затем начать переделывать больше серверов. Мне не нужно работать с Puppet, но у меня есть небольшой VPS, и я недавно создал свои собственные модули Puppet. Если они хотят идти в ногу с остальными сисадминами в текущем веке, им лучше быть открытыми. Я делаю это, потому что мне нравится, и я думаю, что не всем нравится учиться чему-то новому, но одно можно сказать наверняка, в настоящее время системные администраторы ближе к разработчикам, чем когда-либо. - Sergio Galvan
Я работаю в небольшой компании, и я тоже puppetd -t для тестирования на пару коробок до нажатия на все серверы. Никогда не получается, что у пары есть что-то уникальное, из-за чего мои обновления терпят неудачу. Кукла намного проще, когда у вас есть контролируемая и согласованная среда для начала. - jordanm
@ewwhite, я проработал свой путь через учебник Puppet в своих документах, но задавался вопросом, какую книгу вы использовали при обучении? Мне кажется, что в учебнике, представленном в документах, отсутствовало то, что удерживало все от щелчка со мной, когда я работаю с Puppet на тестовых хостах, чтобы узнать, что я делаю. EDIT: или любые дополнительные ресурсы, которые вы можете порекомендовать. Благодарю. - Mike Keller
@MikeKeller Мне понравилось это в моем посте ... Но это доступна здесь, - ewwhite


На предыдущем задании мне была назначена задача выполнить пилотную реализацию Puppet. Теперь у меня есть программирование, хотя и не Ruby, поэтому у меня нет такой же проблемы, как другие.

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

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

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

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

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

  • анзибль: Это новое, но оно основано на командах оболочки и ssh, которые могут привлечь его к традиционным системным администраторам.
  • шеф-повар: Возможно, их проблема - декларативный стиль, и в этом случае шеф-повар будет лучше, если у них будет опыт Ruby.
  • SaltStack: На основе Python и с открытым исходным кодом
  • Cfengine: старый, быстрый, традиционный - он может победить их на тех основаниях.

30
2018-06-06 15:59



Самое приятное в ANSIBLE заключается в том, что он работает через галактические расстояния без всякой задержки в передаче данных! - Kalamane
Благодарим вас за упоминание ANSIBLE. Я до сих пор не знал об этом. - ewwhite
@ewwhite. Добро пожаловать. Я, сам, только недавно обнаружил это, но многое об этом привлекло мое внимание. Если бы у нас было не так много в Puppet, я бы определенно попробовал это. - Daniel C. Sobral


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

  1. Поймите, что вы разрабатываете программное обеспечение, которое вы либо не знаете, как делать, либо плохо выполняете. Это ожидается, потому что это новое.
  2. Инфраструктура как код - это реальность, и как только вы перейдете через горб, он достаточно мощный. Я бы пригласил некоторых разработчиков, покажу им ваш текущий процесс разработки (или его отсутствие), не обижайтесь, когда они поднимают брови, и серьезно относятся к их предложениям. Я бы рекомендовал использовать любую систему и обработать ваши разработчики, если это не будет совершенно неуместно.
  3. Кукольные сторонние модули сосут 90% времени. Я бы их прочитал. Я украл у них идеи. Я бы не втянул их в свою систему без больших изменений. Однако я бы потянул марионетку stdlib, которая добавила некоторые приятные функциональные возможности.
  4. augeas и hiera. Изучите эти два. Первый позволяет комплексное редактирование существующих файлов на месте. Второй - это внешний хранилище данных.
  5. Отделите код от данных. Это одна из самых сложных концепций для изучения. Значения жесткого кодирования, такие как «Мониторинг хостов» в коде модуля, являются плохими. Поместите их в хранилище данных (db, yaml (Hiera использует это по умолчанию), csv, что угодно), что ваши модули могут потреблять, это хорошо. Примером является webapp, который использует Mysql. Это позволяет использовать код и данные отдельно. Это упрощает процесс разработки.
  6. марионеточный парсер кукольный ворса как часть процесса предварительного или пост-кода. Кроме того, тесты rspec могут быть хорошей идеей, когда вы достигнете скорости.
  7. напишите руководство по стилю / код и используйте его. «где код, устанавливающий Apache», является общей проблемой. Если ваши модули в основном одинаковы, это должно быть легко.

В итоге я ударил все эти проблемы, и поэтому у большинства моих друзей-системных администраторов. Потребуется некоторое время, чтобы хорошо использовать систему управления конфигурацией. Как только вы это сделаете, вы задаетесь вопросом, как вы жили без него. «Заходите на сервер и вносите изменения вручную? Ick».


11
2018-06-06 18:04



Благодарим вас за ваши предложения, особенно augeas и hiera - это два компонента, которые мы начали внедрять, и это сделало нас гораздо более осведомленными, даже уверенными в возможностях Puppet. Так что спасибо :-) - drumfire


Шесть месяцев назад в нашем некоммерческом проекте мы решили начать   миграция нашего системного управления в среду, контролируемую марионеткой   потому что мы ожидаем, что число серверов будет значительно расти   между настоящим и годом.

Похоже на то, что начинать рано - Puppet - это больше, чем просто управление конфигурацией, это форма документации.

Поскольку решение было принято, наши ИТ-ребята тоже стали слишком   слишком часто раздражался.

Им нужна корректировка отношения.

"We're not programmers, we're sysadmins";

Опять же, отношение. Вы - можете - создать конфиг для сервера правильно? Вы можете облегчить работу с шаблонами / «программистом» в соответствии с вашими потребностями и сложностью эволюционирует,

Модули доступны в Интернете, но многие отличаются друг от друга; колеса   заново изобретаются слишком часто, как вы решаете, какой из них подходит   законопроект;

Жесткий ответ - я всегда предпочитаю модули марионетки на большинстве - и даже при этом я не использую это много. Судебное решение наверняка. На мой взгляд, некоторые модули «слишком оборваны».

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

Это не похоже на марионетку, но тем более на организационную или документационную проблему?

Один новый демон требует написания нового модуля, соглашения должны быть   подобно другим модулям, сложный процесс;

Этот демон может быть классом, если он достаточно прост для управления. Я не уверен, что вы подразумеваете под условностями, марионетка навязывает вам условности, не так ли? Или мы говорим в стиле форматирования кода?

"Let's just run it and see how it works"

Не такая уж плохая идея, если вы берете ее медленно и безопасно. Я все равно начну с виртуальной машины, чтобы понять суть вещей.

Тонны едва ли известных «расширений» в модулях сообщества: «trocla»,   «augeas», «hiera» ... как могут наши системные администраторы отслеживать?

postfix, exim, sendmail, mysql, postgresql, iftop, iptraf, perl, perl modules .. Выберите, что вы хотите и используете? Думаю, этот звук больше похож на вещь отношения снова ...

Я понимаю, почему большая организация отправила своих системных   Кукольные курсы, чтобы стать кукольными мастерами. Но как бы мелкие игроки   получить, чтобы узнать, что Кукольный на профессиональном уровне, если они не идут в   курсы и в основном изучать его через свой браузер и редактор?

Я не посещал никаких курсов - пока я я программист больше, чем системный администратор, я обнаружил, что ему не нужно много навыков программирования, чтобы добиться чего-либо.

Документация «Кукольный», если следовать, достаточно тщательна. Просто обратите внимание на встроенные типы и потратьте некоторое время на то, как собираются другие модули. Я бы не сказал, что это просто, но это не так. Это займет много времени, чтобы подготовить вашу инфраструктуру к марионетке, но время, потраченное на инвестиции, будет хорошо потрачено, когда вы расширяетесь.


7
2018-06-06 14:04



FYI это исходит от кого-то, кто-то закончил готовить свою инфраструктуру к рулону. Поэтому у меня есть свежий опыт и я не могу сказать, что это было потрачено время. - thinice
Будучи недавним стартером, я полностью признаюсь в ваших комментариях. - Martijn Heemels
В моем случае изменение отношения действительно было необходимо. Ops любят автоматизацию и часто создают сценарии, поэтому в основном речь идет об использовании разных инструментов. Приятно видеть, что ваш манифест Puppet настраивает всю машину или новую услугу с нуля. Тот факт, что ошибка может воздействовать сразу на несколько машин, требует привыкания к более строгим испытаниям, что может быть раздражающим, но, очевидно, это хорошо. Поэкспериментируйте с Vagrant, rspec-puppet, puppet-lint, Geppetto, Git и другими бесплатными инструментами, и вскоре вы обнаружите свой любимый рабочий процесс. - Martijn Heemels
Работа с Puppet также помогла мне изучить Ruby, который заменил Bash как мой язык системных инструментов по умолчанию. - Martijn Heemels


Я тоже работаю за некоммерческую деятельность, и я отвечал за то, что я впервые привез коробки Linux в дом и вскоре после этого куклу для управления ими. Есть пара конкретных вещей, которые мы сделали, которые действительно помогли добиться успеха.

Прежде всего, я старался держаться подальше от сторонних модулей. Встроенные инструменты обрабатывают 90% нашего руководства. Самая большая сторонняя утилита, которую я использую, - это модуль брандмауэра. Любые пользовательские факты и т. Д. Разрабатываются с участием всей команды. Мы разработали шаблонный модуль и поддерживаем управление файлами, пакет, службы и т. Д., Которые стандартизированы с этого шаблона.

Во-вторых, после стандартизации использования встроенных модулей мы начали использовать Git и Atlassian's Crucible - бесплатно для некоммерческих организаций, кстати, для проведения обзоров всех изменений конфигурации. Это обеспечивает желаемую прозрачность.

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


6
2018-06-06 13:50





KISS (держите его просто глупо). Не используйте новые технологии только потому, что они есть, потому что у вас есть требование для них, используйте минимум, необходимый для развертывания, при необходимости обновляйте, не пытайтесь идти в ногу с кровотечением край. Если вы начнете с базовой настройки и строите на ней, вам легче взять пикап, и вам не нужен курс (они даже доступны?).

Другая область, на которую вы можете смотреть, - ваши системные администраторы. Если они также не могут программировать, то они достаточно продвинуты для большого развертывания, где большая часть работы должна быть написана с использованием любых инструментов, которые вы используете?


5
2018-06-06 09:18



... потому что мы ожидаем, что число серверов будет значительно увеличиваться между настоящим и годом. Требование? - Jeff Ferland
На самом деле это зависит от того, насколько точно это ожидание, и если то, что вы создали, по-прежнему будет подходить к моменту возникновения необходимости. - JamesRyan
+1 для «используйте минимальный минимум, который требуется вашему развертыванию». - Из-за марионеточных проблем, с которыми я столкнулся, вы пытаетесь заставить марионетку контролировать все в системе. - Sirex


«Мы не программисты, мы сисадмины»

Мое время изменилось, к худшему: такой седой, как я, был ожидаемый быть лучшим программистом, чем профессиональными программистами, или иначе никогда бы не смог пройти Системный администратор,

Теперь у нас есть «системные администраторы», которые в основном являются настольными пользователями Windows, которые в какой-то момент перешли в Linux и не могут программировать, и не обнаруживают ничего плохого в этом.

Слон в комнате, почему руководство терпит такое деструктивное отношение. Разрушительно, кому или что? Для бизнеса и инфраструктуры.

Вернуться к теме Кукольный [, CFEngine, Chef]: как только вы зададите такое решение, одно проиграет. Все проигрывают. Зачем? Потому что тот, кто придумывает эту идею, не способен разрабатывать инкапсулированное управление конфигурацией в виде красивых, чистых пакетов Kickstart [, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM]. Когда вы должны использовать автоматизированный инструмент взлома, такой как Puppet (или Chef, или CFEngine), это означает, что вам не хватает средств для дизайн и воплощать в жизнь процесс, который по той же схеме обеспечит полностью чистое и осветит управляемые системы, полностью автоматизированные и полностью не интерактивные.

Другим важным моментом является то, что если вы должны иметь Кукольный или какое-то такое решение для верный кто то взлом конфигурации системы или приложения вручную, что также возвращается к тому, что у него нет опыта в разработке процесса, и в этом случае структура, в которой конфигурация упакована в отдельные компоненты. По сути, тот, кто реализует Puppet и т. П., Не имеет понятия владельцев компонентов, выпусков, управления конфигурацией, модели зрелости возможностей. Это быстро превращается в очень серьезную проблему в отрасли.

Работа с Puppet также помогла мне изучить Ruby, который заменил Bash как мой язык системных инструментов по умолчанию ».

Почему Ruby необходимо, когда комплексное сквозное управление конфигурацией может быть инкапсулировано в разделы preinstall, postinstall, preremove и postremove пакетов операционной системы, просто используя программы оболочки Bourne, AWK и sed? То, что кто-то будет изучать эзотерический язык Руби, и диалект его в контексте Кукольного, совершенно не нужен. Проблема управления конфигурацией легко разрешима (и остроумие, была решена) с программами оболочки и AWK, и немного sed (1) здесь и там как клей.

Приятно видеть, что ваш манифест Puppet настраивает всю машину или новую услугу с нуля.

Это еще более прохладная вещь, видя, что это сделали Kickstart, AutoYaST или JumpStart, без единой строки кода, и возможность запрашивать операционную систему, используя встроенные инструменты, не требуя каких-либо эзотерических или дополнительных программ, не требуется архитектура клиент-сервер (SSH является более чем прекрасным, более чем прекрасным), и видя, что ваша операционная система осознает все сделанные изменения.

5. Отделить код от данных. Это одна из самых сложных концепций для изучения. Значения жесткого кодирования, такие как «Мониторинг хостов» в коде модуля, являются плохими. Поместите их в хранилище данных (db, yaml (Hiera использует это по умолчанию), csv, что угодно), что ваши модули могут потреблять, это хорошо. Примером является webapp, который использует Mysql. Это позволяет использовать код и данные отдельно. Это упрощает процесс разработки.

... Или вы могли бы просто шаблон ваши файлы конфигурации с переменными оболочки, даже обратные кавычки (например, ls -1 ...) и написать сценарий оболочки, который использует AWK для вызова eval (1) и развернуть все переменные в шаблоне, тем самым используя тот же мощный синтаксический анализатор, который имеет встроенные оболочки. Почему это сложно, когда это может быть действительно, очень просто? Где вы сохраните значения конфигурации? Почему, где угодно, например, файлы pkginfo (4) или база данных, такие как Oracle, или в значительной степени в любом месте, Нет необходимости в ультракомплексных решениях. Библиотека, о которой я упоминал выше, может просто быть Sourced из разделов preinstall или postinstall в пакетах операционной системы, тем самым устраняя дублирование и используя центральную часть кода ...

Но, прежде всего, я считаю, что приведенная выше цитата является примером следующего поколения системных администраторов, которым необходимо заниматься не системными администраторами, а системные инженеры, Найди себе седину и подпишись как ученик.


4
2018-02-11 12:28



Кажется, вы забыли свой ответ на вопрос авторов. - M. Glatki
Этот ответ, по-видимому, в основном представляет собой дискуссию о мнениях, подходах и инструментах и ​​на самом деле не затрагивает вопрос, который задают. - JonathanDavidArndt