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