После установки и интеграции службы 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 выполните следующие действия.
  1. Чтобы настроить каждый служебный сервер для связи с главным сервером, создайте файл master.conf в каталоге /etc/salt/minion.d. В этом файле укажите IP-адрес главного сервера. Например, master: 192.0.2.1.
  2. Запустите службу Minion.

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Повторите предыдущие шаги для всех оставшихся узлов.

Настроив эти файлы Minion так, чтобы они указывали на главный сервер Salt, примите ключи служебных серверов в службе SaltStack Config в рабочей области «Ключи служебных серверов».

Установка службы Salt Minion с помощью облачных шаблонов vRealize Automation

Чтобы развернуть службу Salt Minion с использованием облачных шаблонов, необходимо иметь доступ к cloud-init (Linux) или Cloudbase-init (Windows), а также хорошо знать их особенности. Для добавления служебных серверов Salt к главному серверу Salt, настроенному для интеграции SaltStack Config в vRealize Automation, виртуальная машина в облачном шаблоне должна поддерживать 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.

На экране отображаются страница «Группы свойств vRealize Automation» и группа свойств «SaltStackConfiguration», созданная при установке SaltStack Config

Добавление служебных серверов к главному серверу 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 для ОС Windows и Linux. Следует отметить, что для создания сценария настройки облачной среды можно использовать один из следующих методов.
  • Образ vRealize Automation, вызываемый из кода облачного шаблона
  • Сценарий настройки облачной среды, вызываемый из кода облачного шаблона
  • Содержимое сценария настройки облачной среды, которое добавляется непосредственно в код облачного шаблона

Примечание. При развертывании облачного шаблона, содержащего служебные серверы Salt, если развертывание не отображается в vRealize Automation Cloud Assembly, его можно отобразить с помощью службы vRealize Automation Service Broker.

Пример — развертывание на основе Linux и cloud-init

Ниже приведен пример конфигурации облачного шаблона для развертывания служебных серверов для компьютера под управлением Linux, который поддерживает cloud-init.
inputs: {}
resources:
  LinuxVM-Minion:
    type: Cloud.vSphere.Machine
    properties:
      name: salt-minion-vra
      cpuCount: 1
      totalMemoryMB: 2048
      imageRef: 'https://build-artifactory.eng.vmware.com/symphony-infra-local/ubuntu/releases/xenial/release-20190605/ubuntu-16.04-server-cloudimg-amd64.ova'
      minionId: '${resource.LinuxVM-Minion.resourceName}'
      cloudConfig: |
        #cloud-config
        runcmd:
          - sudo echo '${resource.LinuxVM-Minion.resourceName}' > /etc/salt/minion_id
          - curl -L https://bootstrap.saltstack.com -o install_salt.sh
          - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}
        salt_minion:
          pkg_name: 'salt-minion'
          service_name: 'salt-minion'
          config_dir: '/etc/salt'
          conf:
            master: ${propgroup.SaltStackConfiguration.masterAddress}
            master_finger: ${propgroup.SaltStackConfiguration.masterFingerPrint}
      remoteAccess:
        authentication: publicPrivateKey
        sshKey: ssh-rsa your-public-key
      networks:
        - network: '${resource.vSphere_Network.id}'
  vSphere_Network:
    type: Cloud.Network
    properties:
      networkType: existing

Пример — развертывание на основе Windows и Cloudbase-init

Ниже приведен пример конфигурации облачного шаблона для развертывания служебных серверов для компьютера под управлением 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 с помощью следующей процедуры.
  1. Загрузите пакет Salt Minion с веб-сайта репозитория Salt.
  2. Установите службу Salt Minion на ВМ Windows.
  3. Обновите значение имени главного сервера Salt в конфигурации служебного сервера.
  4. Обновите значение отпечатка пальца главного сервера Salt в конфигурации служебного сервера.
  5. Установите значение minion_id для имени ресурса ВМ, которое будет использоваться для принятия служебного сервера главным сервером Salt.
  6. Перезапустите служебный сервер.

Дополнительные сведения о развертывании служебных серверов Salt

Описание дополнительных методов использования интегрированной службы SaltStack Config для развертывания служебных серверов Salt из облачного шаблона vRealize Automation см. в разделах Cloud Assembly и секретные элементы ABX Secrets (и как их использовать для установки агентов служебных серверов vRealize SaltStack).

Дополнительные общие сведения об определении и развертывании шаблонов vRealize Automation Cloud Assembly (особенно для тех, кто хорошо знаком с SaltStack, но недавно работает с vRealize Automation), см. в разделе Проектирование развертываний vRealize Automation Cloud Assembly.