Цель этого примера — установить программным способом службу Salt Minion на служебном сервере путем подключения виртуальной машины Windows к среде SaltStack Config.

Необходимые условия

Прежде чем развернуть служебный сервер с помощью API-интерфейса в среде Windows, убедитесь в следующем.
  • Имеется среда SaltStack Config с развернутой службой RaaS.
  • Установлены главный и служебный серверы Salt.
  • Развернута виртуальная машина Windows.

Процедура

  1. Убедитесь, что в папке etc/salt/cloud.deploy.d на главном сервере Salt содержатся эти файлы.
    Примечание: Значение xxx в имени файла, например salt-xxxx-readhat-8-x86_64-amd64.tar.gz, должно совпадать с номером версии главного сервера Salt. Для проверки версии главного сервера Salt выполните команду salt-master -V на главном сервере Salt.
  2. Для установки библиотек выполните команды pip3 install pypsexec smbprotocol и pip3 install impacket --ignore-installed.
  3. Для идентификации полного доменного имени главного сервера Salt введите команду salt saltmaster grains.get fqdn.
  4. Убедитесь, что файл C: \Windows\System32\drivers\etc\hosts на компьютере с ОС Windows настроен с IP-адресом и именем узла или полным доменным именем главного сервера Salt.
  5. Откройте PowerShell и выполните следующие команды, чтобы открыть необходимые порты.
    Порт Команды
    445 New-NetFirewallRule -Name "SMB445" - DisplayName "SMB445" -Protocol TCP - LocalPort 445

    Set-Item (dir wsman:\localhost\Listener*\Port - Recurse).pspath 445 -Force

    Restart-Service winrm
    4505–4506 netsh advfirewall firewall add rule name="Salt" dir=in action=allow protocol=TCP localport=4505-4506
  6. С помощью команды ping [FQDN] убедитесь, что полное доменное имя настроено для главного сервера Salt.
  7. Введите этот вызов API-интерфейса с корректными учетными данными для своей среды.
    from sseapiclient import APIClient
    
    client = APIClient('https://<master-ip>', '<ssc-username>', '<sscpassword>', ssl_validate_cert=False)
    
    
    client.api.minions.deploy_minion(
    
     master_id = '<master-id>',
    
     host_name_ip = '<prospective minion’s ip>',
    
     os = ‘<prospective minion’s os>’,
    
     minion_id = '<desired-minion-name-for-prospective-minion>',
    
     username = '<ssh-username-for-prospective-minion>', 
    
     password = '<ssh-password-for-prospective-minion>',
    
    )
    В среде SSC начинает выполняться функция deploy.minion. Это можно проверить на вкладке «Действия» в пользовательском интерфейсе SSC или выполнив команду python3, а затем client.api.minions.get_minio_deployments().

Результаты

Служебный сервер успешно развернут и настроен с использованием среды Windows и вызова API-интерфейса.

Дальнейшие действия

Для проверки развертывания служебного сервера выполните команду test.ping на служебном сервере с помощью окна «Выполнить команду» или команды \* test.ping и \* test.versions в окне команд главного сервера Salt.