пятница, 15 января 2016 г.

Автоматизация администрирования Linux/UNIX серверов (часть 1)

Автоматизация администрирования серверов для Веб при помощи Salt.


SaltStack или коротко Salt  - это Open Source система централизованного управления конфигурацией операционных систем и программ, установленных на серверах. Система достаточно мощная, масштабируемая и позволяет управлять десятками тысяч серверов одновременно и быстро.

Salt система аналогичная Chef и Puppet, но в отличии от них написан на языке Python, который пока является основным языком автоматизации у Linux администраторов и DevOps. Кроме этого, он относительно менее требователен к ресурсам и немного проще в использовании (на наш взгляд). Salt использует на сетевом уровне проверенную библиотеку ZeroMQ, что позволяет обновлять конфигурацию серверов очень быстро.

Две основные функции Salt: управление конфигурацией и удаленное выполнение команд. Работать с Salt можно только из командной строки. Благодаря этому систему просто установить и начать использовать даже на слабом оборудовании.  В любом случае, большинство Linux или UNIX серверов не включают в себя графический интерфейс.

Способы работы с Salt.


Использование Salt без установки Мастера.


Основная архитектура Salt состоит в установке централизованного master и Salt minions (клиентов) на удаленные машины.
Однако, вы можете использовать Salt и для настройки одного единственного сервера. Для этого достаточно установить на сервер только minion. Он содержит широкие функциональные возможности для самостоятельной работы и предназначен для:
  • Использования команды salt-call  в системе без подключения к мастеру
  • Запуска сценариев конфигурирования локально, по аналогии, как это делается с Мастера для удаленных серверов
Конфигурационные файлы при этом расположены также как на Мастере:
minion# ls /srv
formulas pillar salt
Только вместо команды:
master# salt remote-host state.highstate 
Используется команда:
minion# salt-call state.highstate

Выполнение команд Salt через SSH без установки minion.


Вы можете использовать Salt для автоматизации работы с серверами при помощи SSH без установки minion на управляемые узлы. Для этого нужно установить пакет salt-ssh на Мастер сервер Salt. Для Debian и Ubuntu это можно сделать так:
master:~$ sudo add-apt-repository ppa:saltstack/salt
master:~$ sudo apt-get install salt-ssh

master:~$ sudo dpkg -l | grep salt-ssh
ii  salt-ssh    2015.5.3+ds-1trusty1    all     remote manager to administer servers via salt
Далее включить в конфигурационный файл salt-ssh требуемые для управления узлы:
master# cat /etc/salt/roster
web1:
  host: web1 
  user: useradmin
  passwd: admin_pass
  sudo: True
При включенной опции    sudo: True  пользователь на удаленном узле websrv1 должен быть прописан в sudoers c опцией NOPASSWD.
web1:~$ cat /etc/sudoers | grep useradmin
useradmin ALL=(ALL) NOPASSWD: ALL
После этого мы можем выполнять команды на удаленном узле:
root@master:~# salt-ssh -i '*' cmd.run "service nginx status"
Executing job with jid 20151224154255487679
-------------------------------------------
web1:
    * nginx is running

Или:

root@master:~# salt-ssh -v web1 cmd.run "du -sch /var/log"
Executing job with jid 20151218192723210705
-------------------------------------------

web1:
    11G /var/log
    11G total