hamburger_software.vmware_ubuntu_cloud_image

vmware_ubuntu_cloud_image

Ansible-Rolle zum Erstellen von virtuellen Maschinen basierend auf Ubuntu Cloud Images in einer vSphere-Umgebung.

Ubuntu Cloud Images

Ubuntu bietet vorinstallierte Images zur Nutzung in Clouds an. Eines der verfügbaren Image-Formate ist das Open Virtualization Appliance (OVA), das in VMware importiert werden kann. Die Images nutzen den cloud-init-Mechanismus für grundlegende Konfigurationen. Leider gibt es keinen Support für statische IP-Adressen und das Anpassen der Hardware während der Erstellung der Maschine.

Diese Rolle fügt Unterstützung für diese Funktionen hinzu.

Funktionen

  • Erstellt eine virtuelle Maschine (VM) aus einer zuvor heruntergeladenen OVA-Datei.
  • Setzt den Hostnamen.
  • Fügt ein oder mehrere öffentliche SSH-Keys und/oder ein Passwort für den Standardbenutzer "ubuntu" hinzu, damit Ansible sich mit der neuen Maschine verbinden kann.
  • Passt optional die Hardware an, z.B. Anzahl der CPUs oder Arbeitsspeicher, siehe vmware_guest für mögliche Anpassungen.
  • Setzt optional VM-Notizen (Annotationen), VM-Konfigurationsdatei-Parameter und/oder VM-benutzerdefinierte Attribute.
  • Die Größe der Festplatte kann erhöht werden (Standard ist 10 GB), zusätzliche Festplatten können erstellt und hinzugefügt werden.
  • Ändert optional die dynamische IP-Adresse in eine statische (entweder aus dem Playbook oder aus DNS).
  • Die VM wird eingeschaltet und kann im selben Playbook verwendet werden, das diese Rolle aufgerufen hat.
  • Mehrere VMs können parallel erstellt werden.
  • Getestet mit Ubuntu Cloud Images 21.04, 20.10, 20.04, 19.10, 19.04, 18.10, 18.04 und 17.10. Ältere Versionen funktionieren nicht, da sie netplan für die Netzwerk-Konfiguration nicht verwenden.

Voraussetzungen

Um diese Rolle zu verwenden, benötigst du

  • eine vSphere-Umgebung, in der die VM bereitgestellt wird.
  • Anmeldeinformationen für den vCenter-Server dieser Umgebung mit entsprechenden Berechtigungen, siehe unten.
  • eine OVA-Datei, z.B. ubuntu-18.04-server-cloudimg-amd64.ova auf der Steuerungsmaschine.

Wenn du die IP-Adressen der VMs aus dem DNS abrufen möchtest, musst du außerdem

  • dnspython (Python-Bibliothek, http://www.dnspython.org/) auf der Steuerungsmaschine installieren.
  • vollqualifizierte Domainnamen (FQDN, z.B. host.example.org) im Inventar verwenden. Der FQDN wird auch als VM-Name verwendet.
  • A-Einträge für jede VM hinzufügen, die du erstellen möchtest.

Die minimale Ansible-Version ist 2.10.7. Die minimale Version der community.vmware-Sammlung ist 1.8.0, die Teil des Ansible-Community-Pakets 3.2.0 ist.

vSphere Berechtigungen

Die minimalen Berechtigungen zum Erstellen einer VM mit dieser Rolle sind:

DataStore > Speicherplatz zuweisen
Netzwerk > Netzwerk zuweisen
Ressource > Virtuelle Maschine zu Ressourcengruppe zuweisen
vApp > Importieren
Virtuelle Maschine > Interaktion > Einschalten
Virtuelle Maschine > Konfiguration > Neue virtuelle Festplatte hinzufügen

Um CPU- und Arbeitsspeichereinstellungen anzupassen, benötigst du

Virtuelle Maschine > Konfiguration > CPU-Zahl ändern
Virtuelle Maschine > Konfiguration > Arbeitsspeicher

Um die Festplattengröße anzupassen, benötigst du

Virtuelle Maschine > Konfiguration > Virtuelle Festplatte erweitern

Erweiterte Konfigurationsoptionen könnten zusätzliche Berechtigungen erfordern.

Rollenvariablen

vCenter-Verbindung

  • Die URL des vCenter-Servers wird mit vcenter_hostname oder der Umgebungsvariable VMWARE_HOST festgelegt.
  • Der vCenter-Benutzer wird mit vcenter_username oder der Umgebungsvariable VMWARE_USER festgelegt.
  • Das vCenter-Passwort wird mit vcenter_password oder der Umgebungsvariable VMWARE_PASSWORD festgelegt.
  • Die Zertifikatsüberprüfung kann deaktiviert werden, indem vcenter_validate_certs=no oder die Umgebungsvariable VMWARE_VALIDATE_CERTS auf no gesetzt wird.

VMware-Einstellungen

  • Die OVA-Datei auf der Steuerungsmaschine wird mit ova_file angegeben.
  • Die VM wird im Rechenzentrum vmware_datacenter auf dem Datenspeicher vmware_datastore erstellt.
  • Die VM kann in einen Ordner gelegt werden, indem vmware_folder angegeben wird, und in einen Ressourcenpool, indem vmware_resource_pool angegeben wird.
  • Der VM-Name ist standardmäßig inventory_hostname. Er kann mit vm_guestname geändert werden.

VM-Einstellungen

  • Der Hostname der Maschine ist standardmäßig inventory_hostname_short. Er kann mit vm_hostname geändert werden.
  • Verwende ssh_keys, um eine Liste öffentlicher Schlüssel festzulegen, die zur Datei authorized_keys des Benutzers "ubuntu" hinzugefügt werden. Mindestens einer von ssh_keys und password muss angegeben werden, damit Ansible sich mit der neuen Maschine verbinden kann.
  • Verwende password, um ein Passwort für den Benutzer "ubuntu" festzulegen. Mindestens einer von ssh_keys und password muss angegeben werden, damit Ansible sich mit der neuen Maschine verbinden kann.
  • Die Hardware kann mit hardware angegeben werden, das ein Wörterbuch enthält, wie in vmware_guest beschrieben.
  • Die Festplattengröße kann mit disk angepasst werden. Dieser Parameter akzeptiert eine Liste von Festplattenspezifikationen, wie in vmware_guest_disk dokumentiert. Die erste Festplatte entspricht der importierten virtuellen Festplatte. Ihre Größe kann nur erhöht werden. Siehe das Beispiel-Playbook unten für die Verwendung.
  • Benutzerdefinierte Netzwerkzuordnungen können mit networks angegeben werden, siehe vmware_deploy_ovf für Semantik.
  • VM-Notizen können mit annotation festgelegt werden.
    Um diese Funktion zu nutzen, wird die vCenter-Berechtigung Virtuelle Maschine > Konfiguration > Annotation festlegen benötigt.
  • Um Parameter in der VM-Konfigurationsdatei festzulegen, gib advanced_settings mit einer Liste von Wörterbüchern an, wie im Beispiel-Playbook gezeigt.
  • Um benutzerdefinierte Werte für die VM festzulegen, gib customvalues mit einer Liste von Wörterbüchern wie im Beispiel-Playbook gezeigt an. Beachte, dass neue benutzerdefinierte Werte nicht erstellt werden; sie sollten im vCenter vorhanden sein, bevor du bereitstellst.

Um eine statische IP-Adresse zu verwenden, verwende die folgenden Schlüssel im Wörterbuch static_ip:

  • ipv4 - eine spezifische IPv4-Adresse, die du zuweisen möchtest. Standardmäßig wird die im DNS für den FQDN gefundene IPv4-Adresse verwendet.
  • netmask - die Netzmaske in CIDR-Notation, Standard ist 8.
  • gateway - das Standardgateway (erforderlich)
  • dns_servers - eine Liste der IP-Adressen der DNS-Server, Standard sind die öffentlichen DNS-Server von Google.
  • dns_search - eine Liste von Domainnamen, die als DNS-Suchsuffixe verwendet werden sollen. Verwende dies, um deine VM in eine Domain zu setzen.

Inventareinstellungen

Da die VMs noch nicht existieren, ist der Schlüssel des SSH-Servers unbekannt. Um sich mit den neuen VMs zu verbinden, musst du die Überprüfung des SSH-Hostschlüssels deaktivieren. Wenn du planst, VMs häufig mit denselben FQDNs neu zu erstellen, sollte SSH die Fingerabdrücke nicht in der known_hosts-Datei speichern.

Daher sind die empfohlenen Host-/Gruppenvariablen:

ansible_user=ubuntu
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Abhängigkeiten

Diese Rolle hängt nicht von anderen Rollen ab.

Beispiel-Playbook

Playbook:

- name: Ubuntu Cloud Image Virtual Appliance bereitstellen
  hosts: cloudimg
  gather_facts: no

  roles:
    - role: hamburger_software.vmware_ubuntu_cloud_image
      vars:
        vcenter_hostname: vcenter.your.domain
        vcenter_username: [email protected]
        vcenter_password: sehrgeheim
        vcenter_validate_certs: no
        vmware_datacenter: dein-rechenzentrum
        vmware_datastore: dein-datastore
        vmware_folder: dein-rechenzentrum/vm/ein-ordner
        ova_file: ubuntu-20.04-server-cloudimg-amd64.ova
        hardware:
          num_cpus: 4
          memory_mb: 2048
        annotation: 'Beispiel-VM basierend auf Ubuntu Cloud Image'
        # dies vermeidet übermäßige syslog-Nachrichten von multipathd unter Ubuntu 20.04
        advanced_settings:
          - key: disk.EnableUUID
            value: 'TRUE'
        customvalues:
          - key: 'dein Schlüssel'
            value: 'dein Wert'
        disk:
          - size_gb: 20
            datastore: dein-datastore
            scsi_controller: 0
            unit_number: 0
          - size_mb: 250
            datastore: dein-datastore
            scsi_controller: 0
            unit_number: 1
            type: thin
        static_ip:
          netmask: 16
          gateway: 10.0.42.1
          dns_servers: [10.0.47.11, 10.0.48.12]
          dns_search:
          - dein.domain
        ssh_keys:
          - ssh-rsa AAAAB3Nz[...]== dein-schlüssel-name
        password: passw0rd

Inventar mit 5 Hosts:

[cloudimg]
vm-[1:5].deine.domain

[cloudimg:vars]
ansible_user=ubuntu
ansible_password=passw0rd
ansible_ssh_extra_args=-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null

Lizenz

MIT

Autoreninformationen

Diese Rolle wurde von Harald Albers bei HS - Hamburger Software GmbH & Co. KG erstellt.

Über das Projekt

Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.

Installieren
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image
Lizenz
mit
Downloads
732
Besitzer
Product documentation and open source projects created at HS - Hamburger Software GmbH & Co. KG