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 UmgebungsvariableVMWARE_HOST
festgelegt. - Der vCenter-Benutzer wird mit
vcenter_username
oder der UmgebungsvariableVMWARE_USER
festgelegt. - Das vCenter-Passwort wird mit
vcenter_password
oder der UmgebungsvariableVMWARE_PASSWORD
festgelegt. - Die Zertifikatsüberprüfung kann deaktiviert werden, indem
vcenter_validate_certs=no
oder die UmgebungsvariableVMWARE_VALIDATE_CERTS
aufno
gesetzt wird.
VMware-Einstellungen
- Die OVA-Datei auf der Steuerungsmaschine wird mit
ova_file
angegeben. - Die VM wird im Rechenzentrum
vmware_datacenter
auf dem Datenspeichervmware_datastore
erstellt. - Die VM kann in einen Ordner gelegt werden, indem
vmware_folder
angegeben wird, und in einen Ressourcenpool, indemvmware_resource_pool
angegeben wird. - Der VM-Name ist standardmäßig
inventory_hostname
. Er kann mitvm_guestname
geändert werden.
VM-Einstellungen
- Der Hostname der Maschine ist standardmäßig
inventory_hostname_short
. Er kann mitvm_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 vonssh_keys
undpassword
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 vonssh_keys
undpassword
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-BerechtigungVirtuelle 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 ist8
.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.
Creates virtual machines based on Ubuntu Cloud Images in a vSphere environment.
ansible-galaxy install hamburger_software.vmware_ubuntu_cloud_image