FastNetMon

Monday 8 April 2013

Установка и использование Salt Stack на Ubuntu 12.04

Как многие в курсе, я нахожусь в поискать удобной системы для управления кучей удаленных машин в неблокирующем параллельном режиме, сейчас по рекомендациям на http://www.stableit.ru/2013/03/blog-post.html я решил попробовать Salt.

Что это? Грубо говоря, это способ асинхронного запуска команд на сотнях серверов в неблокирующем режиме. В умных книжках это зовется - орхестрация.

Установка клиента крайне проста:
wget -O - http://bootstrap.saltstack.org | sudo sh
Тех, кого (как и меня) смущуает работа чужих скриптов, выполняемых с рут привилегиями - прошу в код (я не смотрел, машина не боевая).

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

С установкой сервера все малость сложнее:
apt-get install -y salt-master
Он уже откроет пару портов для работы:

netstat -lnpt|grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      17545/python  
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      17531/python    

В порядке теста я использую домен hadoop.domain.org и для мастера и для клиента:


Корректируем адрес сервера для minion (клиент):
vim /etc/salt/minion
master: hadoop.domain.org
service salt-minion restart

На сервере получаем список входящих запросов установления подлинности (salt работает на сертификатах):
salt-key  --list-all
Accepted Keys:
Unaccepted Keys:
hadoop.domain.org
Rejected Keys:
Подписываем сертификат как довренный:
salt-key --accept=hadoop.domain.org
Key for minion hadoop.domain.org accepted.
Посылаем команду ping на клиента и мгновенно получаем ответ:
 salt '*' test.ping
hadoop.domain.org:
    True
Теперь посылаем самый первый уже практически значимый запрос:
salt '*'  cmd.run 'uname -a'
hadoop.domain.org:
    Linux hadoop.domain.org 3.2.0-39-generic #62-Ubuntu SMP Thu Feb 28 00:28:53 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

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

В целом - это моя мечта! 

Смущает лишь следующее:
  • Я хочу, чтобы minion работал от штатного юзера и лишь когда ему явно надо взять полномочия рута - делал sudo.
  • Также меня смущают проблемы с deployment, зависимостей не так много, но каждая из них может причинить неудобства.
  • Мне не нравится их инсталлятор все в одном, также не нравится какой-то левый репо для Debian 6, указанный в мануале.
  • Также ужасающий баг в безопасности то, что salt-minion сразу после запускае подключается к узлу salt.your_domain.name и если у вас там вбито что-то в стиле suxx.us он подключится на salt.suxx.us и если ему там ответят выполнит с рут привилегиями команды, что пошлет владелец сервера!!! Ребята-это ад кромешный!

Да, есть еще mcollective, но он завязан на ActiveMQ, что мне крайне не нравится.

Источник: http://docs.saltstack.com/topics/installation/index.html и http://www.linuxjournal.com/content/getting-started-salt-stack-other-configuration-management-system-built-python (эта статья меня в общем-то и воодушевила на установку Salt)

4 comments :

  1. Паша, можно глупый вопрос ?

    А чем тебя конфигурация chef + chef-client (в демон режиме) не удовлетворяет?

    ReplyDelete
  2. А оно умеет орхестрацию?

    А еще у аффтаров Шева проблемы с головным мозгом, а именно - поражение мозга эрлангом: In February 2013, Opscode released version 11 of Chef. Changes in this release included a complete rewrite of the core API server, in Erlang.

    ReplyDelete
  3. Ansible попробуй. Я был в восторге.
    http://ansible.cc/

    ReplyDelete
  4. Ansible вещь. Довольно новый продукт. Умеет всё, что и его конкуренты(асинхронный запуск, темплейтыи т.д.), но очень прост в изучении и использовании.

    ReplyDelete

Note: only a member of this blog may post a comment.