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

Что такое задания в SaltStack Config?

Задания используются для выполнения удаленно исполняемых задач или применения файлов состояния к узлам (служебным серверам), которыми управляет SaltStack Config. Как правило, задания предназначены для системных операций, которые должны быть автоматизированы и выполняться многократно. Можно создать задания для автоматизации стандартных задач, которые выполняются регулярно при подготовке, развертывании, мониторинге, управлении узлами в системе. Также можно настроить выполнение заданий по расписанию, например заданий, которые регулярно проверяют дрейф конфигурации и предотвращают его.

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

Примеры стандартных заданий

Общие сведения о заданиях и описание ряда практических примеров стандартных заданий см. в следующих учебниках в руководстве «Начало работы с SaltStack Config».

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

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

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

Модуль Salt Описание

state.apply

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

Процесс highstate применяет все состояния, определенные в top-файле. Дополнительные сведения см. в разделе state.highstate.

pkg.installed

Модуль состояния (это означает, что он используется в файлах состояния), который проверяет, установлена ли правильная версия пакета. Если нет, модуль устанавливает пакет требуемой версии. Дополнительные сведения об установке пакетов в некоторых операционных системах см. в разделе salt.states.pkg.

file.managed

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

service.running

Модуль состояния (это означает, что он используется в файлах состояния), который проверяет, работает ли служба. Если служба не работает, модуль ее запускает. Дополнительные сведения о запуске или перезапуске служб с помощью Salt см. в разделе salt.states.service.

Более подробный список модулей выполнения и состояния Salt см. в разделе Salt module index.

Если в Salt нет нужного модуля, данную систему можно расширить путем создания собственных настраиваемых модулей на языке Python. При необходимости этот модуль можно также отправить в сообщество Salt Project. Сообщество Salt Project, официально спонсируемое компанией VMware, включает в себя свыше 3000 участников, работающих в сфере ИТ и занимающихся системным администрированием. Сообщество Salt развивает систему Salt путем создания различных модулей выполнения и модулей состояния для решения наиболее распространенных задач или важных проблем, с которыми сталкиваются системные администраторы.

Обзор рабочего процесса выполнения заданий

Обычно старший системный администратор создает, настраивает и сохраняет параметры заданий для дальнейшего использования. Затем он может разрешить своему администратору-ассистенту выполнить это задание на всех узлах (целевых объектах), у которого есть право на доступ к ним. При создании задания старший администратор определяет входные данные задания, относящиеся к конкретным параметрам задания или переменным, которые может изменить его ассистент во время выполнения.

Например, старший системный администратор может создать задание, которое создает и развертывает виртуальную машину и устанавливает на ней базовый набор приложений или служб. Такое задание может запускаться каждый раз, когда необходимо развернуть новую виртуальную машину, для того чтобы к каждому развертыванию применялись одинаковые наборы приложений и конфигурации. После создания такого базового задания старший системный администратор может предоставить доступ своему ассистенту для выполнения этого задания на тех целевых объектах (узлах), для работы с которыми у последнего есть соответствующее разрешение. С помощью элементов контроля доступа на основе ролей (RBAC) в SaltStack Config и с учетом принципа наименьших привилегий старший администратор может определить, какие задания может выполнять ассистент и на каких узлах (служебных серверах).

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

Схема, на которой показан рабочий процесс выполнения заданий

В следующих разделах будут описаны все выполняемые шаги.