После установки и интеграции службы SaltStack Config также необходимо установить, запустить и зарегистрировать службу Salt Minion на всех узлах, управление которыми будет осуществляться с помощью SaltStack Config. Для развертывания службы Salt Minion на узлах можно использовать облачные шаблоны vRealize Automation или установить эту службу с использованием Secure Shell (SSH).
Система Salt и ее связь с SaltStack Config
SaltStack Config выполняется в системе Salt, которая представляет собой платформу удаленного выполнения на основе Python с открытым исходным кодом и используется для следующих задач.
- Управление конфигурацией
- Автоматизация
- Подготовка
- Оркестрация
Salt — это технология, лежащая в основе базовых функциональных возможностей SaltStack Config. SaltStack Config улучшает и расширяет Salt, предоставляя дополнительные возможности и функции, которые повышают удобство использования.
В Salt используется модель «контроллер-клиент», в рамках которой контроллер отправляет команды клиенту, а клиент эти команды выполняет. В экосистеме Salt роль контроллера играет сервер, на котором выполняется служба Salt Master. Он отправляет команды на один или несколько служебных серверов Salt, являющихся узлами, на которых выполняется служба Salt Minion и которые назначены данному главному серверу.
Систему Salt также можно представить в виде модели «издатель-подписчик». Главный сервер публикует задания, которые требуется выполнить, а служебные серверы подписаны на такие задания. Когда определенное задание применяется к такому служебному серверу, он выполняет это задание. Когда служебный сервер завершает выполнение задания, он отправляет возвращаемые данные задания обратно на главный сервер.
Служебные серверы — это узлы, на которых выполняется служба salt-minion. Данная служба прослушивает команды с главного сервера Salt и выполняет запрашиваемые задачи. Служебные серверы можно развертывать из облачных шаблонов vRealize Automation.
Прежде чем начать использование SaltStack Config для управления конфигурацией, необходимо установить службу Salt Minion на всех узлах, которыми требуется управлять. Кроме того, необходимо зарегистрировать служебные серверы путем отправки и принятия их ключей в SaltStack Config.
Перед началом работы
- Установите и настройте систему SaltStack Config, а затем интегрируйте ее с vRealize Automation.
- Узлы, которыми управляет SaltStack Config, должны иметь доступ к главному узлу Salt и находиться в той же сети, что и точка интеграции SaltStack Config, а также сам этот главный узел.
- Компьютеры vSphere, развернутые в частной сети, должны быть способны устанавливать соединение с интеграцией SaltStack Config и главным узлом Salt.
Установка службы Salt Minion через SSH
Процесс установки службы Salt Minion с помощью SSH зависит от операционной системы, используемой на этих узлах.
- Дополнительные сведения об установке службы Salt Minion в RedHat Linux или CentOS см. в разделе Установка Salt (предустановка).
- Сведения для других операционных систем см. на сайте http://repo.saltstack.com/.
- Чтобы настроить каждый служебный сервер для связи с главным сервером, создайте файл
master.conf
в каталоге/etc/salt/minion.d
. В этом файле укажите IP-адрес главного сервера. Например,master: 192.0.2.1
. - Запустите службу Minion.
sudo systemctl enable salt-minion
sudo systemctl start salt-minion
- Повторите предыдущие шаги для всех оставшихся узлов.
Настроив эти файлы Minion так, чтобы они указывали на главный сервер Salt, примите ключи служебных серверов в службе SaltStack Config в рабочей области «Ключи служебных серверов».
Установка службы Salt Minion с помощью облачных шаблонов vRealize Automation
Чтобы развернуть службу Salt Minion с использованием облачных шаблонов, необходимо иметь доступ к cloud-init (Linux) или Cloudbase-init (Windows), а также хорошо знать их особенности. Для добавления служебных серверов Salt к главному серверу Salt, настроенному для интеграции SaltStack Config, виртуальная машина в облачном шаблоне должна поддерживать cloud-init (Linux) или Cloudbase-init (Windows).
Процедура развертывания службы Salt Minion с помощью облачных шаблонов описана в следующих разделах.
Группа свойств SaltStackConfiguration
Процесс установки и настройки службы SaltStack Config в vRealize Suite Lifecycle Manager создает группу свойств vRealize Automation с именем SaltStackConfiguration. Значения группы свойств SaltStackConfiguration используются при настройке интеграции SaltStack Config в облачном шаблоне или развертывании vRealize Automation.
Их также можно использовать в конфигурации на основе cloud-init или Cloudbase-init в шаблоне vRealize Automation (предыдущее имя — схемы элементов) для установки служебных серверов. В SaltStackConfiguration используются два свойства: masterAddress (совпадает с параметром hostname в точке интеграции SaltStack Config) и masterFingerprint. Ниже приведен пример группы свойств SaltStackConfiguration.
Добавление служебных серверов к главному серверу Salt, настроенному для vRealize Automation
При установке службы SaltStack Config задается IP-адрес главного сервера Salt. Этот IP-адрес используется в качестве свойства masterAddress при развертывании служебных серверов из облачного шаблона vRealize Automation.
Установка и развертывание служебных серверов выполняются с помощью сценариев cloud-init или Cloudbase-init в облачном шаблоне или развертывании vRealize Automation. Кроме того, можно использовать сопоставление образов, которое представляет сценарий настройки облака, использующий любой из этих форматов. Чтобы было можно добавлять служебные серверы Salt для главного сервера Salt,связанного с интеграцией SaltStack Config в vRealize Automation, целевой компьютер должен поддерживать cloud-init (Linux) или Cloudbase-init (Windows). Сценарий настройки облачной среды vRealize Automation поддерживает оба формата.
Настройка ресурса компьютера выполняется в облачном шаблоне со значениями minionId и cloudConfig. Затем работа продолжается с группой свойств SaltStackConfiguration. Группа свойств SaltStackConfiguration создается во время установки и настройки службы SaltStack Config в vRealize Suite Lifecycle Manager. Она содержит свойства masterAddress и masterFingerprint.
Значение minionId должно совпадать со значением, указанным для параметра /salt/minion_id
компьютера в разделе cloudConfig
кода облачного шаблона.
- Образ vRealize Automation, вызываемый из кода облачного шаблона
- Сценарий настройки облачной среды, вызываемый из кода облачного шаблона
- Содержимое сценария настройки облачной среды, которое добавляется непосредственно в код облачного шаблона
Примечание. При развертывании облачного шаблона, содержащего служебные серверы Salt, если развертывание не отображается в vRealize Automation Cloud Assembly, его можно отобразить с помощью службы vRealize Automation Service Broker.
Пример — развертывание на основе Linux и cloud-init
resources: Salt-Minion: type: Cloud.Machine properties: image: Ubuntu-18 flavor: medium constraints: - tag: 'env:vsphere' cloudConfig: | #cloud-config hostname: ${input.saltminionhostname} users: - name: ${input.user} sudo: ['ALL=(ALL) NOPASSWD:ALL'] groups: sudo shell: /bin/bash runcmd: - PASS=${input.password} - USER=${input.user} - echo $USER:$PASS | /usr/sbin/chpasswd - sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config - service ssh reload - curl -L https://bootstrap.saltstack.com -o install_salt.sh - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}
Пример — развертывание на основе Windows и Cloudbase-init
formatVersion: 1 inputs: {} resources: WindowsVM-Minion: type: Cloud.vSphere.Machine properties: image: win2016 flavor: medium customizationSpec: Windows minionId: '${resource.WindowsVM-Minion.resourceName}' networks: - network: '${resource.wpnet.id}' name: '${wpnet.name}' assignPublicIpAddress: true cloudConfig: | #ps1_sysnative [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-WebRequest -OutFile C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe -Uri https://repo.saltstack.com/windows/Salt-Minion-3002.2-Py3-AMD64-Setup.exe Start-Process -Wait -FilePath "C:\Salt-Minion-3002.2-Py3-AMD64-Setup.exe" -ArgumentList "/S" -PassThru ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master: salt", "master: ${propgroup.SaltStackConfiguration.masterAddress}") | Set-Content -Path C:\salt\conf\minion ((Get-Content -path C:\salt\conf\minion -Raw) -replace "#master_finger: ''", "master_finger: '${propgroup.SaltStackConfiguration.masterFingerPrint}'") | Set-Content -Path C:\salt\conf\minion Set-Content -Path C:\salt\conf\minion_id -Value '${resource.WindowsVM-Minion.resourceName}' C:\salt\salt-call.bat service.restart salt-minion wpnet: type: Cloud.Network properties: name: wpnet networkType: existing
Настройка команд Powershell
Команды PowerShell настраиваются в разделе cloudConfig
облачных шаблонов.
- Установите службу Salt Minion на ВМ Windows.
- Обновите значение имени главного сервера Salt в конфигурации служебного сервера.
- Обновите значение отпечатка пальца главного сервера Salt в конфигурации служебного сервера.
- Установите значение
minion_id
для имени ресурса ВМ, которое будет использоваться для принятия служебного сервера главным сервером Salt. - Перезапустите служебный сервер.
Дополнительные сведения о развертывании служебных серверов Salt
Описание дополнительных методов использования интегрированной службы SaltStack Config для развертывания служебных серверов Salt из облачного шаблона vRealize Automation см. в разделах Cloud Assembly и секретные элементы ABX Secrets (и как их использовать для установки агентов служебных серверов vRealize SaltStack).
Дополнительные общие сведения об определении и развертывании шаблонов vRealize Automation Cloud Assembly (особенно для тех, кто хорошо знаком с SaltStack, но недавно работает с vRealize Automation), см. в разделе Проектирование развертываний vRealize Automation Cloud Assembly.