Инфраструктура SaltStack: установка Salt Master

Вступление

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

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

Предпосылки

Для завершения этого руководства вам понадобится чистый сервер Ubuntu 14.04. На этом сервере должна быть включена частная сеть.

На этом сервере у вас должна быть учетная запись без полномочий root, настроенная с привилегиями + sudo +. Вы можете узнать, как настроить учетную запись этого типа, в нашем Ubuntu 14.04 руководстве по начальной настройке сервера.

В следующей статье этой серии будет использована команда + salt-cloud + для ускорения работы серверов инфраструктуры с использованием облака DigitalOcean. При желании вы можете использовать других облачных провайдеров или даже виртуальные экземпляры, используя программное обеспечение, такое как vagrant. Однако это выходит за рамки данного руководства, и вам придется провести собственное исследование в этих областях.

Обзор инфраструктуры, которую мы будем строить

Серверы, которые мы запускаем с помощью + salt-cloud +, будут представлять три наши среды, которые мы хотим поддерживать для разработки приложений. Поскольку наш главный сервер Salt будет поддерживать конфигурацию для каждого из необходимых нам серверов, мы сможем отключить эти серверы, когда мы их не используем. Например, если ваша команда разработчиков приостановила работу в праздничные дни, вы можете сократить количество непроизводственных сред. Вернувшись после перерыва, вы можете легко перестроить их и заново развернуть свое приложение поверх этой новой инфраструктуры.

Мы разберем нашу примерную инфраструктуру на разработку, подготовку и производство.

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

Постановочная среда будет более устойчивой. В большинстве советов, которые вы найдете, рекомендуется настроить промежуточную среду так, чтобы она была максимально похожа на предполагаемую производственную среду. Учитывая это, наша промежуточная среда будет состоять из двух веб-серверов, чтобы распределить нагрузку на трафик. Мы будем распределять трафик между этими двумя серверами, используя балансировщик нагрузки. На стороне базы данных мы раскрутим два сервера базы данных. Мы настроим репликацию мастер-мастер между этими двумя серверами, чтобы оба могли принимать запросы на запись. Репликация мастер-мастер имеет некоторые недостатки, но она позволяет нам быть немного ленивыми в разработке наших приложений (любой сервер базы данных может получать записи) и позволяет нам демонстрировать довольно сложный сценарий управления конфигурацией.

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

Помните, что, пока мы создаем конфигурации для сред, перечисленных выше, они не обязательно должны работать одновременно. Это особенно актуально во время тестирования. На протяжении всей этой серии вы, вероятно, будете иметь только несколько активных серверов одновременно. Это желательно с точки зрения затрат, но разрушение и приведение в порядок наших сред по мере необходимости также обеспечивает надежность и повторяемость начальной загрузки нашей среды.

Теперь, когда вы знаете общий макет сред, которые мы будем настраивать, мы можем запустить наш Salt master.

Установка Солт Мастер

Начните с входа на сервер, который вы намереваетесь установить в качестве мастера Salt как пользователь без полномочий root с привилегиями + sudo +.

Существует несколько https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-salt-master-and-minion-servers-on-ubuntu-14-04 несколько разных способов] установить главный демон Salt на сервере. Для Ubuntu доступны PPA, но они часто бывают устаревшими. Наилучший подход к планированию и управлению программным обеспечением для управления конфигурацией - ориентироваться на конкретную версию. Это позволит вам обновлять свои системы (после тщательного тестирования) в плановом и структурированном виде, а не полагаться на то, что доступно из репозитория во время установки.

Для этого руководства мы будем использовать версию Salt v2015.8.0, последнюю стабильную версию на момент написания этой статьи. Если вы выбираете другую версию или метод установки, имейте в виду, что процессы в этом руководстве могут работать не так, как написано.

Самый простой способ установить конкретную версию - это скрипт начальной загрузки SaltStack. Загрузите последний загрузочный скрипт в свой домашний каталог, набрав:

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

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

Когда вы будете готовы установить мастер соли, вы можете запустить скрипт с оболочкой + sh +. Мы передадим ему флаг + -P +, чтобы указать, что мы в порядке с разрешением установки зависимостей с помощью + pip +, менеджера пакетов Python. Нам также нужно будет включить флаг + -M +, чтобы указать, что мы хотим установить мастер-демон. Завершите выполнение команды, включив + git v2015.8.0 +, которая сообщает сценарию извлечь указанный тег выпуска из SaltStack GitHub repo и использовать его для установки:

sudo sh install_salt.sh -P -M git v2015.8.0

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

Установка должна быть довольно прямой. Далее мы можем начать настраивать наш мастер соли.

Настройте мастера соли

Первое, что нам нужно, это отредактировать основной файл конфигурации Salt master. Откройте его сейчас с привилегиями + sudo +:

sudo nano /etc/salt/master

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

Сначала найдите в файле опцию + file_recv +. Включение этого позволяет Salt minions отправлять файлы мастеру Salt. Это очень полезно при создании состояний для получения файлов конфигурации, которые вы хотите изменить, однако, это сопряжено с некоторым риском. Мы включим его на время действия данного руководства. Вы можете отключить его позже, если хотите:

/ И т.д. / соль / мастер

file_recv: True

Далее нам нужно установить словарь + file_roots +. Мастер Salt включает в себя файловый сервер, который он использует для хранения и обслуживания файлов для всей инфраструктуры. Это включает в себя сами файлы состояния управления конфигурацией, а также любые файлы миньонов, которыми управляет наша система. Этот словарь YAML определяет корень файлового сервера, который будет расположен в + / srv / salt +. Нам нужно указать, что это находится в «базовой» среде, обязательной среде по умолчанию для всех развертываний Salt:

/ И т.д. / соль / мастер

file_roots:
 base:
   - /srv/salt

Note

Последний элемент, который нам сейчас нужен, это словарь + pillar_roots +. Система столбов используется для хранения данных конфигурации, которые могут быть ограничены определенными узлами. Это позволяет нам настраивать поведение и предотвращать просмотр конфиденциальных данных компонентами инфраструктуры, не связанными с данными. Этот формат точно отражает + file_roots +. Расположение наших данных столба будет в + / srv / pillar +:

/ И т.д. / соль / мастер

pillar_roots:
 base:
   - /srv/pillar

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

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

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

Настройте демона миньонов на мастера соли

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

sudo nano /etc/salt/minion

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

/ И т.д. / соль / баловень

master: 127.0.0.1

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

Перезапустите Сервисы и примите Соленые Ключи

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

sudo restart salt-master
sudo restart salt-minion

Прежде чем Солевой мастер сможет безопасно связаться с миньоном (даже на одном сервере), он должен принять ключ миньона. Это функция безопасности. Вы можете увидеть все принятые и ожидающие ключи, набрав:

sudo salt-key --list all

Если ваши демоны были настроены правильно и были перезапущены, вы должны увидеть ключ для вашего главного сервера Salt в разделе «Unaccepted Keys». В нашем случае наш Salt master размещается на машине под названием «sm»:

OutputAccepted Keys:
Denied Keys:
Unaccepted Keys:

Rejected Keys:

Вы можете принять этот ключ, передав идентификатор миньона сервера (+ sm + в нашем случае` +) команде + salt-key + с флагом +` -a`:

sudo salt-key -a

Если вы проверите еще раз, ваш ключ будет перемещен в раздел «Принятые ключи»:

sudo salt-key --list all
OutputAccepted Keys:

Denied Keys:
Unaccepted Keys:
Rejected Keys:

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

sudo salt '*' test.ping

Вы должны получить ответ, который выглядит примерно так:

Output:
   True

Ваш главный сервер Salt запущен и работает.

Заключение

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

В next этой серии мы настроим наш главный сервер Salt с нашими учетными данными DigitalOcean API. Мы создадим конфигурацию провайдера, которая позволит нам подключаться к нашей учетной записи DigitalOcean с помощью команды + salt-cloud + и создавать облачные ресурсы и управлять ими. Мы создадим профили для наших машин инфраструктуры, чтобы мы могли определить свойства для каждого из наших серверов.

Related