Dopo aver installato e integrato il servizio SaltStack Config, è inoltre necessario installare, eseguire e registrare il servizio dei minion Salt in tutti i nodi che si intende gestire utilizzando SaltStack Config. È possibile distribuire il servizio dei minion Salt ai nodi utilizzando i modelli cloud di vRealize Automation o installando il servizio tramite Secure Shell (SSH).

Salt e la sua relazione con SaltStack Config

SaltStack Config viene eseguito su Salt, un framework di esecuzione remota open source basato su Python utilizzato per:

  • La gestione della configurazione
  • L'automazione
  • Il provisioning
  • L'orchestrazione

Salt è la tecnologia sottostante alle funzionalità di base di SaltStack Config. SaltStack Config ottimizza ed estende Salt, fornendo ulteriori caratteristiche e funzionalità che ne migliorano la facilità d'uso.

Salt utilizza il modello controller-client in cui un controller invia comandi a un client e il client li esegue. Nell'ecosistema Salt, il controller è un server che esegue il servizio Salt Master. Invia comandi a uno o più minion Salt, che sono nodi che eseguono il servizio dei minion Salt e sono registrati in tale Master specifico.

Salt può essere concepito anche come un modello editore-sottoscrittore. Il Master pubblica i processi che devono essere eseguiti e i minion sottoscrivono tali processi. Quando un processo specifico si applica a tale minion, quest'ultimo esegue il processo. Quando un minion completa l'esecuzione di un processo, invia i dati di restituzione del processo al Master.

I minion sono nodi che eseguono il servizio salt-minion. Il servizio è in ascolto dei comandi di un Salt Master ed esegue le attività richieste. È possibile distribuire minion dai modelli cloud di vRealize Automation.

Prima di iniziare a utilizzare SaltStack Config per la gestione della configurazione, è innanzitutto necessario installare il servizio dei minion Salt in tutti i nodi che si desidera gestire. È inoltre necessario registrare i minion inviando e accettando le relative chiavi per SaltStack Config.

Prerequisiti

  • Installare e configurare SaltStack Config e integrarlo con vRealize Automation.
  • I nodi gestiti da SaltStack Config devono essere in grado di raggiungere il Salt Master e devono trovarsi nella stessa rete del punto di integrazione di SaltStack Config e del Salt Master.
  • Le macchine vSphere distribuite in una rete privata devono essere in grado di avviare una connessione con l'integrazione di SaltStack Config e con Salt Master.

Installazione del servizio dei minion Salt tramite SSH

Il processo per l'installazione del servizio dei minion Salt tramite SSH dipende dal sistema operativo in esecuzione in tali nodi.

Dopo l'installazione del servizio dei minion Salt:
  1. Configurare ciascun minion affinché comunichi con il Master modificando il file master.conf nella directory /etc/salt/minion. In questo file, specificare l'indirizzo IP del Master. Ad esempio: master: 192.0.2.1
  2. Avviare il servizio dei minion:

    sudo systemctl enable salt-minion

    sudo systemctl start salt-minion

  3. Ripetere i passaggi precedenti per tutti i nodi rimanenti.

Dopo aver configurato i file dei minion in modo che puntino al Salt Master, accettare le chiavi dei minion nel servizio SaltStack Config nell'area di lavoro Chiavi minion.

Installazione del servizio dei minion Salt tramite i modelli cloud di vRealize Automation

Per distribuire il servizio dei minion Salt utilizzando i modelli cloud, è necessario poter accedere a cloud-init (Linux) o Cloudbase-init (Windows) ed essere esperti nel loro utilizzo. Per aggiungere minion Salt al Salt Master configurato per l'integrazione di vRealize Automation e SaltStack Config, la macchina virtuale nel modello cloud deve supportare cloud-init (Linux) o Cloudbase-init (Windows).

Nelle sezioni seguenti viene spiegato come distribuire il servizio dei minion Salt utilizzando i modelli cloud.

Gruppo di proprietà SaltStackConfiguration

Il processo di installazione e configurazione del servizio SaltStack Config in vRealize Suite Lifecycle Manager crea un gruppo di proprietà di vRealize Automation denominato SaltStackConfiguration. È possibile utilizzare i valori del gruppo di proprietà di SaltStackConfiguration quando si configura l'integrazione di SaltStack Config in una distribuzione o in un modello cloud di vRealize Automation. È inoltre possibile utilizzarli nella configurazione basata su Cloud-init o Cloudbase-init in un modello di vRealize Automation (in precedenza denominato blueprint) per installare minion. Le due proprietà in SaltStackConfiguration sono masterAddress, che corrisponde all'impostazione nome host nel punto di integrazione di SaltStack Config e masterFingerprint. Di seguito viene mostrato un gruppo di proprietà di SaltStackConfiguration di esempio.

Schermata che mostra la pagina dei gruppi di proprietà di vRealize Automation e il gruppo di proprietà "SaltStackConfiguration" creato durante l'installazione di SaltStack Config

Aggiunta di minion al Salt Master configurato per vRealize Automation

Dopo aver installato SaltStack Config, viene specificato un indirizzo IP del Salt Master. Tale indirizzo IP master viene utilizzato come proprietà masterAddress quando i minion vengono distribuiti da un modello cloud di vRealize Automation.

È possibile installare e distribuire i minion utilizzando gli script cloud-init o Cloudbase-init in una distribuzione o un modello cloud di vRealize Automation. È inoltre possibile utilizzare una mappatura delle immagini che rappresenta uno script di configurazione cloud che utilizza uno di questi formati. Per aggiungere minion Salt al Salt Master associato a un'integrazione di vRealize Automation SaltStack Config, la macchina di destinazione deve supportare cloud-init (Linux) o Cloudbase-init (Windows). Gli script di configurazione cloud di vRealize Automation supportano entrambi i formati.

È possibile configurare una risorsa macchina nel modello cloud con un valore minionId e un valore cloudConfig e fare riferimento al gruppo di proprietà SaltStackConfiguration. Il gruppo di proprietà SaltStackConfiguration viene creato durante l'installazione e la configurazione del servizio SaltStack Config in vRealize Suite Lifecycle Manager. Contiene le proprietà masterAddress e masterFingerprint.

Il valore di minionId deve corrispondere al valore specificato per /salt/minion_id della macchina nella sezione cloudConfig del codice del modello cloud.

Di seguito sono mostrati esempi di codice di modelli cloud di vRealize Automation basati su Windows e Linux. Si noti che gli script di configurazione cloud possono essere specificati utilizzando uno dei seguenti metodi:
  • Immagine di vRealize Automation richiamata dal codice del modello cloud
  • Script di configurazione cloud richiamato dal codice del modello cloud
  • Contenuti dello script di configurazione cloud aggiunti direttamente al codice del modello cloud

Nota: quando si distribuisce un modello cloud che contiene minion, se la distribuzione non è visibile in vRealize Automation Cloud Assembly, è possibile visualizzare la distribuzione utilizzando il servizio vRealize Automation Service Broker.

Esempio - Distribuzione basata su Linux e cloud-init

Di seguito viene illustrato un esempio di configurazione del modello cloud per la distribuzione di minion per una macchina basata su Linux che supporta 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

Esempio - Distribuzione basata su Windows e Cloudbase-init

Di seguito viene illustrato un esempio di configurazione del modello cloud per la distribuzione di minion per una macchina basata su Windows che supporta 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

Come configurare i comandi PowerShell

È possibile configurare i comandi PowerShell nella sezione cloudConfig utilizzando i seguenti passaggi. Per ulteriori dettagli, vedere la documentazione del prodotto SaltStack Config.
  1. Scaricare il pacchetto di minion Salt dal sito Web del repository di Salt.
  2. Installare il servizio dei minion Salt nella macchina virtuale Windows.
  3. Aggiornare il valore del nome host di Salt Master nella configurazione del minion.
  4. Aggiornare il valore dell'impronta digitale di Salt Master nella configurazione del minion.
  5. Impostare minion_id sul nome della risorsa della macchina virtuale che verrà utilizzato per accettare il minion nel Salt Master.
  6. Riavviare il minion.

Ulteriori informazioni sulla distribuzione dei minion Salt

Per i metodi alternativi di utilizzo di SaltStack Config integrato per distribuire minion Salt da un modello cloud di vRealize Automation, vedere i seguenti articoli del blog di VMware:

Per informazioni relative alla definizione e alla distribuzione di modelli cloud di vRealize Automation in generale, specialmente se si ha familiarità con SaltStack ma non con vRealize Automation, vedere Progettazione delle distribuzioni di vRealize Automation Cloud Assembly.