Automatisierung mit Terraform
Dieses Handbuch ermöglicht es Ihnen, Ihre ersten Instanzen in der Vertrauenswürdigen Cloud in weniger als 5 Minuten bereitzustellen.
Voraussetzungen
- Das Cloud Temple-Produkt abonniert haben (Abonnement des IaaS-Produkts).
- Die Berechtigungen für den Objekt-Treiber 'IaaS' aktiviert haben.
Bereitstellen einer virtuellen Maschine über Terraform
In diesem Abschnitt erfahren Sie, wie Sie in wenigen Minuten eine virtuelle Maschine im Cloud de Confiance über den Terraform-Provider Cloud Temple bereitstellen. Falls Sie den Cloud Temple-Provider noch nicht verwendet haben, befolgen Sie die Anweisungen unter folgender Adresse, um ihn zu installieren und sich bei Ihrem Tenant anzumelden.
Wir beginnen mit der Erstellung einer .tf-Datei, die die Instanz beschreibt, die bereitgestellt werden soll. Das folgende Skript ermöglicht das Bereitstellen einer virtuellen Maschine von Grund auf.
data "cloudtemple_compute_virtual_datacenter" "dc" {
name = "DC-EQX6"
}
data "cloudtemple_compute_host_cluster" "flo" {
name = "clu002-ucs01_FLO"
}
data "cloudtemple_compute_datastore_cluster" "koukou" {
name = "sdrs001-LIVE_KOUKOU"
}
resource "cloudtemple_compute_virtual_machine" "scratch" {
name = "from-scratch"
memory = 8 * 1024 * 1024 * 1024
cpu = 2
num_cores_per_socket = 1
cpu_hot_add_enabled = true
cpu_hot_remove_enabled = true
memory_hot_add_enabled = true
datacenter_id = data.cloudtemple_compute_virtual_datacenter.dc.id
host_cluster_id = data.cloudtemple_compute_host_cluster.flo.id
datastore_cluster_id = data.cloudtemple_compute_datastore_cluster.koukou.id
guest_operating_system_moref = "amazonlinux2_64Guest"
tags = {
created_by = "Terraform"
}
}
Die in diesem Skript verwendeten Parameter sind folgende:
- datacenter_id (erforderlich) : Rechenzentrum, in dem die virtuelle Maschine bereitgestellt wird
- host_cluster_id (erforderlich) : Cluster, in dem die virtuelle Maschine bereitgestellt wird
- name (erforderlich) : Name der Maschine
- memory : Zu Beginn der Maschine zugewiesener RAM
- cpu : Zu Beginn der Maschine zugewiesene Anzahl an vCPUs
- num_cores_per_socket : Anzahl der Kerne pro Socket
- datastore_cluster_id : Datastore, an den die Maschine angehängt ist
- guest_operating_system_moref : Betriebssystem der Maschine
Weitere Parameter können beim Bereitstellen einer virtuellen Maschine angewendet werden. Eine vollständige Übersicht dieser Parameter finden Sie auf der folgenden Seite der Terraform-Dokumentation
Nachdem Sie die .tf-Datei erstellt und gespeichert haben, führen Sie den folgenden Befehl aus, um Ihren Code zu überprüfen:
terraform validate
Planen Sie anschließend die Bereitstellung und überprüfen Sie, ob der Plan Ihren Vorstellungen entspricht:
terraform plan
Führen Sie abschließend den folgenden Befehl aus, um die virtuelle Maschine bereitzustellen:
terraform apply
cloud-init zur Konfiguration einer über den Terraform-Provider bereitgestellten virtuellen Maschine verwenden
Das Tool 'cloud-init' ermöglicht die Anpassung einer virtuellen Maschine oder einer Cloud-Instanz beim ersten Start. Es handelt sich um einen weit verbreiteten Standard. Weitere Informationen finden Sie in der Dokumentation
Kompatibilität
Um eine über den Terraform Cloud Temple-Provider bereitgestellte virtuelle Maschine über cloud-init konfigurieren zu können, muss das OVF, das für deren Bereitstellung verwendet wird, mit cloud-init kompatibel sein.
Um die Kompatibilität Ihrer virtuellen Maschine mit cloud-init zu überprüfen, geben Sie den folgenden Befehl ein:
systemctl status cloud-init.service
Wenn cloud-init korrekt auf der Maschine installiert ist, sollten Sie eine Ausgabe wie diese erhalten. (Siehe Screenshot unten)
Falls erforderlich, können Sie cloud-init-kompatible Images im Internet finden (z. B. Ubuntu Cloud Image) oder sie selbst auf Ihrer Maschine installieren, bevor Sie sie in ein OVF konvertieren.
Bereitstellung
Sobald Sie sichergestellt haben, dass das bereitgestellte OVF vollständig mit cloud-init kompatibel ist, finden Sie hier ein Beispiel für eine Terraform-Datei (.tf), die Sie zur Konfiguration Ihrer virtuellen Maschine verwenden können. Hinweis: Alle hier gezeigten Beispiele finden Sie im Ordner „examples“ des Repositorys des Terraform Cloud Temple Providers hier: Beispiele
main.tf
resource "cloudtemple_compute_virtual_machine" "ubuntu-cloud-init" {
name = "ubuntu-cloud-init"
memory = 8 * 1024 * 1024 * 1024
cpu = 2
num_cores_per_socket = 1
cpu_hot_add_enabled = true
cpu_hot_remove_enabled = true
memory_hot_add_enabled = true
datacenter_id = data.cloudtemple_compute_virtual_datacenter.TH3S.id
host_cluster_id = data.cloudtemple_compute_host_cluster.CLU001.id
datastore_id = data.cloudtemple_compute_datastore.DS003.id
content_library_id = data.cloudtemple_compute_content_library.local.id
content_library_item_id = data.cloudtemple_compute_content_library_item.ubuntu-cloudimg.id
power_state = "on"
backup_sla_policies = [
data.cloudtemple_backup_sla_policy.sla001-daily-par7s.id,
data.cloudtemple_backup_sla_policy.sla001-weekly-par7s.id,
]
cloud_init = {
network-config = filebase64("./cloud-init/network-config.yml")
user-data = filebase64("./cloud-init/user-data.yml")
}
}
network-config.yml
#cloud-config
network:
version: 2
ethernets:
eth0:
dhcp4: false
addresses:
- 172.16.100.192/24
gateway4: 172.16.100.1
nameservers:
addresses:
- 172.16.11.4
user-data.yml
#cloud-config
users:
- default
- name: terraform
primary_group: users
shell: /bin/bash
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: sudo
lock_passwd: false
plain_text_passwd: password
Das Interessante hier ist das Vorhandensein der cloud-init-Eigenschaft. Wie Sie erkennen können, besteht sie aus zwei Unter-Eigenschaften: network-config und user-data.
Diese gehören zu einer Reihe von 7 Eigenschaften, die Sie verwenden können, um Ihre virtuelle Maschine mit cloud-init zu konfigurieren.
- user-data : Dieser Wert muss base64-codiert sein und enthält unter anderem Konfigurationsinformationen für die Benutzerkonten der virtuellen Maschine. Sie können zudem Skripte hinzufügen, um Pakete zu installieren oder zu aktualisieren.
- network-config : Dieser Wert muss base64-codiert sein und enthält unter anderem Netzwerkkonfigurationsinformationen der virtuellen Maschine.
- public-keys : Gibt an, dass die Instanz die 'authorized_keys' des Standardbenutzers mit diesem Wert befüllen soll.
- instance-id : Legt eine eindeutige Instanzkennung für cloud-init fest.
- password : Falls festgelegt, wird das Passwort des Standardbenutzers auf diesen Wert gesetzt, um eine passwortbasierte Anmeldung zu ermöglichen. Das Passwort ist nur für eine einzige Anmeldung gültig. Ist der Wert 'RANDOM', wird ein zufälliges Passwort generiert und auf der Konsole angezeigt.
- hostname : Legt einen Hostnamen für die bereitgestellte Instanz fest.
- seedfrom : Legt eine URL fest, von der cloud-init die zu verwendenden Konfigurationsdateien bezieht. Für weitere Informationen zur Funktionsweise von cloud-init verweisen wir auf die offizielle Dokumentation
Ausführung
Um die erfolgreiche Ausführung von cloud-init zu überprüfen, sollten Sie sich mit dem in der Datei user-data.yml konfigurierten Benutzer anmelden können oder der Hostname sollte auf den in ‘hostname’ festgelegten Wert geändert worden sein.
Bei Problemen können Sie die cloud-init-Logs mit dem folgenden Befehl überprüfen:
sudo cat /var/log/cloud-init-output.log
Sie sollten verschiedene Informationen zur Ausführung von cloud-init sehen. Auf dem folgenden Screenshot ist zu erkennen, dass die Netzwerkkonfiguration erfolgreich durchgeführt wurde.
