Навіщо використовувати шеф-кухаря / ляльку над сценаріями оболонки?


81

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

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

Відповіді:


56

Мова, що залежить від домену, значною мірою залежить від кількості написаного коду. Наприклад, ви можете стверджувати, що різниці між ними немає:

chmod 640 /my/file

і

file { "/my/file":
    mode => 640,
}

але є велика різниця між цими:

FILE=/my/file
chmod 640 $FILE
chown foo $FILE
chgrp bar $FILE
wget -O $FILE "http://my.puppet.server/dist/$FILE"
     # where the URL contains "Hello world"

і

file { "/my/file":
    mode => 640,
    owner => foo,
    group => bar,
    content => "Hello world",
}

Що станеться, якщо wget виходить з ладу? Як ваш сценарій вирішить це? А що станеться, якщо після цього у вашому скрипті є щось, для чого потрібен $ FILE з правильним вмістом?

Ви можете стверджувати, що його можна було просто поставити echo "Hello world" > $FILEв сценарій, за винятком того, що в першому прикладі сценарій повинен бути запущений на клієнті, тоді як маріонетковий компілює все це на сервері. Отже, якщо ви зміните вміст, вам потрібно змінити його лише на сервері, і він змінить його для стільки систем, скільки ви хочете розмістити на ньому. А лялечка обробляє залежності і переносить проблеми для вас автоматично.

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


9
@Paul Gear, це надмірне спрощення сказати, що інструменти керування конфігурацією - це шлях у довгостроковій перспективі. Наприклад, за допомогою AWS скрипт оболонки може побудувати сервер з нуля, запустити деякі тести, і як тільки ви переконаєтесь, що встановлення AWS нормально, зробіть зображення. Потім ви можете розгорнути це зображення в середовищі попереднього перегляду або інсценізації для подальших тестів, як тільки ви перевірите зображення, добре підходить для ваших цілей, тоді ви перейдете до виробництва. Інструменти управління конфігурацією взагалі не допомагають у цьому сценарії.
Дерек Літц

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

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

33

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

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

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


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

10
@ewwhite "коли ви вирішите автоматизувати проти" xkcd.com/1205
MikeyB

3
Більш сучасні інструменти, такі як Ansible, мають значно менші накладні витрати на розгортання / управління, ніж шеф-кухар або лялька, і вимагають майже ніяких залежностей (зокрема, Ansible - без агента). Це дійсно знижує планку для прийняття.
GomoX

2
@ewwhite Ви автоматизуєте, коли прагнете до особистої продуктивності. Ви вчитеся за допомогою автоматизації, ви не вчитесь, виконуючи земні завдання. Навчання = підвищення продуктивності та ітеративне вдосконалення. Автоматизація поєднується з цим, щоб отримати більше позитивних результатів. Це позитивний сніжний ком замість негативного. Технічний прогрес проти технічного боргу.
Дерек Літц

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

23

Ви відповіли на власне запитання ...

Автоматизація стає все більш масштабованою та формалізованою . Лялька та шеф-кухар сьогодні вважаються стандартами (перевіряйте оголошення про роботу ).

Сценарії оболонки з обмоткою мають своє місце, але вони не є масштабованими в контексті руху DevOps. Читання - це частина цього.


7
Чи сценарії оболонок якось менш формалізовані? Чи цитування оголошень про роботу робить аргумент переконливим? А девепс - це зовсім ганьба, бо він / розробник недостатньо експлуатується як розробник. Посилання насправді нічого не говорить про масштабованість. Чи є твердження, що сценарії оболонки не масштабуються? Я думаю, що Лялька цікава, але не обов’язково з причин у відповіді.
Акумен

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

1
"І девепс - це зовсім ганьба, бо він / він недостатньо експлуатується як розробник". Це просто не відповідає дійсності. DevOps - спеціалізація з розробки, як і веб-розробка. Закономірності та практики розробки програмного забезпечення все ще застосовуються. Ви повинні прочитати про DevOps.
Хаїм Елія

13

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

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

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

Ключові фрагменти:

  • Ідентифікація
  • Простота управління залежностями (версія)
  • Стандартизована організація (приймається на галузевому рівні)
  • Абстракція окремих завдань конфігурації сервера від деталей про рівень системи
  • Здатність використовувати знання громади (що гарантовано охоплює всі вищезазначені принципи)

3
Ідентифікація навряд чи неможлива за допомогою ss. Залежності добре управляються yum / apt тощо. Прийняття не має значення. Знання громади існує для сс. Однак я погоджуюсь, що не потрібно копіювати купу сценаріїв, а також конфігурувати системи централізовано. Я чую, що маріонетка потребує агента на стороні клієнта.
Acumenus

10

Сучасні засоби управління конфігурацією, такі як Puppet та Chef, дозволяють визначити стан системи, а не турбуватися про діяльність, необхідну для досягнення налаштованого сервера.

Наприклад, ваша команда chmod передбачає, що файл існує, користувач, який володіє файлом, існує, що створені каталоги тощо. Тому ваш сценарій повинен враховувати всі ці передумови.

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


1
Насправді мій chmodне припускає, що файл існує, тому що файл був створений сценарієм або перевірений на існування.
Acumenus

9

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

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

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

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

Ще одна вигода - громада: є дуже багато людей (багато з яких будуть розумнішими та / або досвідченішими за вас). Особисто я люблю це, коли хтось інший зробив свою роботу за мене, часто більш масштабно, ніж я б.


1

Я створив структуру сервера автоматизації сервера на основі оболонки: https://github.com/myplaceonline/posixcube

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

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