Después de instalar e integrar el servicio de SaltStack Config, también debe instalar, ejecutar y registrar el servicio de minion de Salt en cualquier nodo que tenga previsto administrar mediante SaltStack Config. Puede implementar el servicio de minion de Salt en los nodos de mediante plantillas de nube de vRealize Automation o mediante la instalación del servicio a través de Secure Shell (SSH).

Salt y su relación con SaltStack Config

SaltStack Config se ejecuta en Salt, un marco de ejecución remota de código abierto basado en Python que se utiliza para:

  • Administración de la configuración
  • Automatización
  • Aprovisionamiento
  • Orquestación

Salt es la tecnología que subyace a la funcionalidad principal de SaltStack Config. SaltStack Config mejora y extiende Salt, lo que proporciona funciones y funcionalidades adicionales que mejoran la facilidad de uso.

Salt utiliza el modelo controlador-cliente en el que un controlador emite comandos para un cliente y este ejecuta el comando. En el ecosistema de Salt, el controlador es un servidor que ejecuta el servicio principal de Salt. Emite comandos a uno o varios minions de Salt, que son nodos que ejecutan el servicio de minion de Salt y que están registrados con ese maestro en particular.

Otra forma de describir Salt es como un modelo de editor-suscriptor. El maestro publica los trabajos que se deben ejecutar y los minions se suscriben a esos trabajos. Cuando se aplica un trabajo específico a ese minion, este lo ejecuta. Cuando un minion termina de ejecutar un trabajo, envía los datos devueltos del trabajo al maestro.

Los minions son nodos que ejecutan el servicio salt-minion. El servicio escucha los comandos de un maestro de Salt y realiza las tareas solicitadas. Puede implementar minions desde plantillas de nube de vRealize Automation.

Antes de poder empezar a usar SaltStack Config para la administración de la configuración, primero debe instalar el servicio de minion de Salt en todos los nodos que desee administrar. También debe registrar los minions enviando y aceptando sus claves para SaltStack Config.

Antes de comenzar

  • Instale y configure SaltStack Config, e intégrelo con vRealize Automation.
  • Los nodos que administra SaltStack Config deben poder comunicarse con el maestro de Salt y deben residir en la misma red que el punto de integración de SaltStack Config y el maestro de Salt.
  • Las máquinas de vSphere que se implementan en una red privada deben poder iniciar una conexión con la integración de SaltStack Config y el maestro de Salt.

Instalar el servicio de minion de Salt a través de SSH

El proceso para instalar el servicio de minion de Salt con SSH depende del sistema operativo que se ejecuta en esos nodos.

Después de instalar el servicio de minion de Salt:
  1. Configure cada minion para que se comunique con el maestro creando un archivo master.conf en el directorio /etc/salt/minion.d. En este archivo, proporcione la dirección IP del maestro. Por ejemplo: master: 192.0.2.1
  2. Inicie el servicio de minion:

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Repita los pasos anteriores para todos los nodos restantes.

Después de configurar estos archivos de minion para que apunten al maestro de Salt, acepte las claves de minion en el servicio de SaltStack Config en el área de trabajo Claves de minion.

Instalar el servicio de minion de Salt mediante plantillas de nube de vRealize Automation

Para implementar el servicio de minion de Salt mediante plantillas de nube, debe tener acceso a cloud-init (Linux) o Cloudbase-init (Windows) y saber usarlos. Para agregar minions de Salt al maestro de Salt configurado para la integración de SaltStack Config con vRealize Automation, la máquina virtual de la plantilla de nube debe ser compatible con cloud-init (Linux) o Cloudbase-init (Windows).

En las siguientes secciones se explica cómo implementar el servicio de minion de Salt mediante plantillas de nube.

Grupo de propiedades SaltStackConfiguration

El proceso de instalación y configuración del servicio de SaltStack Config en vRealize Suite Lifecycle Manager crea un grupo de propiedades de vRealize Automation denominado SaltStackConfiguration. Utilice los valores del grupo de propiedades SaltStackConfiguration cuando configure la integración de SaltStack Config en una plantilla de nube o una implementación de vRealize Automation. También se utilizan en la configuración basada en cloud-init o Cloudbase-init en una plantilla de vRealize Automation (anteriormente denominada blueprints) para instalar minions. Las dos propiedades de SaltStackConfiguration son masterAddress, que coincide con el ajuste hostname en el punto de integración de SaltStack Config y masterFingerprint. A continuación, se muestra un grupo de propiedades SaltStackConfiguration de ejemplo.

Pantalla con la página de grupos de propiedades de vRealize Automation y el grupo de propiedades "SaltStackConfiguration" creado cuando se instaló SaltStack Config

Agregar minions al maestro de Salt configurado para vRealize Automation

Cuando se instala SaltStack Config, se especifica una dirección IP principal de Salt. Esa dirección IP principal se utiliza como la propiedad masterAddress al implementar minions desde una plantilla de nube de vRealize Automation.

Instale e implemente minions mediante el uso de los scripts de cloud-init o Cloudbase-init en una plantilla de nube o una implementación de vRealize Automation. También puede utilizar una asignación de imagen que represente un script de configuración de nube que use cualquiera de estos formatos. Para agregar minions de Salt al maestro de Salt asociado a una integración de SaltStack Config de vRealize Automation, la máquina de destino debe ser compatible con cloud-init (Linux) o Cloudbase-init (Windows). Los scripts de configuración de nube de vRealize Automation admiten ambos formatos.

Configure un recurso de máquina en la plantilla de nube con un valor minionId y un valor cloudConfig, y haga referencia al grupo de propiedades SaltStackConfiguration. El grupo de propiedades SaltStackConfiguration se crea durante la instalación y la configuración del servicio de SaltStack Config en vRealize Suite Lifecycle Manager. Contiene las propiedades masterAddress y masterFingerprint.

El valor de minionId debe coincidir con el valor especificado para /salt/minion_id de la máquina en la sección cloudConfig del código de la plantilla de nube.

A continuación, se muestran ejemplos de códigos de plantilla de nube de vRealize Automation basados en Windows y en Linux. Tenga en cuenta que los scripts de configuración de nube se pueden especificar mediante cualquiera de los siguientes métodos:
  • Una imagen de vRealize Automation que se invoca desde el código de plantilla de nube
  • Un script de configuración de nube que se invoca desde el código de plantilla de nube
  • Contenido del script de configuración de nube que se agrega directamente al código de plantilla de nube

Nota: Cuando se implementa una plantilla de nube que contiene minions de Salt y la implementación no está visible en vRealize Automation Cloud Assembly, puede mostrar la implementación mediante el servicio de vRealize Automation Service Broker.

Ejemplo: implementación basada en Linux y cloud-init

A continuación, se muestra un ejemplo de configuración de plantilla de nube para implementar minions para una máquina basada en Linux que admita 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

Ejemplo: implementación basada en Windows y Cloudbase-init

A continuación, se muestra un ejemplo de configuración de plantilla de nube para implementar minions para un equipo basado en Windows que admita 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

Cómo configurar los comandos de PowerShell

Puede configurar comandos de PowerShell en la sección cloudConfig mediante los siguientes pasos.
  1. Descargue el paquete de minions de Salt del sitio web del repositorio de Salt.
  2. Instale el servicio Salt Minion en la máquina virtual de Windows.
  3. Actualice el valor de nombre de host maestro de Salt en la configuración de Minion.
  4. Actualice el valor de huella digital de maestro de Salt en la configuración de Minion.
  5. Establezca minion_id en el nombre de recurso de la máquina virtual que se utilizará para aceptar el minion en el maestro de Salt.
  6. Reinicie el minion.

Más información sobre la implementación de minions de Salt

Para ver métodos alternativos de uso de SaltStack Config integrado para implementar minions de Salt desde una plantilla de nube de vRealize Automation, consulte Secretos de Cloud Assembly y ABX (y cómo utilizarlos para instalar agentes minion de SaltStack de vRealize).

Para obtener información relacionada con la definición y la implementación de plantillas de vRealize Automation Cloud Assembly en general, especialmente si está familiarizado con SaltStack, pero es nuevo en vRealize Automation, consulte Diseñar implementaciones de vRealize Automation Cloud Assembly.