Установка мастера и миньона Salt в Ubuntu 14.04

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

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

Требования

Для работы вам понадобится два сервера Ubuntu 14.04, настроенные по этому мануалу.

1: Установка мастер-сервера Salt

В Ubuntu 14.04 демон мастера Salt можно установить несколькими способами. Ниже приводится краткое изложение преимуществ и недостатков каждого метода:

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

В этом мануале для установки Salt используется архив PPA. Также вы узнаете, как использовать скрипт salt-bootstrap для установки как стабильных версий, так и версий мастера Salt в разработке.

Вам решать, какой вариант лучше всего подходит вашей инфраструктуре. С одной стороны, в версии разработки могут быть исправлены ошибки предыдущих версий. С другой стороны, в ней есть шанс столкнуться с новыми ошибками.

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

Проще всего установить мастер из стабильного архива PPA.

Для начала нужно добавить архив PPA на сервер, который будет мастером инфраструктуры.

sudo add-apt-repository ppa:saltstack/salt

Как только вы подтвердите добавление PPA, он будет добавлен в вашу систему. Чтобы индексировать новые доступные пакеты, необходимо обновить локальный индекс пакетов. После этого вы можете установить соответствующее программное обеспечение.

sudo apt-get update
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.

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

Проверьте сценарий и убедитесь, что он не делает ничего лишнего или вредоносного.

less ~/install_salt.sh

Сценарий salt-bootstrap поддерживается командой SaltStack, но содержимое внешних скриптов всегда следует проверять перед их запуском.

После ознакомления со сценарием запустите его. Добавьте флаг -P, чтобы сценарий мог использовать pip как источник зависимостей, если это необходимо. Без этого флага установка, скорее всего, не удастся. Также необходимо добавить флаг -M, чтобы установить демон мастера Salt. Все вспомогательные утилиты Salt будут автоматически включены.

sudo sh install_salt.sh -P -M

Теперь на сервере есть стабильная версия Salt.

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

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

Для этого нужно загрузить все тот же сценарий salt-bootstrap, но с другими опциями. Загрузите сценарий в домашний каталог:

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

Проверьте сценарий и убедитесь, что он не делает ничего лишнего или вредоносного.

less ~/install_salt.sh

Теперь можно выполнить его.

Добавьте флаг -P, чтобы сценарий мог использовать pip как источник зависимостей, если это необходимо. Также нужно добавить флаг -M, чтобы установить демон мастера Salt. В конце команды укажите git develop, чтобы сценарий использовал GitHub-репозиторий SaltStack для установки разрабатываемой версии.

sudo sh install_salt.sh -P -M git develop

2: Начальная настройка мастера Salt

Структура каталогов Salt

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

sudo mkdir -p /srv/{salt,pillar}

Конфигурация мастера Salt

Затем нужно скорректировать конфигурационный файл мастер-сервера Salt. Откройте файл с правами sudo в текстовом редакторе:

sudo nano /etc/salt/master

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

file_roots:
base:
- /srv/salt
- /srv/formulas

Примечание: Salt использует файлы конфигурации YAML. Этот формат требует строгого внимания к интервалам и отступам, чтобы демон правильно интерпретировал значения.

Затем нужно создать корневой каталог для конфигурации Salt pillar. Этот раздел похож на приведенную выше конфигурацию и использует третий созданный ранее каталог:

pillar_roots:
base:
- /srv/pillar

Сохраните и закройте файл.

Конфигурация миньона Salt

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

sudo nano /etc/salt/minion

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

master: 127.0.0.1

Сохраните и закройте файл.

Перезапуск процессов

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

sudo restart salt-master
sudo restart salt-minion

Это перезапустит демонов и обновит параметры.

Принятие ключа миньона

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

Просмотрите все ключи, о которых знает мастер:

sudo salt-key --list all

Вы должны увидеть примерно такой вывод. Вместо saltmaster будет идентификатор миньона Salt. Обычно это имя хоста вашего сервера.

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

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

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

sudo salt-call key.finger --local
local:
24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

совпадает с выводом следующей команды (она определяет контрольную массу ключа, который нужно принять мастеру Salt).

sudo salt-key -f saltmaster
Unaccepted Keys:
saltmaster: 24:c8:77:1d:ed:10:d7:b0:3e:bc:bc:ed:41:e1:5a:d1

Примечание: Вместо saltmaster нужно указать ID вашего миньона.

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

sudo salt-key -a saltmaster

После этого ключ переместится в раздел Accepted Keys:

sudo salt-key --list all
Accepted Keys:
saltmaster
Denied Keys:
Unaccepted Keys:
Rejected Keys:

Теперь вы можете протестировать работу мастера и миньона Salt:

sudo salt '*' test.ping

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

saltmaster:
True

Теперь мастер-сервер настроен. Можно перейти к настройке ведомого сервера – миньона.

3: Установка миньона

Теперь нужно установить демон миньона на второй сервер.

Опять же, есть несколько способов установки необходимого программного обеспечения, но вы должны следовать тому же методу, с помощью которого вы установили мастер. Это устранит любые конфликты версий между мастером и миньоном.

Войдите на второй сервер как пользователь sudo.

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

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

sudo add-apt-repository ppa:saltstack/salt

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

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

Миньон Salt установлен.

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

Если вы установили стабильную версию с помощью salt-bootstrap, вы можете загрузить тот же сценарий на свой миньон:

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

Теперь нужно вызвать сценарий почти таким же образом, как на мастере. Единственное отличие – отсутствие флага -M, поскольку здесь не нужно устанавливать инструменты и демон мастера:

sudo sh install_salt.sh -P

Миньон Salt установлен.

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

Если вы установили текущую разрабатываемую версию мастера Salt с помощью salt-bootstrap, вы можете повторить процесс для установки миньона, используя тот же сценарий. Загрузите его:

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

Команда вызова сценария почти такая же, как на мастере. Единственное отличие – отсутствие флага -M, поскольку здесь не нужно устанавливать инструменты и демон мастера:

sudo sh install_salt.sh -P git develop

4: Настройка миньона

Теперь нужно настроить миньон и научить его взаимодействовать с мастером.

Контрольная сумма открытого ключа мастера

Прежде чем продолжить, нужно получить контрольную сумму ключа мастера Salt. Ее нужно добавить в конфигурации миньона.

Перейдите на мастер-сервер и введите:

sudo salt-key -F master
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

Значение ключа master.pub, которое находится в разделе Local Keys, и есть искомая контрольная сумма. Скопируйте это значение в конфигурацию миньона.

Конфигурация миньона

Вернитесь на миньон и откройте конфигурационный файл:

sudo nano /etc/salt/minion

Теперь нужно указать местоположение мастера Salt. Это может быть разрешаемый домен или IP-адрес.

master: ip_of_salt_master

Затем в опции master_finger укажите контрольную сумму, скопированную с мастера Salt:

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

Сохраните и закройте файл.

Перезапустите демон миньона Salt:

sudo restart salt-minion

Новый миньон должен связаться с мастером Salt по указанному адресу. Затем он отправит мастеру свой ключ. Чтобы подтвердить ключ, необходимо проверить контрольную сумму на новом сервере-миньоне. Для этого введите:

sudo salt-call key.finger --local
local:
32:2a:7c:9a:f2:0c:d1:db:84:df:d3:82:00:d5:8f:be

Контрольные суммы должны совпадать.

Подключение миньона к мастеру

Вернитесь на мастер Salt, чтобы принять ключ нового миньона.

Просмотрите непринятые ключи:

sudo salt-key --list all

Вы увидите новый ключ в разделе Unaccepted Keys:

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

Проверьте контрольную сумму ключа (вместо saltminion укажите ID своего миньона):

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

Если это совпадает со значением, которое вы получили от миньона с помощью команды salt-call, вы можете принять ключ, набрав:

sudo salt-key -a saltminion

Теперь ключ должен быть добавлен в раздел Accepted Keys:

sudo salt-key --list all
Accepted Keys:
saltmaster
saltminion
Denied Keys:
Unaccepted Keys:
Rejected Keys:

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

sudo salt '*' test.ping

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

saltminion:
True
saltmaster:
True

Tags: , ,