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.
- Para obtener información sobre la instalación del servicio de minion de Salt en RedHat Linux o CentOS, consulte Instalar Salt (antes de la instalación).
- Para otros sistemas operativos, consulte http://repo.saltstack.com/.
- 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
- Inicie el servicio de minion:
sudo systemctl enable salt-minion
sudo systemctl start salt-minion
- 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.
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.
- 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
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
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
cloudConfig
mediante los siguientes pasos.
- Descargue el paquete de minions de Salt del sitio web del repositorio de Salt.
- Instale el servicio Salt Minion en la máquina virtual de Windows.
- Actualice el valor de nombre de host maestro de Salt en la configuración de Minion.
- Actualice el valor de huella digital de maestro de Salt en la configuración de Minion.
- 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. - 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.