Uno sviluppatore di modelli cloud con accesso a un'integrazione di SaltStack Config configurata in vRealize Automation può installare e distribuire minion Salt in un Salt Master di destinazione da un modello cloud.

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 aggiungere minion ai modelli cloud di vRealize Automation.

Prerequisiti

  • Installare e configurare il servizio SaltStack Config utilizzando vRealize Suite Lifecycle Manager.

    Vedere le informazioni in Configurazione dell'integrazione di SaltStack Config in vRealize Automation.

  • Creare l'integrazione di SaltStack Config in vRealize Automation.

    Vedere le informazioni in Configurazione dell'integrazione di SaltStack Config in vRealize Automation.

  • Installare il servizio dei minion Salt.

    Il processo di installazione del servizio dei minion Salt ha più aspetti. Per informazioni sull'installazione del servizio dei minion Salt in RedHat Linux e CentOS, vedere Installazione o aggiornamento di Salt nella Guida all'installazione di SaltStack Config nella documentazione del prodotto SaltStack Config. Per gli altri sistemi operativi, vedere http://repo.saltstack.com/.

  • È 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).

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. 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 il valore di /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
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
        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
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
È 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 programma di installazione del servizio dei minion Salt dal sito Web di SaltStack.
  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.

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

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 Cloud Assembly and Deploying Minions nell'articolo del blog di VMware vRealize Automation 8.3 and SaltStack Config – Technical Overview.

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.

Esempi di utilizzo di SaltStack Config per la pianificazione

  • Esempio: configurazione di uno scheduler tramite una chiamata API SaltStack Config.

    Utilizzare questo metodo quando si configura vRealize Automation e SaltStack Config. Connettersi a SaltStack Config con il client Python o un bridge HTTP-RPC ed eseguire il seguente script:

    schedule.save(name="name_of_schedule_entry",
                  schedule=<schedule description>,
                  masters=<list of targeted masters or `*` for all of them>,
                  tgt=<master+minion target description>,
                  cmd=<one of "local", "runner", or "wheel">,
                  fun="<name to schedule>",
                  arg=<arguments to function>,
                  tgt_uuid=<uuid of existing target, use this or tgt, not both>,
                  job_uuid=<uuid of existing job, use this or fun/arg, not both>,
                  enabled=<True or False to enable the schedule after saving>)

    Questo metodo mantiene tutte le pianificazioni nella stessa posizione. Altrimenti sarà necessario eseguire una query per tutti i master e i rispettivi minion collegati per visualizzare le pianificazioni create a livello di master/minion.

  • Esempio: configurazione di uno scheduler tramite la configurazione dei minion.

    Utilizzare questo metodo quando si installano i minion.

    Specificare il minion utilizzando la funzione schedule.add o eseguendo lo stato schedule.present rispetto al minion. Ad esempio:

    salt <minion_to_schedule> <name_of_job> function='cmd.run' job_args="[some command]" seconds=3600

    Se si esegue la chiamata Salt direttamente nel minion, è possibile configurare uno scheduler senza un master. Specificare il minion utilizzando salt <minion_to_schedule> state.apply schedulestate e il file schedulestate.sls come illustrato nell'esempio seguente:

    job1:
      schedule.present:
        - function: state.sls
        - job_args:
          - httpd
        - job_kwargs:
            test: True
        - when:
            - Monday 5:00pm
            - Tuesday 3:00pm
            - Wednesday 5:00pm
            - Thursday 3:00pm
            - Friday 5:00pm