Введение в терминологию и концепции SaltStack

Вступление

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

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

Роли соляной машины

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

Мастер

Saltmaster - это машина, которая контролирует инфраструктуру и определяет политики для серверов, которыми она управляет. Он работает как хранилище данных конфигурации и как центр управления, который запускает удаленные команды и обеспечивает состояние других ваших машин. Для обеспечения этой функциональности на главном сервере установлен демонsalt-master.

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

Миньоны

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

Как соляные компоненты связываются

Мастера соли и миньоны по умолчанию общаются с помощью библиотеки сообщений ZeroMQ. Это обеспечивает чрезвычайно высокую производительность сетевого взаимодействия между сторонами, позволяя Salt отправлять сообщения и данные на высоких скоростях. Поскольку ZeroMQ является библиотекой, а не независимой службой, эта функциональность изначально доступна в демонахsalt-master иsalt-minion.

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

Если по какой-то причине невозможно установить демонsalt-minion на узел, Salt также может выдавать команды через SSH. Эта опция транспорта предоставлена ​​для удобства, но она значительно снижает производительность и может привести к сложностям с другими командами Salt в некоторых случаях. Настоятельно рекомендуется использовать демонsalt-minion там, где это возможно, для повышения производительности, безопасности и простоты.

Соляная терминология

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

Удаленное выполнение: исполнительные модули и функции

Солт пытается разграничить функции удаленного выполнения и управления конфигурацией. Возможности удаленного выполнения предоставляютсяexecution modules. Модули выполнения - это наборы связанныхfunctions, которые выполняют работу с миньонами.

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

Salt поставляется с приличным выборомbuiltin execution modules, чтобы обеспечить готовую функциональность. Администраторы также могут писать свои собственные модули или включатьcommunity-written modules для расширения библиотеки команд, которые могут выполняться на машинах миньонов.

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

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

Состояния и формулы

Часть Salt по управлению конфигурацией в основном реализована с использованием системыstate.

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

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

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

Хорошую коллекцию формул Salt, созданную организацией и сообществом SaltStack, можно найти вthis GitHub account.

Шаблоны

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

Renderers - это компоненты, которые запускают шаблон для создания действительных файлов состояния или конфигурации. Средства визуализации определяются шаблонным форматом, который составляет входные данные, и форматом сериализации данных, который будет создаваться в качестве выходных данных. Принимая во внимание значения по умолчанию, описанные выше, средство визуализации по умолчанию обрабатывает шаблоны Jinja для создания файлов YAML.

Запросы и назначение информации миньонам

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

зерна

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

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

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

Администраторы также могут назначать зерна миньонам. Например, довольно часто используют зерна для назначения «роли» серверу. Это может затем использоваться для нацеливания на подмножество узлов, аналогичное приведенному выше примеру операционной системы.

столпы

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

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

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

Mine

Saltmine - это область на главном сервере, где могут храниться результаты регулярно выполняемых команд для миньонов. Целью этой системы является сбор результатов произвольных команд, выполняемых на машинах миньонов. Затем к этому глобальному хранилищу могут обращаться другие компоненты и миньоны всей вашей инфраструктуры.

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

Дополнительная функциональность

Соль предоставляет несколько других систем, которые не вписываются в вышеупомянутые категории.

Реакторы

Система Saltreactor предоставляет механизм для запуска действий в ответ на сгенерированные события. В Salt изменения, происходящие во всей вашей инфраструктуре, заставят демоновsalt-minion илиsalt-master генерировать события на шине сообщений ZeroMQ. Реакторная система следит за этой шиной и сравнивает события с настроенными реакторами, чтобы реагировать соответствующим образом.

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

Бегуны

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

возвращатели

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

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

Соляные Команды

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

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

  • salt-minion: Точно так же это процесс демона миньона, используемый для связи с мастером и выполнения команд. Большинство пользователей также запускают это из сценариев инициализации или служебных файлов.

  • salt-key: этот инструмент используется для управления открытыми ключами миньонов. Этот инструмент используется для просмотра текущих ключей и принятия решений об открытых ключах, отправленных потенциальными миньонами. Он также может генерировать ключи для размещения миньонов вне диапазона.

  • salt: эта команда используется для нацеливания на миньонов с целью запуска специальных исполнительных модулей. Это основной инструмент, используемый для удаленного выполнения.

  • salt-ssh: эта команда позволяет использовать SSH в качестве альтернативы ZeroMQ для транспортного механизма.

  • salt-run: эта команда используется для запуска модулей runner на главном сервере.

  • salt-call: эта команда используется для запуска исполнительных модулей непосредственно на миньоне, в который вы вошли. Это часто используется для отладки проблемных команд в обход мастера.

  • salt-cloud: эта команда используется для управления и предоставления облачных ресурсов от многих различных поставщиков. Новые миньоны могут быть легко раскручены и загружены.

Есть и другие команды, напримерsalt-api,salt-cp иsalt-syndic, которые используются не так часто.

Заключение

Теперь, когда вы знакомы с базовой терминологией SaltStack и хорошо понимаете, за что отвечают инструменты, с которыми вы столкнетесь, вы можете приступить к настройке Salt для управления своей инфраструктурой. Вnext guide мы расскажем, как установить и настроить главный сервер Salt на сервере Ubuntu 14.04. Мы также покажем, как настроить новые серверы minion, чтобы передать их под управление вашего мастера.

Related