U kunt Ansible Automation Platform, voorheen Ansible Tower, met Automation Assembler integreren om het configuratiebeheer van geïmplementeerde resources te ondersteunen. Nadat u de integratie heeft geconfigureerd, kunt u virtuele onderdelen van Ansible Automation Platform toevoegen aan nieuwe of bestaande implementaties vanuit de cloudsjablooneditor.

Voorwaarden

  • Geef gebruikers die geen beheerder zijn de juiste rechten om toegang tot Ansible Automation Platform te krijgen. Er zijn twee opties die kunnen worden gebruikt voor de meeste configuraties. Kies de optie die het meest geschikt is voor uw configuratie.
    • Geef gebruikers de rollen Inventarisbeheerder en Taaksjabloonbeheerder op organisatieniveau.
    • Geef gebruikers Beheerdersrechten voor een bepaalde inventaris en de rol Uitvoeren voor alle taaksjablonen die worden gebruikt voor inrichting.
  • U moet de juiste verificatiegegevens en sjablonen in Ansible Automation Platform configureren voor gebruik met uw implementaties. Sjablonen kunnen opdrachtsjablonen of werkstroomsjablonen zijn. Opdrachtsjablonen definiëren de inventaris en het playbook voor gebruik met een implementatie. Er is een 1:1-toewijzing tussen een taaksjabloon en een playbook. Playbooks gebruiken een YAML-achtige syntaxis om taken te definiëren die aan de sjabloon zijn gekoppeld. Voor de meeste gangbare implementaties gebruikt u verificatiegegevens voor de machine voor verificatie.

    Met werkstroomsjablonen kunnen gebruikers reeksen maken die bestaan uit een willekeurige combinatie van opdrachtsjablonen, projectsynchronisaties en inventarissynchronisaties die aan elkaar zijn gekoppeld, zodat u ze als één afzonderlijke eenheid kunt uitvoeren. De Ansible Automation Platform Workflow Visualizer helpt gebruikers bij het ontwerpen van werkstroomsjablonen. Voor de meeste gangbare implementaties kunt u verificatiegegevens voor de machine gebruiken voor verificatie.

    Als u met een Ansible Automation Platform werkt, moet u een uitvoeringsomgeving op de Ansible Controller definiëren om te voldoen aan de afhankelijkheden van Ansible-runner. Zie de documentatie voor Ansible voor meer informatie over uitvoeringsomgevingen en containerimages. Raadpleeg in het bijzonder https://docs.ansible.com/automation-controller/4.2.0/html/userguide/execution_environments.html.

    1. Meld u aan bij Ansible Automation Platform en navigeer naar de sectie Sjablonen.
    2. Selecteer Een nieuwe taaksjabloon toevoegen.
      • Selecteer de inloggegevens die u al heeft gemaakt. Dit zijn de verificatiegegevens van de machine die moet worden beheerd door Ansible Automation Platform. Voor elke taaksjabloon kan er één verificatiegegevensobject zijn.
      • Selecteer Vragen bij starten voor de limietselectie. Hiermee zorgt u ervoor dat de taaksjabloon wordt uitgevoerd op het knooppunt dat wordt ingericht of waarvan de inrichting is opgeheven vanuit Automation Assembler. Als deze optie niet is geselecteerd, wordt er een fout Geen limiet ingesteld weergegeven wanneer de blueprint die de taaksjabloon bevat, wordt geïmplementeerd.
    3. Selecteer Een nieuwe werkstroomsjabloon toevoegen.
      • Selecteer de inloggegevens die u al heeft gemaakt en definieer vervolgens de inventaris. Ontwerp de werkstroomsjabloon met Workflow Visualizer.

      Voor het vak Limiet van werkstroom of ©sjablonen kunt u doorgaans Vragen bij starten selecteren. Hiermee zorgt u ervoor dat de opdracht- of werkstroomsjabloon wordt uitgevoerd op het knooppunt dat wordt ingericht of waarvan de inrichting is opgeheven vanuit Automation Assembler.

  • U kunt de uitvoering van de opdrachtsjablonen of werkstroomsjablonen weergeven die worden aangeroepen via Automation Assembler op het tabblad Ansible Tower-opdrachten.

Procedure

  1. Selecteer Infrastructuur > Verbindingen > Integraties en klik op Integratie toevoegen.
  2. Klik op Ansible Tower.
    De Ansible-configuratiepagina wordt weergegeven.
  3. Voer de hostnaam in. Deze kan een IP-adres kan zijn, en andere vereiste informatie voor de Ansible Automation Platform-instantie.
  4. Voer de gebruikersnaam en het wachtwoord in voor de UI-gebaseerde verificatie voor de toepasselijke Ansible Automation Platform-instantie.
  5. Klik op Valideren om de integratie te controleren.
  6. Typ een geschikte naam en beschrijving voor de integratie.
  7. Klik op Toevoegen.

resultaten

Ansible Tower kan worden gebruikt in cloudsjablonen.

Volgende stappen

Voeg Ansible Automation Platform-onderdelen toe aan de gewenste cloudsjablonen. Zorg ervoor dat u de juiste opdrachtsjabloon opgeeft met uitvoeringsrechten voor de gebruiker die zijn opgegeven in het integratie-account.

  1. Selecteer Ansible op de canvaspagina van de cloudsjabloon onder de kop Configuratiebeheer in het menu met blueprintopties en sleep het Ansible Automation Platform-onderdeel naar het canvas.
  2. Gebruik het paneel aan de rechterkant om de geschikte Ansible Automation Platform-eigenschappen zoals opdrachtsjablonen te configureren.

Wanneer u een Ansible Automation Platform-tegel aan een cloudsjabloon toevoegt, maakt VMware Aria Automation de hostvermelding voor de gekoppelde virtuele machine in Ansible Automation Platform. Standaard gebruikt VMware Aria Automation de resourcenaam van de virtuele machine om de hostvermelding te maken, maar u kunt elke naam opgeven met behulp van de eigenschap hostName in de blueprint-YAML. Om te communiceren met de machine, maakt VMware Aria Automation de hostvariabele ansible_host: IP Address voor de hostvermelding. U kunt het standaardgedrag overschrijven om communicatie met FQDN te configureren, door het trefwoord ansible_host onder hostVariables op te geven en FQDN als bijbehorende waarde op te geven. In het volgende YAML-codefragment ziet u een voorbeeld van hoe hostnaam en FQDN-communicatie kunnen worden geconfigureerd:

Cloud_Ansible_Tower_1:
	type: Cloud Ansible Tower
	properties:
		host: name of host
		account: name of account
		hostName: resource name
		hostVariables:
			ansible_host:Host FQDN
			

In dit voorbeeld overschrijft u de standaardwaarde van ansible_host door de FQDN op te geven. Dit kan handig zijn voor gebruikers die willen dat Ansible Tower via de FQDN verbinding met de hostmachine maakt.

De standaardwaarde van hostVariables in de YAML zal ansible_host:IP_address zijn en het IP-adres wordt gebruikt om met de server te communiceren.

Als de YAML-eigenschap count groter is dan 1 voor Ansible Automation Platform, kan de hostnaam worden toegewezen aan een van de respectieve eigenschappen van de virtuele machine. In het volgende voorbeeld ziet u de toewijzing van een VM-resource met de naam Ubuntu-VM als wij willen dat de adreseigenschap wordt toegewezen aan de hostnaam.

 hostname: '${resource.Ubuntu-VM.address[count.index]}' 

Wanneer u een Ansible Automation Platform-onderdeel toevoegt aan een cloudsjabloon, kunt u de taaksjabloon opgeven om de YAML van de cloudsjabloon aan te roepen. U kunt ook werkstroomsjablonen of een combinatie van taaksjablonen en werkstroomsjablonen opgeven. Als u het sjabloontype niet opgeeft, gaat VMware Aria Automation ervan uit dat u een taaksjabloon aanroept.

In het volgende YAML-fragment ziet u een voorbeeld van hoe u een combinatie van opdracht- en werkstroomsjablonen kunt aanroepen in een Ansible Tower-cloudsjabloon.

Cloud_Ansible_1:
type: Cloud.Ansible.Tower
  properties:
    host: ‘${resource.CentOS_Machine.*}’
    account:
    maxConnectionRetries: 2
    maxJobRetries: 2
    templates:
      provision:
        - name: My workflow
          type: workflow
        - name: My job template      

We hebben de maxConnectionsRetries en maxJobRetries toegevoegd om Ansible-gerelateerde fouten te behandelen. De cloudsjablonen accepteren de aangepaste waarde en, als er geen waarde wordt opgegeven, wordt de standaardwaarde gebruikt. Voor maxConnectionRetries is de standaardwaarde 10 en voor maxJobRetries is de standaardwaarde 3.

Opmerking: Eerdere versies van VMware Aria Automation ondersteunden de uitvoering van opdrachtsjablonen alleen met behulp van het schema jobTemplate in de cloudsjabloon. Het schema jobTemplate is nu afgeschaft en kan in toekomstige releases worden verwijderd. De eigenschap jobTemplate werkt momenteel nog steeds zoals verwacht. Om werkstroomsjablonen uit te voeren en aanvullende functies te gebruiken, wordt u aanbevolen het sjablonenschema te gebruiken.

Automation Assembler-sjablonen voor Ansible Automation Platform-integraties bevatten de eigenschap useDefaultLimit met de waarde true of false om te definiëren waar Ansible-sjablonen worden uitgevoerd. Ansible-sjablonen kunnen opdrachtsjablonen of werkstroomsjablonen zijn. Als deze waarde op waar is ingesteld, worden de opgegeven sjablonen uitgevoerd op basis van de machine die is opgegeven in het vak Limiet op de pagina Ansible-sjablonen. Als de waarde op false is ingesteld, worden de sjablonen uitgevoerd op de ingerichte machine. Gebruikers moeten echter het selectievakje Vragen bij starten inschakelen op de pagina Sjablonen van Ansible Automation Platform. De standaardwaarde van deze eigenschap is onwaar. In het volgende YAML-voorbeeld ziet u hoe de eigenschap useDefaultLimit in cloudsjablonen wordt weergegeven.

templates:
  provision:
    - name: ping aws_credentials
      type: job
      useDefaultLimit: false
      extraVars: '{"rubiconSurveyJob" : "checkSurvey"}'

Bovendien kunt u, zoals in het vorige voorbeeld, de eigenschap extraVars gebruiken om extra variabelen of enquêtevariabelen op te geven. Deze mogelijkheid kan handig zijn voor het uitvoeren van sjablonen waarvoor invoer is vereist. Als een gebruiker de enquêtevariabele heeft behouden, moet u de variabele doorgeven in de sectie extraVars van de cloudsjabloon om fouten te voorkomen.

Gebruikers met cloudbeheerdersrechten kunnen het project wijzigen van een implementatie die Ansible Open Source- en Ansible Automation Platform-resources bevat. De functionaliteit is beschikbaar als een actie voor dag 2 op implementatieniveau.

Als u het project voor een Ansible-implementatie wilt wijzigen, selecteert u de optie Project wijzigen in het menu Acties van de implementatie, zoals weergegeven op de pagina Implementaties in Automation Assembler, kiest u het doelproject en klikt u op Verzenden in het weergegeven dialoogvenster.

Hoewel de integratie van Ansible Tower de groepseigenschap niet ondersteunt, is er een alternatief voor klanten om equivalente functionaliteit te implementeren met behulp van de VM-tags en de VMware-inventarisplug-in, zoals beschreven in het volgende artikel: https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html

Gebruikers moeten twee wijzigingen aanbrengen om deze te laten werken:
  • Gebruik ansible_host (bijv., FQDN) en hostName in de cloudsjabloon.
  • Schakel in AWX de markering voor bijwerken bij opstarten in. Dit houdt in dat wordt gesynchroniseerd naar vCenter voor nieuwe hosts voordat het playbook wordt uitgevoerd. Bij de synchronisatie worden FQDN-hostvermeldingen samengevoegd die door VMware Aria Automation worden toegevoegd en door de VMware-inventarisplug-in worden geïmporteerd, en worden hosts toegewezen aan groepen. Inventarisgroepen worden gemaakt op basis van VM-tagwaarden met behulp van de bovenstaande synchronisatiebronvariabelen.
Opmerking: Hoewel VMware het gebruik van AWX niet formeel ondersteunt, werkt AWX in het scenario dat in dit document wordt beschreven.

Zie de volgende cloudsjabloon voor een voorbeeld van een implementatie.

# Created by Quickstart wizard.
name: RHEL 8
version: 0.0.1
formatVersion: 1
inputs:
  image:
    type: string
    description: Select an OS Version
    default: RHEL 8 Base
    enum:
      - RHEL 8 Base
      - RHEL 7 Base
  AWX:
    type: string
    description: Choose AWX Environment
    enum:
      - LabAWX
      - FA/CC-AWX
  envrionmnetTag:
    type: string
    description: Choose VM Environment
    enum:
      - cel
      - mag
      - wdr
  purposeTag:
    type: string
    description: Choose Server Purpose
    default: ''
    enum:
      - ''
      - mariadb
      - oracle
  authGroupTag:
    type: string
    description: Choose Authentication Group
    default: ''
    enum:
      - ''
      - dbo_linux
      - oracle
      - postgres
  hostname:
    type: string
    description: Desired hostname
    default: changeme
  cpuCount:
    type: integer
    description: Number of virtual processors
    default: 1
  totalMemoryMB:
    type: integer
    description: Machine virtual memory size in Megabytes
    default: 1024
  disk1Size:
    type: integer
    description: A SIZE of 0 will disable the disk and it will not be provisioned.
    default: 0
  disk2Size:
    type: integer
    description: A SIZE of 0 will disable the disk and it will not be provisioned.
    default: 0
  neededip:
    type: string
    description: Enter an available IP Address
    title: Needed-IP-Address
  vlan:
    type: string
    description: Enter in needed vlan
    title: Enter VLAN ID example "vl500"
resources:
  Cloud_Ansible_Tower_1:
    type: Cloud.Ansible.Tower
    metadata:
      layoutPosition:
        - 0
        - 0
    properties:
      host: ${resource.Cloud_vSphere_Machine_1.*}
      account: ${input.AWX}
      hostName: ${input.hostname}
      hostVariables:
        ansible_host: ${input.hostname}.dcl.wdpr.disney.com
      templates:
        provision:
          - name: Linux-Role
  Cloud_vSphere_Machine_1:
    type: Cloud.vSphere.Machine
    metadata:
      layoutPosition:
        - 0
        - 1
    properties:
      image: ${input.image}
      Infoblox.IPAM.Network.dnsSuffix: dcl.wdpr.disney.com
      Infoblox.IPAM.Network.dnsView: Internal
      customizationSpec: Rhel7Base
      name: ${input.hostname}
      cpuCount: ${input.cpuCount}
      totalMemoryMB: ${input.totalMemoryMB}
      attachedDisks: ${map_to_object(resource.Cloud_Volume_1[*].id + resource.Cloud_Volume_2[*].id, "source")}
      networks:
        - network: ${resource.Cloud_vSphere_Network_1.id}
          assignment: static
          address: ${input.neededip}
      tags:
        - key: Server-Team
          value: ${input.envrionmnetTag}
        - key: Server-Team
          value: ${input.purposeTag}
        - key: Server-Team
          value: ${input.authGroupTag}
  Cloud_Volume_1:
    type: Cloud.Volume
    metadata:
      layoutPosition:
        - 0
        - 2
    properties:
      count: '${input.disk1Size == 0 ? 0 : 1 }'
      capacityGb: ${input.disk1Size}
  Cloud_Volume_2:
    type: Cloud.Volume
    metadata:
      layoutPosition:
        - 0
        - 3
    properties:
      count: '${input.disk2Size == 0 ? 0 : 1}'
      capacityGb: ${input.disk2Size}
  Cloud_vSphere_Network_1:
    type: Cloud.vSphere.Network
    metadata:
      layoutPosition:
        - 1
        - 0
    properties:
      networkType: existing
      constraints:
        - tag: ${input.vlan}