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.
- Meld u aan bij Ansible Automation Platform en navigeer naar de sectie Sjablonen.
- 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.
- 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
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.
- 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.
- 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.
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
- Gebruik
ansible_host
(bijv., FQDN) enhostName
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.
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}