Чи Маріонетка або Шеф-кухар підходять для керування дуже базовим конфігурацією сервера в середовищі з кількома орендарями?


9

Це стосується середовищ для багатьох орендарів, таких як невелика хостинг-компанія.

Чи є Лялечка (або подібне) підходящою технологією для догляду за основними, але критичними змінами маси? Наприклад:

  • Оновлення DNS-резолюцій (resolutionv.conf)
  • Налаштування ключів SSH
  • Оновлення конфігурації NTP
  • Налаштування snmpd
  • Розгортання скриптів моніторингу, таких як розширення SNMP Perl або сценарії Nagios

Мої проблеми стосуються безпеки та інвазивності:

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

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

Відповіді:


6

Спробуйте Ansible (ansible.cc). Можливо, це для вас. Агент не працює на ваших клієнтах. Росте дуже швидко.

Ще одна дуже хороша альтернатива - сольова стека.

Ansible і Salt зрозумілі легко, ви можете використовувати їх як інструмент командного рядка, якщо хочете, як розподілений оболонку.


1
Я знаю, що це я давно запитував. Вам буде приємно дізнатися, що це була відповідь. Зараз ми використовуємо Ansible для автоматичного розгортання 10-ти серверів на день і керуємо 1000-мами в стилі пожежі та забуття. Це вже чудово вже більше року.
SimonJGreen

9

Так, це, безумовно, можливо. Вирішити, чи варто робити це чи ні, все ж залежить від вас.

Щодо ваших запитів:

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

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

3) Це справді проблема тестування та розгортання. Якщо у вас є надійний ляльковий код, він не вкрутить ваші файли. Щоб розібратися, потрібно трохи часу, але для основ (як вам потрібно) недовго.


4

Чи є Лялечка (або подібне) підходящою технологією для догляду за основними, але критичними змінами маси?

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

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

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

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

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

Існує кілька різних підходів до дозволу місцевих змін.

Один метод, який я часто використовую, наведений нижче. В основному, якщо ви передаєте список а source, лялечка спробує кожен елемент у списку. Тому я додаю перший елемент у списку, щоб вказати на локальний файл.

  file { '/etc/ssh/sshd_config':
    ensure => present,
    source => ["/etc/ssh/sshd_config_local",
               "puppet:///modules/ssh/$ssh_config_file"],
    ...
  }

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

  file { '/etc/ssh/sshd_config_puppet':
    ensure => present,
    source => "puppet:///modules/ssh/$ssh_config_file",
    ...
  }

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


1

3> У Лялькові чи в будь-яких подібних інструментах немає автоматичного скасування. Вам потрібно написати явний код, щоб скасувати. Крім того, ви можете досліджувати особливості середовища лялькових, мати тестувальну лабораторію, де перевіряється новий код (може бути VM), і використовувати огляд коду.


Не повністю правда. Шеф-кухар робить резервну копію будь-якого файлу, в якому він змінюється /var/lib/chefза замовчуванням (якщо ресурс не налаштований для резервного копіювання, наприклад, для конфіденційних даних), а за допомогою docформатера ви бачите різницю на вихідному терміналі.
Мацей Пастернацький

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

Ідея полягає в тому, що запуск керування конфігурацією є одностороннім. Немає підтримуваної процедури відкату, або повністю функціонує "сухий прогон" (у режимі шеф-кухаря є режим Whyrun, який є лише пропозицією / перевірянням здоровості, а не повною імітацією (див. Blog.afistfulofservers.net/post/2012/12/21/ … Для більш тривалого пояснення) Ви не можете змінити пароль користувача і т. Д. Тому я написав "не повністю вірно" - не підтримується відкат, але є мережа безпеки / налагодження, яка дозволяє бачити резервну копію, якщо щось піде не так, і вам потрібно поглянути. Нічого більше, але все-таки корисно
Мацей Пастернацький

І виявляється, я неправильно прочитав ваш коментар - це правда, що немає автоматичного скасування і вам потрібно написати явний (і, швидше за все, несправний) код, якщо ви спробували його автоматизувати. Я не можу редагувати свій оригінальний коментар, оскільки на нього відповіли - я думав про відновлення після аварій, а не про автоматичний відкат. Якщо ви хочете побачити автоматичний відкат, подивіться на nixos.org , BTW.
Мацей Пастернацький

1

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

Для конфігураційних файлів, створених за допомогою типу файлу лялечки, цього можна досягти, встановивши:

replace => false,

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

Однак це все-таки суперечить філософії Лялечки як ідентичного сценарію розгортання.

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


0

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

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

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

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