El objetivo de este caso práctico es instalar mediante programación el servicio de minion de Salt en un minion mediante la conexión de una máquina virtual de Windows al entorno de SaltStack Config.

Requisitos previos

Antes de poder implementar un minion mediante la API en un entorno de Windows, debe hacer lo siguiente:
  • Tener un entorno de SaltStack Config con RaaS implementado.
  • Tener un maestro de Salt y un minion de Salt instalados.
  • Implementar una máquina virtual de Windows.

Procedimiento

  1. Comprobar que la carpeta etc/salt/cloud.deploy.d del maestro de Salt contenga estos archivos.
    Nota: El xxxx del nombre de archivo, por ejemplo, salt-xxxx-readhat-8-x86_64-amd64.tar.gz, debe coincidir con la versión del maestro de Salt. Para comprobar la versión del maestro de Salt, ejecute el comando salt-master -V en el maestro de Salt.
  2. Instale las bibliotecas ejecutando los comandos pip3 install pypsexec smbprotocol y pip3 install impacket --ignore-installed.
  3. Introduzca el comando salt saltmaster grains.get fqdn para identificar el FQDN del maestro de Salt.
  4. Verifique que el archivo C: \Windows\System32\drivers\etc\hosts en su máquina Windows esté configurado con la IP del maestro de Salt y el nombre de host o FQDN.
  5. Abra PowerShell y ejecute estos comandos para abrir los puertos requeridos:
    destino Comandos
    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. Asegúrese de que el FQDN esté configurado para el maestro de Salt ejecutando el comando ping [FQDN].
  7. Introduzca esta llamada API con las credenciales correctas para su entorno:
    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>',
    
    )
    La función deploy.minion comienza a ejecutarse en el entorno de SSC. Puede comprobarlo en la pestaña Actividad de la interfaz de usuario de SSC o ejecutando el comando python3 seguido de client.api.minions.get_minio_deployments().

Resultados

El minion se implementó y configuró correctamente desde el entorno de Windows y la llamada API.

Qué hacer a continuación

Compruebe que el minion se haya implementado correctamente ejecutando un comando test.ping en el minion mediante la ventana Ejecutar comando o ejecutando los comandos \* test.ping y \* test.versions en la ventana del comando maestro de Salt.