Als ontwikkelaar van cloudsjablonen met toegang tot een geconfigureerde SaltStack Config-integratie in vRealize Automation kunt u Salt-minions installeren en implementeren op een Salt-doelmaster op basis van een cloudsjabloon.

Minions zijn knooppunten die de Salt-minionservice uitvoeren. De service luistert naar opdrachten van een Salt-master en voert de aangevraagde taken uit. U kunt minions implementeren vanuit vRealize Automation-cloudsjablonen.

Vereisten

  • Installeer en configureer de SaltStack Config-service met behulp van vRealize Suite Lifecycle Manager.
  • Maak de SaltStack Config-integratie in vRealize Automation.
  • Installeer de Salt-minionservice.

    Het installatieproces van de Salt-minionservice heeft meerdere facetten. Zie Salt installeren of upgraden in de installatiehandleiding voor SaltStack Config in de productdocumentatie voor SaltStack Config voor informatie over het installeren van de Salt-minionservice in RedHat Linux en CentOS. Zie http://repo.saltstack.com/ voor andere besturingssystemen.

  • U moet toegang hebben tot en bekend zijn met het gebruik van cloud-init (Linux) of Cloudbase-init (Windows). Om Salt-minions toe te voegen aan de Salt-master die is geconfigureerd voor de vRealize Automation SaltStack Config-integratie, moet de virtuele machine in uw cloudsjabloon cloud-init (Linux) of Cloudbase-init (Windows) ondersteunen.

De eigenschapsgroep SaltStackConfiguration

Tijdens het installeren en configureren van de SaltStack Config-service in vRealize Suite Lifecycle Manager wordt een vRealize Automation-eigenschapsgroep met de naam SaltStackConfiguration gemaakt. U gebruikt de waarden van de eigenschapsgroep SaltStackConfiguration bij het configureren van de SaltStack Config-integratie in een vRealize Automation-cloudsjabloon of -implementatie. U gebruikt ze ook in een cloud-init- of Cloudbase-init-gebaseerde configuratie in een vRealize Automation-sjabloon (voorheen blueprints genoemd) om minions te installeren. De twee eigenschappen in de SaltStackConfiguration zijn masterAddress, die overeenkomt met de instelling hostname op het integratiepunt van SaltStack Config, en masterFingerprint. Hieronder wordt een voorbeeld van de eigenschapsgroep SaltStackConfiguration getoond.

Schermafbeelding van de pagina vRealize Automation-eigenschapsgroepen en de eigenschapsgroep SaltStackConfiguration die is gemaakt tijdens de installatie van SaltStack Config

Voeg minions toe aan de Salt-master die is geconfigureerd voor vRealize Automation

Wanneer SaltStack Config wordt geïnstalleerd, wordt een IP-adres voor de Salt-master opgegeven. Dat IP-adres van de master wordt gebruikt als eigenschap masterAddress wanneer u minions implementeert op basis van een vRealize Automation-cloudsjabloon.

U installeert en implementeert minions door scripts met cloud-init of Cloudbase-init te gebruiken in een vRealize Automation-cloudsjabloon of -implementatie. U kunt ook een imagetoewijzing gebruiken die een cloudconfiguratiescript vertegenwoordigt dat een van deze indelingen gebruikt. Om Salt-minions toe te voegen aan de Salt-master die is gekoppeld aan een integratie van vRealize Automation SaltStack Config, moet de doelmachine cloud-init (Linux) of Cloudbase-init (Windows) ondersteunen. vRealize Automation-cloudconfiguratiescript ondersteunt beide indelingen.

U configureert een machineresource in de cloudsjabloon met een waarde voor minionId en cloudConfig en verwijst naar de eigenschapsgroep SaltStackConfiguration. De eigenschapsgroep SaltStackConfiguration wordt tijdens de installatie en configuratie van de SaltStack Config-service in vRealize Suite Lifecycle Manager gemaakt. Deze bevat de eigenschappen masterAddress en masterFingerprint.

De waarde voor minionId moet overeenkomen met de waarde die is opgegeven voor de /salt/minion_id van de machine in het gedeelte cloudConfig van de cloudsjablooncode.

Voorbeelden van vRealize Automation-cloudsjablooncodes op basis van Windows en Linux worden hieronder weergegeven. Houd er rekening mee dat cloudconfiguratiescripts kunnen worden opgegeven met een van de volgende methoden:
  • vRealize Automation-image die wordt aangeroepen vanuit de cloudsjablooncode
  • Cloudconfiguratiescript dat wordt aangeroepen vanuit de cloudsjablooncode
  • Inhoud van het cloudconfiguratiescript die direct aan de cloudsjablooncode wordt toegevoegd

Opmerking: wanneer u een cloudsjabloon implementeert die Salt-minions bevat en de implementatie niet zichtbaar is in vRealize Automation Cloud Assembly, kunt u de implementatie weergeven met behulp van de vRealize Automation Service Broker-service.

Voorbeeld: Linux-gebaseerde implementatie en cloud-init

Een voorbeeld van een configuratie van een cloudsjabloon voor het implementeren van minions voor een Linux-gebaseerde machine die cloud-init ondersteunt, wordt hieronder weergegeven:
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

Voorbeeld: Windows-gebaseerde implementatie en Cloudbase-init

Een voorbeeld van een configuratie van een cloudsjabloon voor het implementeren van minions voor een Windows-gebaseerde machine die Cloudbase-init ondersteunt, wordt hieronder weergegeven:
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

Voorbeeld: implementatie op basis van vooraf gedefinieerde centOS-imagetoewijzing

In dit eenvoudige voorbeeld van een cloudsjabloon implementeert u één minion op een vSphere-machine in een vSphere-netwerk. De centOS-image bevat alle benodigde implementatietoewijzingen.
inputs: {}
resources:
  SaltVM:
    type: Cloud.vSphere.Machine
    forceRecreate: true
    properties:
      name: salt-vm-vsphere
      image: centos72x64
      flavor: small
      saltConfiguration:
        masterId: saltstack_enterprise_installer
        minionId: minion1
        saltEnvironment: env1
        stateFiles:
          - state1
          - state2
      remoteAccess:
        authentication: usernamePassword
        username: root
        password: dynayo
      networks:
        - network: '${resource["SaltNetwork"].id}'
  SaltNetwork:
    type: Cloud.Network
    properties:
      name: salt-vsphere-network
      networkType: existing

Powershell-opdrachten configureren

U kunt PowerShell-opdrachten in de sectie cloudConfig configureren door de volgende stappen uit te voeren. Zie de productdocumentatie voor SaltStack Config voor meer informatie.
  1. Download het installatieprogramma voor de Salt-minionservice van de SaltStack-website.
  2. Installeer de Salt-minionservice in de Windows VM.
  3. Werk de waarde voor de hostnaam van de Salt-master bij in de configuratie van de minion.
  4. Werk de waarde voor de vingerafdruk van de Salt-master bij in de minionconfiguratie.
  5. Stel de minion_id in op de VM-resourcenaam die wordt gebruikt voor het accepteren van de minion op de Salt-master.
  6. Start de minion opnieuw.

Meer informatie over het implementeren van Salt-minions

Voor alternatieve gebruiksmethoden voor geïntegreerde SaltStack Config om Salt-minions te implementeren op basis van een vRealize Automation-cloudsjabloon, raadpleegt u het VMware-blogartikel VMware Cloud Assembly en ABX-geheimen (en hoe u deze kunt gebruiken voor het installeren van vRealize SaltStack Minion Agents).

Voorbeelden van het gebruik SaltStack Config voor planning

  • Voorbeeld: stel een schema op door een API-aanroep SaltStack Config te maken.

    Gebruik deze methode wanneer u vRealize Automation en SaltStack Config configureert. Maak met de Python-client of een HTTP-RPC-brug verbinding met SaltStack Config en voer het volgende script uit:

    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>)

    Met deze methode worden alle schema's op dezelfde plaats behouden. Anders moet u query's uitvoeren voor alle masters en hun gekoppelde minions om schema's te bekijken die zijn gemaakt op het niveau van master/minion.

  • Voorbeeld: stel een schema in door minions te configureren.

    Gebruik deze methode wanneer u de minions installeert.

    Geef de minion op door de functie schedule.add te gebruiken of de status schedule.present uit te voeren op de minion. Bijvoorbeeld:

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

    U kunt een planner zonder master configureren als u de Salt-aanroep rechtstreeks op de minion kunt uitvoeren. Geef de minion op door salt <minion_to_schedule> state.apply schedulestate en het bestand schedulestate.sls te gebruiken, zoals in het volgende voorbeeld wordt weergegeven:

    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