Salt minion windows что это

Руководство по использованию платформы Salt

В статье описаны основные понятия платформы Salt, примеры конфигурации и использования с комментариями.

Что это такое?

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

О там как установить и настроить взаимодействие Salt Master и Salt Minions на серверах под управлением операционной системы Ubuntu 18.04 вы можете прочитать в нашей инструкции.

Masters и Minions

Salt Master (Мастер) — это сервер, который выступает в качестве центра управления для своих миньонов, именно от Master отправляются запросы на удаленное выполнение команд. Например, эта команда сообщает текущее использование диска каждым из миньонов, которыми управляет мастер:

Таких команд большое множество. Например, вы можете установить NGINX на миньона с именем webserver1:

salt ‘webserver1’ pkg.install nginx

Salt Minions (Ноды, Миньоны) — это ваши серверы под управлением мастера, именно на них запускаются приложения и сервисы. Каждому миньону присваивается идентификатор, а мастер может ссылаться на этот идентификатор для назначения команд конкретным миньонам.

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

Удаленное выполнение

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

salt ‘webserver1’ npm.install gulp

В этой команде npm — это модуль, а install — это функция. Эта команда устанавливает пакет Gulp Node.js через диспетчер пакетов Node (NPM).

Доступные модули выполнения представляют собой удобные решения для системного администрирования:

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

Функция cmd.run используется для запуска произвольных команд на управляемых миньонах:

salt ‘*’ cmd.run ‘ls -l /etc’

Эта команда выведет содержимое каталога /etc для каждого миньона.

Состояния, формулы и Top-файл

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

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

Описание состояния

Ниже приведен пример файла состояния /srv/salt/webserver_setup.sls, который гарантирует, что установлены следующие компоненты: rsync, curl, NGINX, и при этом NGINX запускается и включается при загрузке ОС:

Файлы состояний заканчиваются расширением .sls (SaLt State). Файлы состояний могут иметь одно или несколько описаний состояния, которые являются разделами верхнего уровня (network_utilities, nginx_pkg и nginx_service в приведенном выше примере). Идентификаторы описаний являются произвольными, поэтому вы можете называть их по своему усмотрению.

Описания состояний содержат модули состояний. Модули состояний отличаются от модулей выполнения, но часто выполняют аналогичные задания. Например, существует модуль состояния pkg с функциями, аналогичными модулю выполнения pkg, как с функцией состояния pkg.installed и функцией выполнения pkg.install.

Файлы состояний — это просто наборы словарей, списков, строк и чисел, которые затем интерпретирует Salt. По умолчанию Salt использует синтаксис YAML для представления состояний.

Читайте также:  Windows 10 xps viewer powershell

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

Применение состояния к Миньону

Чтобы применить состояние к миньону, используйте функцию state.apply от имени мастера:

salt `webserver1` state.apply webserver_setup

Эта команда применяет пример состояния webserver_setup.sls к миньону с именем webserver1. При применении состояния суффикс .sls не упоминается. Применяются все описания состояния из файла состояния.

Формулы

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

Top-файл

В дополнение к ручному применению состояний к миньонам, Salt предоставляет возможность автоматически отобразить, какие состояния должны применяться к различным миньонам. Это называется Top-файлом.

Простой пример файла /srv/salt/top.sls:

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

В приведенном выше примере сказано, что состояние universal_setup должно применяться ко всем миньонам (‘*’), а состояние webserver_setup должно применяться только к миньону webserver1.

Если вы запустите функцию state.apply без аргументов, Salt проверит Top-файл и применит все состояния в нем в соответствии с созданным отображением:

Хранение Data (данных) и Secrets (секретов)

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

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

Такие данные хранятся в файлах .sls, например файла /srv/pillar/user_info.sls:

Как и в случае с файлами состояний, Top-файл (отдельно от Yop-файла состояний) отображает данные Pillar в миньоны, например /srv/pillar/top.sls:

Шаблоны Jinja

Для использования данных Pillar в файлах состоянии, используют шаблоны Jinja.

Ниже приведен пример файла состояния /srv/salt/user_setup.sls, в котором используются данные Pillar из предыдущей секции для создания пользователей системы и установки оболочки:

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

В следующем примере файл состояния /srv/salt/webserver_setup.sls установит Apache и настроит имя для пакета в соответствии с операционной системой:

Дополнительную информацию можно найти в официальной документации продукта.

Windows¶

Salt has full support for running the Salt minion on Windows. You must connect Windows Salt minions to a Salt master on a supported operating system to control your Salt Minions.

Many of the standard Salt modules have been ported to work on Windows and many of the Salt States currently work on Windows as well.

Installation from the Official SaltStack Repository¶

Latest stable build from the selected branch:

The output of md5sum minion exe> should match the contents of the corresponding md5 file.

There are installers available for Python 3. Starting with Salt 3001, only Python 3 builds of the Windows Salt Minion will be built. Python 2 builds exist for earlier Salt Minion versions.

Archived builds from unsupported branches:

The installation executable installs dependencies that the Salt minion requires.

The 64bit and 32bit installers have been tested on Windows 8.1, Windows Server 2012 R2, Windows 10, Windows Server 2016, and Windows Server 2019. 32bit installers have only been tested on 64bit systems. Please file a bug report on our GitHub repo if issues for other platforms are found.

Читайте также:  Running spark on windows

The installer will detect previous installations of Salt and ask if you would like to remove them. Clicking OK will remove the Salt binaries and related files but leave any existing config, cache, and PKI information.

Salt Minion Installation¶

If the system is missing the appropriate version of the Visual C++ Redistributable (vcredist) the user will be prompted to install it. Click OK to install the vcredist. Click Cancel to abort the installation without making modifications to the system.

If Salt is already installed on the system the user will be prompted to remove the previous installation. Click OK to uninstall Salt without removing the configuration, PKI information, or cached files. Click Cancel to abort the installation before making any modifications to the system.

After the Welcome and the License Agreement, the installer asks for two bits of information to configure the minion; the master hostname and the minion name. The installer will update the minion config with these options.

If the installer finds an existing minion config file, these fields will be populated with values from the existing config, but they will be grayed out. There will also be a checkbox to use the existing config. If you continue, the existing config will be used. If the checkbox is unchecked, default values are displayed and can be changed. If you continue, the existing config file in c:\salt\conf will be removed along with the c:\salt\conf\minion.d directory. The values entered will be used with the default config.

The final page allows you to start the minion service and optionally change its startup type. By default, the minion is set to Automatic . You can change the minion start type to Automatic (Delayed Start) by checking the ‘Delayed Start’ checkbox.

Highstates that require a reboot may fail after reboot because salt continues the highstate before Windows has finished the booting process. This can be fixed by changing the startup type to ‘Automatic (Delayed Start)’. The drawback is that it may increase the time it takes for the ‘salt-minion’ service to actually start.

The salt-minion service will appear in the Windows Service Manager and can be managed there or from the command line like any other Windows service.

Installation Prerequisites¶

Most Salt functionality should work just fine right out of the box. A few Salt modules rely on PowerShell. The minimum version of PowerShell required for Salt is version 3. If you intend to work with DSC then Powershell version 5 is the minimum.

Silent Installer Options¶

The installer can be run silently by providing the /S option at the command line. The installer also accepts the following options for configuring the Salt Minion silently:

A string value to set the IP address or hostname of the master. Default value is ‘salt’. You can pass a single master or a comma-separated list of masters. Setting the master will cause the installer to use the default config or a custom config if defined.

A string value to set the minion name. Default value is ‘hostname’. Setting the minion name causes the installer to use the default config or a custom config if defined.

Either a 1 or 0. ‘1’ will start the salt-minion service, ‘0’ will not. Default is to start the service after installation.

Set the minion start type to Automatic (Delayed Start) .

Overwrite the existing config if present with the default config for salt. Default is to use the existing config if present. If /master and/or /minion-name is passed, those values will be used to update the new default config.

Читайте также:  Zuma deluxe для windows

A string value specifying the name of a custom config file in the same path as the installer or the full path to a custom config file. If /master and/or /minion-name is passed, those values will be used to update the new custom config.

Runs the installation silently. Uses the above settings or the defaults.

Displays command line help.

/start-service has been deprecated but will continue to function as expected for the time being.

/default-config and /custom-config= will backup an existing config if found. A timestamp and a .bak extension will be added. That includes the minion file and the minion.d directory.

Here are some examples of using the silent installer:

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

После успешной установки необходимых пакетов SaltStack приступаем к настройке.
Установка описана здесь.

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

Конфигурация Salt очень проста. Дефолтная конфигурация Мастера будет работать в большинстве установок и единственное требование для настройки Миньона установить местоположение Мастера в конфигурационном файле.

Конфигурационные файлы будут установлены в /etc/salt и названы в честь соответствующих компонент, /etc/salt/master и /etc/salt/minion.

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

По умолчанию Мастер слушает порты 4505 и 4506 на всех интерфейсах (0.0.0.0). Для связки Salt с конкретным IP переопределите параметр “interface” в /etc/salt/master

После правки перезапустите сервис salt-master. Подробнее смотрите справочник по настройке Мастера.

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

Хотя и существует много параметров конфигурации, настройка Salt Minion очень проста. По умолчанию пробует подключиться по DNS имени “salt”.

Если Миньон может корректно разрешить имя, то никакой настройки не требуется. Если Миньон не может корректно разрешить имя, то переопределите параметр “master” в конфигурационном файле /etc/salt/minion:

После правки перезапустите сервис salt-minion.

Запуск Salt

Мастер может быть запущен в фоновом режиме через командную строку как демон:

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

Запуск от непривилегированого пользователя

Для запуска Salt от другого пользователя, установите параметр user в /etc/salt/master.

Дополнительно, необходимо установить владельца и права так, чтобы нужный пользователь имел права на чтение/запись на след. каталоги (и их подкаталоги, где применимо):

Проверка подлинности ключа

Salt обеспечивает команды для проверки подлинности Вашего Salt Master и Salt-Minion перед началом обмена ключами. Проверка ключа помогает избежать непреднамеренного подключения к неверному Salt Master и помогает предотвратить потенциальные MiTM атаки при установлении начального соединения.

Отпечаток ключа Мастера

Напечатайте отпечаток ключа Мастера запустив следующую команду на Salt Master:

Скопируйте master.pub отпечаток из секции Local Keys и установите в качестве параметра master_finger в конфигурационном файле Миньона. Сохраните и перезапустите сервис salt-minion.

Отпечаток ключа Миньона

Запустите следующую команду на каждом Salt minion, чтобы вывести отпечаток ключа миньона:

Сравните это значение с значением, которое выводится когда запускаешь команду на Salt Master

Управление ключами

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

Прежде чем команды могут быть отправлены Миньону, его ключ должен быть принят на Мастере. Запустите salt-key команду, чтобы вывести список ключей известных Мастеру:

Команда salt-key позволяет принимать ключи как поштучно, так и разом.

Чтобы принять все ключи, которые находяться в ожидании:

Чтобы принять конкретный ключ:

Отправка команд

Связь между Мастером и Миньоном можно проверить запустив команду test.ping:

Связь между Мастером и всеми Миньонами можно проверить запустив команду

Каждый Миньон должен послать ответ True, как показано выше.

Оцените статью