Как установить и настроить Salt Master и Minion Servers на Ubuntu 14.04

SaltStack –  это мощная, гибкая и высокопроизводительная система управления конфигурациями и удалённого выполнения операций. С помощью этого удобного инструмента можно централизованно управлять инфраструктурой, затрачивая при этом минимум усилий. Если вы хотите узнать  о других терминах и инструментах, связанных с SaltStack, ознакомьтесь с этим руководством.

В этой статье будет сделан акцент на центральную службу Salt Master («мастер»), которая обеспечивает возможность управлять инфраструктурой. Здесь также будет показано как установить демон Salt Minion («ставленник», «приближённый», «миньон») на другие компьютеры, чтобы впоследствии управлять ими при помощи центральной службы Salt Master. Чтобы продемонстировать эти шаги нам понадобятся 2 сервера Ubuntu 14.04.

Подготовка

Демон Salt Minion можно установит на Ubuntu 14.04 несколькими способами. Ниже перечислены плюсы и минусы каждого способа:

Ubuntu SaltStack PPA:  Использует родной менеджер пакетов Ubuntu, который нужен для установки и обновления необходимого программного обеспечения. Это самый простой способ установки, но, пакеты могут быть устаревшими.

•  Salt-Bootstrap: Это скрипт самонастройки, который пытается обеспечить более универсальный метод для установки и настройки Salt. Он может попытаться установить собственные программные средства, но если они недоступны, то он будет устанавливать их из PPA. Этот способ предоставляет доступ к версиям Salt, которые в данный момент находятся в разработке.

Ниже кратко описан способ установки из Ubuntu PPA. Также будут предоставлены инструкции как  использовать второй способ:  c помощью salt-bootstrap  будут установлена как разрабатываемая, так и стабильная версии  Salt Master.

В итоге вы сами должны решить какой метод вам нравится больше.

Установка стабильной версии с официального PPA

Установка из Ubuntu PPA является наиболее простым способом установки.

Чтобы начать работу, вы должны добавить репозиторий SaltStack PPA на сервере, который будете использовать в качестве master(мастера). Вы можете сделать это, набрав:

saltmaster$ sudo add-apt-repository ppa:saltstack/salt

После того, как вы подтвердили добавление PPA, он будет добавлен в систему. После того, как вы добавили нужный репозиторий, то нужно обязательно обновить список пакетов. Для этого вводим следующую команду:

saltmaster$ sudo apt-get update

После этого вы можете установить соответствующее программное обеспечение:

saltmaster$ sudo apt-get install salt-master salt-minion salt-ssh salt-cloud salt-doc

В приведенной выше команде, мы установили как Salt Master («мастер»), так и Salt Minion. Это позволит нам контролировать наш главный сервер с Salt. Мы также установили salt-ssh и salt-cloud, которые дадут нам больше возможностей в том, как мы соединяемся с ресурсами и управляем ими. Также мы получили пакет документации.

Итак, с установкой покончено и можно перейти к разделу начальной конфигурации мастера, чтобы получить  новые услуги и начать работать.

Установка стабильной версии с помощью Salt-Bootstrap

Альтернатива использованию PPA – это  установка стабильной версии с помощью salt-bootstrap. Данный сценарий доступен на официальном сайте SaltStack. Одна из причин, по которой стоит выбрать данный метод, является то, что он захватывает зависимости из  менеджера пакетов pip. Это позволит вам получить более современные версии некоторых зависимостей Salt.

Чтобы приступить к работе, перейдите в свой домашний каталог или туда,  где у вас есть права на запись.Мы можем использовать curl, чтобы загрузить скрипт salt-bootstrap. Мы будем следовать инструкциям, приведенным на GitHub странице  salt-bootstrap:

saltmaster$ cd ~
saltmaster$ curl -L https://bootstrap.saltstack.com -o install_salt.sh

На данной стадии, посмотрите на сценарий, чтобы убедиться, что не сделали ничего лишнего:

saltmaster$ less ~/install_salt.sh

Скрипт начальной загрузки Salt поддерживается командой SaltStack, но вы всегда должны проверять содержимое внешних скриптов перед их запуском.
Когда вы убедитесь, что все проверили, запустите скрипт при помощи команды sh. Мы будем использовать флаг -P, чтобы скрипт мог использовать pip в качестве источника зависимостей. Без этого флага, установка, скорее всего, не удастся. Нам также необходимо включить флаг -M, чтобы установлен мастер-демон Salt. Все вспомогательные утилиты Salt будут автоматически включены.
Полная команда будет выглядеть так:

saltmaster$ sudo sh install_salt.sh -P -M

Установка разрабатываемой версии с помощью Salt-Bootstrap

Мы можем также использовать скрипт начальной загрузки Salt, чтобы установить разрабатываемую версию Salt при помощи Git. Это нужно вам, если вы хотите получить доступ к новейшим функциям и большему количеству исправленных багов, которые могут быть не доступны в  PPA.

Сценарий нужен такой же как скрипт начальной загрузки Salt, который мы использовали выше. Только параметры, которые мы используем будет отличаться. Если у вас нет сценария, загрузите его в свой домашний каталог:

saltmaster$ cd ~
saltmaster$
curl -L https://bootstrap.saltstack.com -o install_salt.sh

Опять же, взгляните на сценарий, чтобы убедиться, что все в порядке с операциями, которые он будет выполнять:

saltmaster$ less ~/install_salt.sh

Полная команда:

saltmaster$ sudo sh install_salt.sh -P -M git develop

Первоначальная конфигурация Master

Далее нам нужно настроить мастер Salt.

Создание структуры каталогов Salt

Во-первых, мы создадим структуру каталогов для управления конфигурацией, где мастер  будет искать различные файлы. По умолчанию, основным каталогом будет /srv.  Также нужно создать каталоги /srv/salt и /srv/pillar:

saltmaster$ sudo nano /etc/salt/master

Первое что мы сделаем – это установим словарь file_roots. Он нужен для того, чтобы Salt знала где искать инструкции по управлению конфигурацией. База определяет среды по умолчанию. Каталоги, которые мы создали ранее будут использоваться именно для этой цели. Каталог /srv/salt будет использоваться для получения инструкций администратора, а каталог /srv/formulas для расфасованных конфигураций, загружаемых из внешних источников:


/etc/salt/master


file_roots:
base:
– /srv/salt
– /srv/formulas

Далее, мы создадим корневой каталог для основной конфигурации Salt:


/etc/salt/master


pillar_roots:
base:
– /srv/pillar

Это все что нам необходимо настроить в данный момент. Сохраните и закройте файл, когда вы закончите.

Изменение конфигурации Salt Minion

Мы также установили демон Salt Minion, поэтому должны сделать его частью  нашей инфраструктуры.  Откройте конфигурацию Salt minion  привилегиями Sudo:

saltmaster$sudo nano /etc/salt/minion

Единственное изменение, которое нам нужно сделать, это указать мастеру, что именно этот minion должен подключиться. В этом случае minion должен подключиться к главному процессу, исполняемому на той же машине. Установите мастер-ключ, 127.0.0.1 для того, чтобы minion смог правильно подключиться:

/etc/salt/minion

master: 127.0.0.1

 Сохраните и закройте файл, когда вы закончите.

Перезапустите процессы

Теперь нам нужно перезапустить как Salt Master, так и minion , чтобы использовать наши новые конфигурации:


saltmaster$ sudo restart salt-master
saltmaster$ sudo restart salt-minion

Получить ключ Minion

После перезагрузки,  демон Salt Minion автоматически связался с мастером Salt и его учетными данными. Как администратор, вы  должны проверить и принять ключ minion, чтобы разрешить обмен данными.

Начнем с перечисления всех ключей, которые для мастер Salt имеют знание:


saltmaster$ sudo salt-key –list all

Вы должны увидеть что-то вроде этого:

Output
Accepted Keys:
Denied Keys:
Unaccepted Keys:
saltmaster
Rejected Keys:

Как вы  видите minion Salt направила свой ключ к мастеру, но он еще не был принят. В целях безопасности, прежде чем принять ключ, нужно запускать две команды.

Нам нужно убедиться, что все идет по плану:

saltmaster$ sudo salt-call key.finger –local

Output
local:
24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

Подставьте ID minion сюда:

saltmaster$ sudo salt-key -f saltmaster

Output
Unaccepted Keys:
saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

После того, как вы убедитесь, что эти значения одинаковы, вы можете принять ключ, набрав:

saltmaster$ sudo salt-key -f saltmaster

После принятия ключа, вы можете увидеть, что ключ был перемещен в раздел “Принятые ключи”:

saltmaster$ sudo salt-key –list all

Output
Accepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
Rejected Keys:

Теперь вы можете проверить, что Salt master и minion процессы “общаются”:

saltmaster$ sudo salt ‘*’ test.ping

Вы должны получить сообщение, в котором указано, что проверка прошла успешно:

Output
saltmaster:
True

Установка отдельного Minion:

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

Установка стабильного Master с официального PPA

Если вы установили главный сервер Salt из SaltStack PPA, то вы можете добавить один и тот же PPA на сервере minion Ubuntu:

saltmaster$ sudo add-apt-repository ppa:saltstack/salt

На этот раз, нам нужно только установить исполняемый файл minion Salt. Обновить локальный индекс пакетов после добавления PPA и установить программное обеспечение, набрав:

saltmaster$ sudo apt-get update
saltmaster$ sudo apt-get install salt-minion

Настройка Minion

Теперь, когда мы установили minion, то мы можем идти дальше и настроить его для общения с мастером.

Получить Salt Master Public Key Fingerprint

Прежде чем мы начнем, мы должны получить  ключ мастера Salt. Мы опишем этот шаг  для повышения уровня безопасности.

На главном сервере Salt, введите:

saltmaster$ sudo salt-key -F master

Вывод должен выглядеть следующим образом:

Output
Local Keys:
master.pem: 12:db:25:3d:7f:00:a3:ed:20:55:94:ca:18:f8:67:97
master.pub: 7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92
Accepted Keys:
saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

Изменение конфигурации Minion

Откройте конфигурационный файл minion с привилегиями Sudo:

saltmaster$ sudo nano /etc/salt/minion

Нам необходимо указать место, где мастер может быть найден. Это может быть либо домен DNS, либо IP-адрес:

/etc/salt/minion

master: ip_of_salt_master

Затем установите параметр master_finger к значению отпечатка, скопированного из мастера минуту назад:

/etc/salt/minion

master: master_finger: ‘7b:97:23:4b:a4:6d:16:31:2d:c9:e3:81:e2:d5:32:92’

Сохраните и закройте файл, когда закончите.
Теперь перезапустите демон minion Salt для реализации новых изменений в конфигурации:

saltmaster$ sudo restart salt-minion

Принятие ключа Minion на Master

Во-первых, убедитесь, что у нас есть не принятый ключ  на Master:

saltmaster$ sudo salt-key –list all

Вы должны увидеть новый ключ в разделе “непринятые ключи”, который связан с вашим новым minion:

Output
Accepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
saltminion
Rejected Keys:

Проверьте отпечаток нового ключа. Измените выделенную ниже часть:

saltmaster$ sudo salt-key -f saltminion

Вывод должен быть примерно таким:

Output
Unaccepted Keys:
saltminion: 32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

Если это так, то вы можете смело принимать ключ, набрав:

saltmaster$ sudo salt-key -a saltminion

Ключ должен быть добавлен в раздел “Принятые ключи”:

saltmaster$ sudo salt-key –list all

Output
Accepted Keys:
saltmaster
saltminion
Denied Keys:
Unaccepted Keys:
Rejected Keys:

 

Проверьте, что вы можете послать команды к новому minion, введите команду:

saltmaster$ sudo salt ‘*’ test.ping

Вы должны получить обратно ответы от обоих демонов minion, которые вы настроили:

Output
saltminion:
True
saltmaster:
True

Заключение

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