Une fois que vous avez installé et intégré le service SaltStack Config, vous devez également installer, exécuter et enregistrer le service de minion Salt sur tous les nœuds que vous prévoyez de gérer à l'aide de SaltStack Config. Vous pouvez déployer le service de minion Salt sur vos nœuds en utilisant des modèles de cloud vRealize Automation ou en installant le service via Secure Shell (SSH).

Salt et sa relation à SaltStack Config

SaltStack Config s'exécute sur Salt, une infrastructure d'exécution à distance open source basée sur Python utilisée pour :

  • Gestion de la configuration
  • Automatisation
  • Provisionnement
  • Orchestration

Salt est la technologie qui sous-tend les fonctionnalités essentielles de SaltStack Config. SaltStack Config améliore et étend Salt, en fournissant des fonctionnalités supplémentaires qui améliorent la facilité d'utilisation.

Salt utilise le modèle contrôleur-client dans lequel un contrôleur émettra des commandes sur un client et le client exécutera la commande. Dans l'écosystème Salt, le contrôleur est un serveur qui exécute le service de master Salt. Il exécute des commandes sur un ou plusieurs minions Salt, qui sont des nœuds qui exécutent le service de minion Salt et qui sont enregistrés dans ce master particulier.

Salt peut également être décrit comme un modèle éditeur-abonné. Le master publie les tâches à exécuter et les minions s'y abonnent. Lorsqu'une tâche spécifique s'applique à ce minion, il l'exécute. Lorsqu'un minion termine l'exécution d'une tâche, il renvoie les données de la tâche au master.

Les minions sont des nœuds qui exécutent le service salt-minion. Le service écoute les commandes d'un master Salt et effectue les tâches demandées. Vous pouvez déployer des minions à partir de modèles de cloud vRealize Automation.

Avant de pouvoir commencer à utiliser SaltStack Config pour la gestion de la configuration, vous devez d'abord installer le service de minion Salt sur tous les nœuds que vous souhaitez gérer. Vous devez également enregistrer les minions en acceptant leurs clés et en les envoyant à SaltStack Config.

Avant de commencer

  • Installez et configurez SaltStack Config, et intégrez-le à vRealize Automation.
  • Les nœuds gérés par SaltStack Config doivent être en mesure d'accéder au master Salt et doivent résider sur le même réseau que le point d'intégration de SaltStack Config et le master Salt.
  • Les machines vSphere qui sont déployées sur un réseau privé doivent pouvoir établir une connexion avec l'intégration de SaltStack Config et le master Salt.

Installation du service de minion Salt via SSH

Le processus d'installation du service de minion Salt à l'aide de SSH dépend du système d'exploitation en cours d'exécution sur ces nœuds.

Après l'installation du service de minion Salt :
  1. Configurez chaque minion pour communiquer avec le master en créant un fichier master.conf dans le répertoire /etc/salt/minion.d. Dans ce fichier, fournissez l'adresse IP du master. Par exemple : master: 192.0.2.1
  2. Démarrez le service de minion :

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Répétez les étapes précédentes pour tous les autres nœuds.

Après avoir configuré ces fichiers de minion pour qu'ils pointent vers le master Salt, acceptez les clés de minion dans le service SaltStack Config dans l'espace de travail de clés de minion.

Installation du service de minion Salt à l'aide de modèles de cloud vRealize Automation

Pour déployer le service de minion Salt à l'aide de modèles de cloud, vous devez avoir accès à cloud-init (Linux) ou Cloudbase-init (Windows), et savoir les utiliser. Pour ajouter des minions Salt au master Salt configuré pour l'intégration de SaltStack Config, la machine virtuelle de votre modèle de cloud doit prendre en charge cloud-init (Linux) ou Cloudbase-init (Windows).

Les sections suivantes expliquent comment déployer le service de minion Salt à l'aide de modèles de cloud.

Ajouter des minions au master Salt configuré pour vRealize Automation

Lorsque SaltStack Config est installé, une adresse IP de master Salt est spécifiée. Cette adresse IP de master est utilisée comme propriété masterAddress lorsque vous déployez des minions à partir d'un modèle de cloud vRealize Automation.

Vous installez et déployez des minions à l'aide de scripts cloud-init ou cloudbase-init dans un modèle de cloud ou un déploiement de vRealize Automation. Vous pouvez également utiliser un mappage d'image qui représente un script de configuration de cloud qui utilise l'un de ces formats. Pour ajouter des minions Salt au master Salt associé à une intégration de vRealize Automation SaltStack Config, la machine cible doit prendre en charge cloud-init (Linux) ou cloudbase-init (Windows). Le script de configuration cloud de vRealize Automation prend en charge les deux formats.

Configurez une ressource de machine dans le modèle de cloud avec une valeur minionId et une valeur cloudConfig, et reportez-vous au groupe de propriétés SaltStackConfiguration. Le groupe de propriétés SaltStackConfiguration est créé lors de l'installation et de la configuration du service SaltStack Config dans vRealize Suite Lifecycle Manager. Il contient les propriétés masterAddress et masterFingerprint.

La valeur minionId doit correspondre à la valeur spécifiée pour /salt/minion_id de la machine dans la section cloudConfig du code du modèle de cloud.

Des exemples de code de modèle de cloud vRealize Automation basés sur Windows et Linux sont présentés ci-dessous. Notez que les scripts de configuration de cloud peuvent être spécifiés à l'aide de l'une des méthodes suivantes :
  • Image de vRealize Automation qui est appelée depuis le code du modèle de cloud
  • Script de configuration de cloud appelé à partir du code de modèle de cloud
  • Contenu du script de configuration cloud ajouté directement au code du modèle de cloud

Remarque : lorsque vous déployez un modèle de cloud qui contient des minions Salt, si le déploiement n'est pas visible dans Cloud Assembly, vous pouvez afficher le déploiement en utilisant le service Service Broker.

Exemple : déploiement basé sur Linux et cloud-init

Un exemple de configuration de modèle de cloud pour le déploiement de minions pour une machine Linux qui prend en charge cloud-init est présenté ci-dessous :
resources:
  Salt-Minion:
    type: Cloud.Machine
    properties:
      image: Ubuntu-18
      flavor: medium
      constraints:
        - tag: 'env:vsphere'
      cloudConfig: |
        #cloud-config
        hostname: ${input.saltminionhostname}
        users:
          - name: ${input.user}
            sudo: ['ALL=(ALL) NOPASSWD:ALL']
            groups: sudo
            shell: /bin/bash
        runcmd:
          - PASS=${input.password}
          - USER=${input.user}
          - echo $USER:$PASS | /usr/sbin/chpasswd
          - sed -i "s/PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
          - service ssh reload
          - curl -L https://bootstrap.saltstack.com -o install_salt.sh
          - sudo sh install_salt.sh -A ${propgroup.SaltStackConfiguration.masterAddress}

Exemple : déploiement basé sur Windows et Cloudbase-init

Un exemple de configuration de modèle de cloud pour le déploiement de minions d'une machine Windows qui prend en charge cloudbase-init est présenté ci-dessous :
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

Configuration des commandes PowerShell

Vous configurez les commandes PowerShell dans la section cloudConfig de vos modèles de cloud.

Avant d'activer les commandes PowerShell, téléchargez le module de minion Salt sur le site Web du référentiel Salt. Ensuite, procédez comme suit :
  1. Installez le service minion Salt dans la machine virtuelle Windows.
  2. Mettez à jour la valeur du nom d'hôte du master Salt dans la configuration du minion.
  3. Mettez à jour la valeur d'empreinte digitale du master Salt dans la configuration du minion.
  4. Définissez minion_id sur le nom de la ressource de machine virtuelle qui sera utilisé pour accepter le minion sur le master Salt.
  5. Redémarrez le mini-on.

En savoir plus sur le déploiement de minions Salt

Pour découvrir d'autres méthodes d'utilisation intégrées de SaltStack Config pour déployer des minions Salt à partir d'un modèle de cloud vRealize Automation, reportez-vous à la section Cloud Assembly et secrets ABX (et comment les utiliser pour l'installation d'agents vRealize SaltStack Minion).

Pour plus d'informations sur la définition et le déploiement de modèles Cloud Assembly en général, notamment si vous connaissez bien SaltStack, mais que n'avez aucune expérience avec vRealize Automation, reportez-vous à la section Conception de vos déploiements de vRealize Automation Cloud Assembly.