Як маленькі хлопці можуть ефективно навчатись та використовувати Лялечку? [зачинено]


109

Півроку тому в нашому некомерційному проекті ми вирішили розпочати міграцію нашого системного управління в середовище, контрольоване маріонетками, тому що ми очікуємо, що кількість серверів значно зросте від цього року до року.

З часу прийняття рішення наші хлопці з ІТ стали занадто часто дратуватися занадто часто. Їх найбільші заперечення:

  • "Ми не програмісти, ми сисадміни";
  • Модулі доступні в Інтернеті, але багато хто відрізняється один від одного; колеса відновлюються занадто часто, як ви вирішите, яке з них відповідає;
  • Код у нашому РЕПО недостатньо прозорий, щоб знайти, як щось працює, вони повинні повторюватись через маніфести та модулі, які вони, можливо, навіть самі писали раніше;
  • Один новий демон вимагає написання нового модуля, конвенції мають бути подібними до інших модулів, складний процес;
  • "Давайте просто запустимо його і подивимося, як це працює"
  • Тон навряд чи відомих "розширень" у модулях спільноти: "трокла", "аугеас", "ієра" ... як наші системи можуть відстежувати?

Я можу зрозуміти, чому велика організація відправила своїх сисадмінів на курси ляльок, щоб вони стали майстрами ляльок. Але як би менші гравці могли навчитися ляльці на професійному рівні, якщо вони не відвідують курси і в основному навчаються це через свій браузер і редактор?

Відповіді:


101

Я почав використовувати Puppet до початку розгортання нової інфраструктури і просто придбав ( добре оцінену ) книгу на цю тему. Я не думаю, що більшість людей насправді отримують професійну підготовку ляльок. Я працював на прикладах, поки не зміг сформувати процес у своєму оточенні. Це був грудень 2011 року, тож протягом декількох тижнів я зміг зрозуміти основи та отримати виробничу основу. Я не був новаком в управлінні конфігурацією, маючи досвід CFEngine , але багато проблем ваших сисадмінів резонували. Я помилявся і кілька разів довелося переробляти, але в мене все працювало задовільно.

Кілька приміток до ваших пунктів ...

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

  • Лялькові модулі, доступні в Інтернеті, відрізняються стилем та структурою, і так, я бачив багато перекриттів, надмірності та дублювання зусиль. Один розробник, з яким я працював, сказав: "Ви могли б розробити свої власні інструменти за час, який ви витратили на пошук в Інтернеті на щось, що працює!" Це дало мені паузу, коли я зрозумів, що Маріонетка, схоже, більше сподобається типам розробників, ніж адміністраторам, які шукають кращих практик чи правильного підходу.

  • Документуйте сильно, щоб відчути, як пов’язані речі. Враховуючи хиткі визначення та відсутність стандартного способу виконання дій, ваша структура управління конфігурацією дійсно унікальна для вашого середовища. Цю прозорість потрібно буде розвивати в межах.

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

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

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

В цілому, я відчуваю, що не існує чітко визначеного стандарту, коли йдеться про Лялечку. У мене виникли проблеми з розгадами, як організувати структуру каталогів на своєму Puppetmaster, зрозуміти, як керувати підписом сертифікатів, встановити правильний зворотний DNS на своєму місці всюди, домогтися того , щоб Маріонет маштабував належним чином для оточення та розумів, коли використовувати модулі спільноти та будувати власні. Це зміна мислення, і я бачу, як це призвело б до паніки систематизму. Однак це рішення також було побудовано з нуля, тому я мав розкіш інструментів оцінювання. Рішення йти цим шляхом ґрунтувалося на розумі та швидкості, що стояла за Лялькою. Варто було докласти зусиль, щоб дізнатися щось нове.

Пам'ятайте, що і цей сайт є хорошим ресурсом.


20
Я перейшов, не маючи досвіду лялькок, до того, щоб моє повне оточення вдалося за два тижні. Я відповідаю за ~ 40 віртуальних машин, хоча і за всі Ubuntu. Це дуже спростило речі. Я за професією розробник. "Адаптувати або залишитися позаду" - я зараз devops + sysadmin + архітектор. Відмінна відповідь!
Франсуа Бозолей

Я рекомендую їм розпочати розгортання невеликих сервісів, спочатку в автономному режимі, а потім почати майстерність із більшою кількістю серверів. Мені не потрібно працювати з Лялькою, але у мене невеликий VPS, і я нещодавно зробив власні модулі ляльок. Якщо вони хочуть не відставати від решти сисадмінів у поточному столітті, їм краще бути відкритими. Я роблю це тому, що мені подобається, і, мабуть, не всім подобається вчитися новому, але одне, напевно, сьогодні сисадміни ближче до розробників, ніж будь-коли.
Серхіо Гальван

2
Я працюю в невеликій компанії і також біжу puppetd -tна тестування на пару ящиків, перш ніж натискати на всі сервери. Ніколи не виходить, що в парі є щось унікальне, що спричиняє невдачу моїх оновлень. Маріонеток набагато простіше, коли у вас є контрольоване та послідовне оточення для початку.
Йорданм

1
@ewwhite, я пропрацював підручник з лялькою в їхніх документах, але цікавився, якою книгою ти користувався під час навчання? Мені здається, що в навчальному посібнику, який було надано в документах, не було чогось, що перешкоджає клацанню зі мною, коли я працюю з Лялькою на тестових хостах, щоб дізнатися, що я роблю. EDIT: Або будь-які додаткові ресурси, які ви можете рекомендувати. Дякую.
Майк Келлер

1
@MikeKeller Мені це сподобалось у своєму дописі ... Але це доступно тут .
ewwhite

29

На попередній роботі мені було призначено виконати пілотну реалізацію Лялечки. Тепер у мене є програмування, хоч і не Ruby, тому у мене не так багато проблем, як у інших.

Однак цікаво відзначити, що програмісти, які не мають досвіду нетрадиційних парадигм, також мають проблеми з Лялькою, оскільки Лялька є декларативною , а не обов'язковою. У цьому сенсі Лялечка працює майже як і будь-який файл конфігурації: ви говорите, як все має бути, а Лялька піклується про інше.

Після пілоту я мав можливість навчити десяток інших адміністраторів з Лялькою, а також презентувати про це в двох заходах. Моє враження з цього досвіду полягає в тому, що деякі адміністратори взяли на це, а деякі ні. Це все традиційні адміністратори, без навичок програмування та різного рівня знань.

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

Виходячи з цих двох спостережень, я рекомендую вам переконатися, що кожен продовжує додавати якийсь клас ляльок, визначення чи модуль кожного тижня (бажано принаймні два-три рази). Тим, хто досі не може звикнути до цього, може дійсно бракувати навичок це робити.

Потім знову, якщо Лялька нав'язується їм з вищого рівня, вони можуть просто реагувати на те, що вони сприймають як керівництво, що втручається в те, як вони роблять свою роботу - що було б справді правдою. Можливо, так, якщо дозволити їм вибрати, яку систему управління конфігурацією використовувати, то покращить ситуацію. Ось кілька альтернатив:

  • АНСИБЛЕ : Це нове, але засноване на командах оболонки та ssh, які можуть привернути його до традиційних sysadmins.
  • Шеф-кухар : Можливо, їхньою проблемою є декларативний стиль, і в цьому випадку шеф-кухарю буде краще, якщо вони мають досвід Рубі.
  • SaltStack : на основі Python та з відкритим кодом
  • CFEngine : старий, швидкий, традиційний - він може перемогти їх за цією ознакою.

12
Найприємніше про АНСИБЛЕ - це те, що він працює на галактичних відстанях, абсолютно не затримуючи передачу даних!
Каламан

1
Дякую за ВІДМОВНУ згадку. Я до цього не знав.
ewwhite

@ewwhite Запрошуємо вас Я сам це нещодавно виявив, але багато про це привернуло мою увагу. Якби у нас ще не так багато в Лялькові, я б точно спробував це.
Даніель К. Собрал

11

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

  1. Зрозумійте, ви розробляєте програмне забезпечення, яке ви або не знаєте, як зробити, або робите погано. Це очікується, тому що це нове.
  2. Інфраструктура як код - це реальність, і як тільки ви перейдете горб, вона буде досить потужною. Я б запросив деяких розробників, продемонструйте їм ваш поточний процес розробки (або його відсутність), не ображайтесь, коли вони піднімають брови, і сприймайте їх пропозиції серйозно. Я рекомендую використовувати будь-яку систему та обробляти ваші розробники, якщо це зовсім невідповідно.
  3. Лялькові сторонні модулі висмоктують 90% часу. Я б їх прочитав. Я б крав ідеї у них. Я б не втягував їх у свою систему без великих змін. Однак я б втягнув у ляльковий stdlib, який додає певної функціональності.
  4. augeas та hiera. Вивчіть цих двох. Перший дозволяє складно редагувати наявні файли на місці. Другий - це зовнішній сховище даних.
  5. Відокремлений код від даних. Це одне з важчих понять, яке потрібно засвоїти. Значення жорсткого кодування, такі як Хостинг моніторингу для вашого коду модуля, є поганим. Поміщення їх у сховище даних (db, yaml (Hiera використовує це за замовчуванням), csv, що завгодно), які ваші модулі можуть споживати, це добре. Приклад - веб-версія, яка використовує Mysql. Що це дозволяє - це можливість поштовху коду та даних окремо. Це робить ваш процес розробки більш простим.
  6. перевірка маріонеткового парсера та маріонетка як частина вас перед або після поштового коду перевірки. Також тести rspec можуть бути хорошою ідеєю, коли ви швидко зробите.
  7. написати керівництво по стилю / стандарт коду і використовувати його. "де код, який встановлює Apache" - поширена проблема. Якщо ваші модулі здебільшого однакові, це повинно бути легко.

Підсумовуючи це, я торкнувся всіх цих проблем, і тому я маю більшість моїх друзів-сисадмінів. Знадобиться деякий час, щоб добре використовувати систему керування конфігурацією. Як тільки ви це зробите, вам буде цікаво, як ви коли-небудь жили без одного. "Увійдіть на сервер і вносите зміни вручну? Ick."


Дякую за ваші пропозиції, особливо augeas та hiera - це два компоненти, які ми почали реалізовувати, і це зробило нас набагато більш обізнаними, навіть впевненими у можливостях Лялечки. Тож дякую :-)
барабанний вогонь

7

Півроку тому в нашому некомерційному проекті ми вирішили розпочати міграцію нашого системного управління в середовище, контрольоване маріонетками, тому що ми очікуємо, що кількість серверів значно зросте від цього року до року.

Здається, що гарна ідея починати рано - Лялька - це не просто управління конфігурацією, це форма документації.

З часу прийняття рішення наші хлопці з ІТ стали занадто часто дратуватися занадто часто.

Їм потрібна корекція ставлення.

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

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

Модулі доступні в Інтернеті, але багато хто відрізняється один від одного; колеса відновлюються занадто часто, як ви вирішите, яке з них відповідає;

Важко відповісти - я завжди віддаю перевагу модулям лялькових робіт над більшістю, - і навіть при цьому я не використовую стільки. Вирок обов'язково. На мою думку, деякі модулі «надто вибагливі».

Код у нашому РЕПО недостатньо прозорий, щоб знайти, як щось працює, вони повинні повторюватись через маніфести та модулі, які вони, можливо, навіть самі писали раніше;

Це не схоже на проблему ляльок, але більше організаційне чи документаційне питання?

Один новий демон вимагає написання нового модуля, конвенції мають бути подібними до інших модулів, складний процес;

Цей демон може бути класом, якщо це досить просто в управлінні. Я не впевнений, що ви маєте на увазі під умовами, маріонеткові накладають на вас конвенції, чи не так? Або ми говоримо в порядку форматування коду?

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

Не так вже й погана ідея, якщо ви приймаєте її повільно і безпечно. Я б все-таки почав з VM, щоб отримати суть речей.

Тон навряд чи відомих "розширень" у модулях спільноти: "трокла", "аугеас", "ієра" ... як наші системи можуть відстежувати?

postfix, exim, sendmail, mysql, postgresql, iftop, iptraf, perl, perl модулі .. Виберіть те, що вам потрібно, і скористайтеся ним? Я думаю, що цей звук знову більше схожий на відношення ...

Я можу зрозуміти, чому велика організація відправила своїх сисадмінів на курси ляльок, щоб вони стали майстрами ляльок. Але як би менші гравці могли навчитися ляльці на професійному рівні, якщо вони не відвідують курси і в основному навчаються це через свій браузер і редактор?

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

Документація для ляльок при їх дотриманні є досить ретельною. Просто зверніть увагу на вбудовані типи та проведіть деякий час, розглядаючи, як складаються інші модулі. Я б не сказав, що це - надлегко - легко, але це також не є твердим. Це займе багато часу, щоб підготувати вашу інфраструктуру до лялькових, але вкладений час гарантовано буде добре витрачений при розширенні.


FYI, це відбувається від того, хто завершив підготовку інфраструктури. Тож я маю свіжий досвід і не можу сказати, що був витрачений час.
thinice

Як нещодавній початківець, я повністю визнаю себе у вашому коментарі.
Martijn Heemels

1
У моєму випадку зміна ставлення дійсно була необхідною. Опс любить автоматизацію та часто створює сценарії, тому це, головним чином, питання використання різних інструментів. Приємно відчувати, як ваш маріонетковий маніфест налаштовує всю машину чи нову послугу з нуля. Той факт, що помилка може вплинути на декілька машин одночасно, вимагає звикнути до більш жорсткого тестування, що може дратувати, але, очевидно, це добре. Експериментуйте з вагрантом, rspec-лялькою, лялькою-линвою, геппето, гілками Git та іншими безкоштовними інструментами, і незабаром ви відкриєте для себе улюблений робочий процес.
Martijn Heemels

1
Робота з Лялькою також допомогла мені вивчити Рубі, який замінив Bash як мою мову системних інструментів за замовчуванням.
Martijn Heemels

5

KISS (Нехай це просто нерозумно) - Не використовуйте нові технології лише тому, що вони є там, а тому, що у вас є вимога до них, використовуйте мінімальний мінімум, який вимагає ваше розгортання, оновіть, як потрібно, не намагайтеся йти в ногу з кровотечею край. Якщо ви почнете з базових налаштувань і будете базуватись на тому, що легше підбирати, як ви йдете, і їм не повинен бути потрібен курс (чи вони навіть доступні?).

Інша область, яку ви можете подивитися - це ваші сисадміни. Якщо вони також не можуть програмувати, то чи достатньо вони просунуті для великого розгортання, де більшу частину роботи потрібно сценаріювати будь-якими інструментами, якими ви користуєтесь?


4
... тому що ми очікуємо, що наша кількість серверів істотно збільшиться від сьогодні до року. Вимога?
Джефф Ферланд

1
Дійсно залежить від того, наскільки впевненим є те, що очікування, і якщо те, що ви поставите на місце, все-таки буде придатним до моменту, коли виникає потреба.
JamesRyan

+1 для "використовуйте мінімальний мінімум, який вимагає ваша розгортання" - Багато проблем з ляльковими проблемами, які я зіткнувся зі спробою змусити маріонетку контролювати все в системі.
Сірекс

5

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

Перш за все, я намагався триматися подалі від сторонніх модулів. Вбудовані інструменти обробляють 90% нашого управління. Найбільша сторона, яку я використовую, - це модуль брандмауера. Будь-які спеціальні факти тощо розробляються всією командою. Ми розробили модуль шаблонів і збережемо управління файлами, пакетом, послугами тощо.

По-друге, після стандартизації використання вбудованих модулів ми почали використовувати тигр Git та Atlassian's - безкоштовно для неприбутків, до речі - для проведення огляду всіх змін конфігурації. Це забезпечує бажану прозорість.

По-третє, я автоматизував налаштування для Puppet, щоб нові хости могли бути додані автоматично за допомогою стандартного набору параметрів. Існує кілька способів вирішення цього питання. Оскільки у мене вже було повне середовище Kickstart, я вирішив додати там сценарій.


4

"Ми не програмісти, ми сисадміни"

Моє, як змінилися часи, на гірше: сіра борода, як я, очікувалося, буде кращою програмісткою, ніж професійні програмісти, інакше ніколи б не змогла пройти системного адміністратора .

Тепер у нас є "системні адміністратори", які в основному є настільними користувачами Windows, які в якийсь момент перейшли на Linux і не можуть програмувати, і не знаходять у цьому нічого поганого.

Слон в кімнаті, тому керівництво терпить таке руйнівне ставлення. Згубний для кого чи що? До бізнесу та до інфраструктури.

Повернутися до теми "Лялька [, CFEngine, шеф-кухар]": як тільки хтось встановить таке рішення, він втрачає. Усі програють. Чому? Оскільки той, хто придумав цю ідею, не здатний розробити інкапсульоване управління конфігурацією у вигляді приємних, чистих, Kickstart [, JumpStart, Automated Installer, AutoYaST, Ignite-UX, NIM] пакетів операційної системи. Коли вам доведеться використовувати автоматизований інструмент для злому, як Лялька (або Шеф-кухар, або CFEngine), це означає, що вам не вистачає необхідності розробити та реалізувати процес, який за цим самим дизайном забезпечить цілісність і вимкнення керованих систем повністю автоматизована та абсолютно неінтерактивна.

Ще один важливий момент - якщо вам доведеться мати лялечку чи якесь таке рішення, щоб виправити комусь хакерську конфігурацію системи чи програми вручну, це також повертається до того, що не маю досвіду проектувати процес, а в цьому процесі - рамки, де конфігурація упакована на дискретні компоненти. Насправді той, хто реалізує Лялечку тощо, не має поняття власників компонентів, версій, керування конфігурацією, моделі зрілості можливостей. Це стрімко перетворюється на дуже серйозну проблему в галузі.

Робота з Лялькою також допомогла мені вивчити Рубі, який замінив Bash як мою мову системних інструментів за замовчуванням ".

Для чого потрібен Ruby, коли всебічне управління конфігурацією в кінці може бути інкапсульовано в розділи перед встановленням, післяустановкою, попередньою переміщенням та післяремонтацією пакетів операційної системи, просто за допомогою програм оболонки Bourne, AWK та sed? Щоб хтось пішов назустріч вивченню езотеричної мови Рубі, а діалект її в контексті Лялькових, абсолютно непотрібний. Проблема управління конфігурацією легко вирішується (і, на жаль, вирішено) за допомогою програм оболонок та AWK, і трохи седу (1) тут і там як клей.

Приємно відчувати, як ваш маріонетковий маніфест налаштовує всю машину чи нову послугу з нуля.

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

5.Окремий код від даних. Це одне з важчих понять, яке потрібно засвоїти. Значення жорсткого кодування, такі як Хостинг моніторингу для вашого коду модуля, є поганим. Поміщення їх у сховище даних (db, yaml (Hiera використовує це за замовчуванням), csv, що завгодно), які ваші модулі можуть споживати, це добре. Приклад - веб-версія, яка використовує Mysql. Що це дозволяє - це можливість поштовху коду та даних окремо. Це робить ваш процес розробки більш простим.

... Або ви можете просто шаблонувати свої конфігураційні файли зі змінними оболонок, навіть зворотними цитатами (наприклад ls -1 ...) та написати сценарій оболонки, який використовує AWK для виклику eval (1) та розширення всіх змінних у шаблоні, тим самим використовуючи точно такий же потужний аналізатор, в які вбудовані оболонки. Навіщо робити це складним, коли це може бути справді, дуже просто? Де ви будете зберігати значення конфігурації? Чому завгодно, як, наприклад, файли pkginfo (4), або база даних, як Oracle, або майже будь-де . Немає потреби в ультракомплексних рішеннях. У бібліотеці я згадую вище , може бути просто отримані з розділів Preinstall або послеустановочние в операційній системі пакетів, усуваючи тим самим дублювання і використовуючи центральну частину коду ...

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


1
Ви наче забули свою відповідь на запитання авторів.
М. Глаткі

Ця відповідь, здається, є передусім дискусією щодо думок, поглядів та інструментів, і насправді не стосується поставленого питання.
JonathanDavidArndt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.