Sie können Ansible Automation Platform (früher Ansible Tower) mit Automation Assembler integrieren, um die Konfigurationsverwaltung der bereitgestellten Ressourcen zu unterstützen. Nachdem Sie die Integration konfiguriert haben, können Sie mithilfe des Cloud-Vorlagen-Editors virtuelle Ansible Automation Platform-Komponenten zu neuen oder vorhandenen Bereitstellungen hinzufügen.

Voraussetzungen

  • Gewähren Sie Nicht-Administratorbenutzern die entsprechenden Berechtigungen für den Zugriff auf Ansible Automation Platform. Es gibt zwei Optionen, die für die meisten Konfigurationen funktionieren. Wählen Sie die Option, die für Ihre Konfiguration am besten geeignet ist.
    • Weisen Sie Benutzern die Rollen „Bestandslistenadministrator“ und „Auftragsvorlagenadministrator“ auf Organisationsebene zu.
    • Gewähren Sie Benutzern Administratorberechtigungen für eine bestimmte Bestandsliste und die Rolle „Ausführen“ für alle für die Bereitstellung verwendeten Auftragsvorlagen.
  • Sie müssen die entsprechenden Anmeldedaten und Vorlagen in Ansible Automation Platform für die Verwendung mit Ihren Bereitstellungen konfigurieren. Bei Vorlagen kann es sich um Auftragsvorlagen oder Workflowvorlagen handeln. Auftragsvorlagen definieren die Bestandsliste und das Playbook für die Verwendung mit einer Bereitstellung. Zwischen einer Auftragsvorlage und einem Playbook besteht eine 1:1-Zuordnung. Playbooks verwenden eine YAML-ähnliche Syntax, um mit der Vorlage verknüpfte Aufgaben zu definieren. Verwenden Sie für die meisten typischen Bereitstellungen Maschinenanmeldedaten zur Authentifizierung.

    Workflowvorlagen ermöglichen es den Benutzern, Sequenzen zu erstellen, die aus einer beliebigen Kombination von Auftragsvorlagen, Synchronisierungen von Projekten und Bestandslisten bestehen, die miteinander verknüpft sind, sodass Sie sie als Einheit ausführen können. Der Ansible Automation Platform-Workflow unterstützt Benutzer beim Entwerfen von Workflowvorlagen. Sie können für die meisten typischen Bereitstellungen Maschinenanmeldedaten zur Authentifizierung verwenden.

    Bei Nutzung der Ansible Automation Platform müssen Sie eine Ausführungsumgebung auf dem Ansible Controller definieren, um die Ansible Runner-Abhängigkeiten zu erfüllen. Weitere Informationen zu Ausführungsumgebungen und Container-Images finden Sie in der Ansible-Dokumentation. Weitere Informationen finden Sie insbesondere unter https://docs.ansible.com/automation-controller/4.2.0/html/userguide/execution_environments.html.

    1. Melden Sie sich bei Ansible Automation Platform an und navigieren Sie zum Abschnitt „Vorlagen“.
    2. Wählen Sie „Neue Auftragsvorlage hinzufügen“ aus.
      • Wählen Sie die bereits erstellten Anmeldedaten aus. Hierbei handelt es sich um die Anmeldedaten der Maschine, die von Ansible Automation Platform verwaltet werden soll. Für jede Auftragsvorlage kann ein Anmeldedatenobjekt vorhanden sein.
      • Wählen Sie für „Grenzwert“ die Option „Eingabeaufforderung beim Start“ aus. Hiermit wird sichergestellt, dass die Auftragsvorlage für den Knoten ausgeführt wird, der von Automation Assembler bereitgestellt oder dessen Bereitstellung aufgehoben wird. Bei nicht ausgewählter Option wird ein Fehler vom Typ „Kein Grenzwert festgelegt“ angezeigt, wenn der Blueprint mit der Auftragsvorlage bereitgestellt wird.
    3. Wählen Sie „Neue Workflowvorlage hinzufügen“ aus.
      • Wählen Sie die Anmeldedaten aus, die Sie bereits erstellt haben, und definieren Sie dann die Bestandsliste. Entwerfen Sie mit dem Workflow Visualizer die Workflowvorlage.

      Für das Feld „Grenzwert“ der Workflow- oder Auftragsvorlagen können Sie generell „Eingabeaufforderung beim Start“ auswählen. Diese Auswahl stellt sicher, dass die Auftrags- oder Workflowvorlage für den Knoten ausgeführt wird, der von Automation Assembler bereitgestellt oder dessen Bereitstellung aufgehoben wird.

  • Sie können die Ausführung der von Automation Assembler aufgerufenen Auftragsvorlagen oder Workflowvorlagen auf der Registerkarte „Ansible Tower-Aufträge“ anzeigen.

Prozedur

  1. Wählen Sie Infrastruktur > Verbindungen > Integrationen aus und klicken Sie auf Integration hinzufügen.
  2. Klicken Sie auf „Ansible Tower“.
    Die Seite zum Konfigurieren von Ansible wird angezeigt.
  3. Geben Sie unter Hostname einen Hostnamen, beispielsweise eine IP-Adresse, sowie andere erforderliche Informationen für die Ansible Automation Platform-Instanz ein.
  4. Geben Sie den Benutzernamen und das Kennwort der benutzeroberflächenbasierten Authentifizierung für die entsprechende Ansible Automation Platform-Instanz ein.
  5. Klicken Sie auf Überprüfen, um die Integration zu überprüfen.
  6. Geben Sie einen geeigneten Namen und eine Beschreibung für die Integration ein.
  7. Klicken Sie auf Hinzufügen.

Ergebnisse

Ansible Tower ist für die Verwendung mit Cloud-Vorlagen verfügbar.

Nächste Maßnahme

Fügen Sie Ansible Automation Platform-Komponenten zu den gewünschten Cloud-Vorlagen hinzu. Sie müssen die entsprechende Auftragsvorlage mit der Ausführungsberechtigung für den im Integrationskonto angegebenen Benutzer angeben.

  1. Wählen Sie auf der Seite mit der Cloud-Vorlagen-Arbeitsfläche im Menü der Blueprint-Optionen unter der Überschrift „Konfigurationsverwaltung“ den Eintrag „Ansible“ aus und ziehen Sie die Ansible Automation Platform-Komponente auf die Arbeitsfläche.
  2. Konfigurieren Sie im Bereich auf der rechten Seite die entsprechenden Ansible Automation Platform-Eigenschaften, wie z. B. Auftragsvorlagen.

Wenn Sie eine Kachel vom Typ „Ansible Automation Platform“ zu einer Cloud-Vorlage hinzufügen, erstellt VMware Aria Automation den Hosteintrag für die angehängte virtuelle Maschine in Ansible Automation Platform. Standardmäßig verwendet VMware Aria Automation den Ressourcennamen der virtuellen Maschine zum Erstellen des Hosteintrags. Sie können jedoch jeden Namen mithilfe der Eigenschaft hostName in der Blueprint-YAML angeben. Zur Kommunikation mit der Maschine erstellt VMware Aria Automation die Hostvariable ansible_host: IP Address für den Hosteintrag. Sie können das Standardverhalten zum Konfigurieren der Kommunikation mithilfe des FQDN außer Kraft setzen, indem Sie das Schlüsselwort ansible_host unter hostVariables angeben und den FQDN als entsprechenden Wert bereitstellen. Bei folgendem YAML-Codeausschnitt handelt es sich um ein Beispiel dafür, wie die Kommunikation zwischen Hostname und FQDN konfiguriert werden kann:

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 diesem Beispiel überschreiben Sie den Standardwert ansible_host, indem Sie den FQDN bereitstellen. Dies kann für Benutzer nützlich sein, die möchten, dass Ansible Tower mithilfe des FQDN eine Verbindung zur Hostmaschine herstellt.

Der Standardwert von hostVariables in der YAML lautet ansible_host:IP_address, und die IP-Adresse wird für die Kommunikation mit dem Server verwendet.

Wenn die YAML-Eigenschaft „count“ für Ansible Automation Platform größer als 1 ist, kann der Hostname einer der Eigenschaften der jeweiligen virtuellen Maschine zugeordnet werden. Das folgende Beispiel zeigt die Zuordnung für eine VM-Ressource mit der Bezeichnung „Ubuntu-VM“, wenn deren Adresseigenschaft dem Hostnamen zugeordnet werden soll.

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

Wenn Sie einer Cloud-Vorlage eine Ansible Automation Platform-Komponente hinzufügen, können Sie die Auftragsvorlage angeben, die in der Cloud-Vorlagen-YAML aufgerufen werden soll. Sie können auch Workflowvorlagen oder eine Kombination aus Auftragsvorlagen und Workflowvorlagen angeben. Wenn Sie den Vorlagentyp nicht angeben, geht VMware Aria Automation standardmäßig davon aus, dass Sie eine Auftragsvorlage aufrufen.

Bei folgendem YAML-Codeausschnitt handelt es sich um ein Beispiel dafür, wie eine Kombination aus Auftrags- und Workflowvorlagen in einer Ansible-Tower-Cloud-Vorlage aufgerufen werden kann.

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      

Wir haben maxConnectionsRetries und maxJobRetries hinzugefügt, um mit Ansible-bezogenen Fehlern umzugehen. Die Cloud-Vorlagen akzeptieren den benutzerdefinierten Wert und verwenden den Standardwert, falls kein Wert angegeben wird. Für maxConnectionRetries lautet der Standardwert 10 und für maxJobRetries 3.

Hinweis: Frühere Versionen von VMware Aria Automation haben die Ausführung von Auftragsvorlagen nur unter Verwendung des jobTemplate-Schemas in der Cloud-Vorlage unterstützt. jobTemplate ist jetzt veraltet und wird in zukünftigen Versionen möglicherweise entfernt. Vorerst funktioniert die Verwendung der jobTemplate-Eigenschaft weiterhin wie erwartet. Um Workflowvorlagen auszuführen und zusätzliche Funktionen zu verwenden, wird empfohlen, dafür das Schema für Vorlagen zu nutzen.

Automation Assembler-Vorlagen für Ansible Automation Platform-Integrationen enthalten die Eigenschaft useDefaultLimit mit einem „true“- oder „false“-Wert, um den Ausführungsort für Ansible-Vorlagen zu definieren. Bei Ansible-Vorlagen kann es sich um Auftragsvorlagen oder Workflowvorlagen handeln. Wenn dieser Wert auf „true“ festgelegt ist, werden die angegebenen Vorlagen für die im Feld „Grenzwert“ auf der Seite „Ansible-Vorlagen“ angegebenen Maschine ausgeführt. Wenn der Wert auf „false“ festgelegt ist, werden die Vorlagen für die bereitgestellte Maschine ausgeführt. Die Benutzer sollten aber das Kontrollkästchen „Eingabeaufforderung beim Start“ auf der Seite „Ansible Automation Platform-Vorlagen“ aktivieren. Der Wert dieser Eigenschaft ist standardmäßig „false“. Das folgende YAML-Beispiel zeigt, wie die Eigenschaft useDefaultLimit in Cloud-Vorlagen angezeigt wird.

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

Zudem können Sie, wie das vorangegangene Beispiel zeigt, anhand der Eigenschaft extraVars zusätzliche Variablen oder Survey-Variablen angeben. Diese Funktion kann für die Ausführung von Vorlagen nützlich sein, die eine Eingabe erfordern. Wenn ein Benutzer die Survey-Variable beibehalten hat, müssen Sie die Variable im Abschnitt extraVars der Cloud-Vorlage übergeben, um Fehler zu vermeiden.

Benutzer mit Cloud-Administratorrechten können das Projekt einer Bereitstellung ändern, die Ansible Open Source- und Ansible Automation Platform-Ressourcen enthält. Die Funktion steht als Tag-2-Aktion auf Bereitstellungsebene zur Verfügung.

Wählen Sie zum Ändern des Projekts für eine Ansible-Bereitstellung im Menü „Aktionen“ der Bereitstellung die Option „Projekt ändern“ (siehe Seite „Automation Assembler-Bereitstellungen“) und anschließend das Zielprojekt aus. Klicken Sie dann im angezeigten Dialogfeld auf Senden.

Obwohl die Ansible Tower-Integration die Eigenschaft „Gruppen“ nicht unterstützt, gibt es für Kunden eine Alternative zur Implementierung äquivalenter Funktionen durch Verwendung der VM-Tags und des VMware-Bestandslisten-Plug-Ins. Weitere Informationen finden Sie in folgendem Artikel: https://docs.ansible.com/ansible/latest/collections/community/vmware/vmware_vm_inventory_inventory.html

Benutzer müssen hierzu zwei Änderungen vornehmen:
  • Verwenden Sie ansible_host (z. B. FQDN) und hostName in der Cloud-Vorlage.
  • Aktivieren Sie in AWX das Flag „Beim Start aktualisieren“, wodurch vor der Ausführung des Playbooks eine Synchronisierung mit dem vCenter für neue Hosts durchgeführt wird. Bei der Synchronisierung werden FQDN-Hosteinträge, die von VMware Aria Automation hinzugefügt und vom VMware-Bestandslisten-Plug-In importiert wurden, zusammengeführt und Hosts zu Gruppen zugewiesen. Bestandslistengruppen werden anhand von VM-Tag-Werten mithilfe der obigen Synchronisierungsquellvariablen erstellt.
Hinweis: Obwohl VMware die Verwendung von AWX formal nicht unterstützt, funktioniert AWX im hier beschriebenen Fall.

Eine Beispielimplementierung finden Sie in der folgenden Cloud-Vorlage.

# 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.mycompany.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.mycompany.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}