Eine VM über den Terraform Provider erstellen
Zuletzt aktualisiert am
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Um eine virtuelle Maschine auf der STACKIT-Plattform mit Terraform erstellen zu können, muss der STACKIT Terraform Provider installiert sein.
Folgen Sie der Installationsanleitung für den Provider auf The official Terraform provider for STACKIT. Sie benötigen außerdem Ihre Projekt-ID sowie die ID des Images, das Sie verwenden möchten.
Ein Volume erstellen
Abschnitt betitelt „Ein Volume erstellen“Erstellen Sie in Ihrer main.tf-Datei eine Volume-Ressource.
resource "stackit_volume" "<VOLUME_NAME>" { project_id = "<PROJECT_ID>" name = "<VOLUME_NAME>" availability_zone = "eu01-1" description = "<DESCRIPTION>" size = <VOLUME_SIZE> performance_class = "<PERFORMANCE_CLASS_NAME>" source = { id = "<IMAGE_ID>" type = "image" } labels = { "my" = "label" }}Eine Security-Group erstellen
Abschnitt betitelt „Eine Security-Group erstellen“Erstellen Sie eine Security-Group-Ressource und fügen Sie die Regeln hinzu, um SSH und ICMP zu erlauben.
resource "stackit_security_group" "sg1" { project_id = "<PROJECT_ID>" name = "sg1"}
resource "stackit_security_group_rule" "SSH" { project_id = "<PROJECT_ID>" security_group_id = stackit_security_group.sg1.security_group_id direction = "ingress" protocol = { name = "tcp" } port_range = { min = 22 max = 22 }}
resource "stackit_security_group_rule" "ICMP" { project_id = "<PROJECT_ID>" security_group_id = stackit_security_group.sg1.security_group_id direction = "ingress" protocol = { name = "icmp" }}Ein Netzwerk erstellen
Abschnitt betitelt „Ein Netzwerk erstellen“Erstellen Sie ein Netzwerk, eine Interface-Ressource und eine öffentliche IP für Ihren Server.
resource "stackit_network" "net1" { project_id = "<PROJECT_ID>" name = "net1" nameservers = ["1.1.1.1"] ipv4_prefix_length = 24 labels = { "key" = "value" }}resource "stackit_network_interface" "nic1" { project_id = "<PROJECT_ID>" network_id = stackit_network.net1.network_id allowed_addresses = [<ARRAY_OF_ALLOWED_IP_ADDRESSES] security_group_ids = [stackit_security_group.sg1.security_group_id]}resource "stackit_public_ip" "pub1" { project_id = "<PROJECT_ID>" network_interface_id = stackit_network_interface.nic1.network_interface_id}Ein Schlüsselpaar erstellen
Abschnitt betitelt „Ein Schlüsselpaar erstellen“Erstellen Sie ein Schlüsselpaar, das zur Authentifizierung Ihres SSH-Zugriffs verwendet wird.
resource "stackit_key_pair" "mykey" { name = "mykey" public_key = chomp(file("~/.ssh/id_rsa.pub")) labels = { "foo" = "bar" }}Den Server erstellen
Abschnitt betitelt „Den Server erstellen“Erstellen Sie eine Server-Ressource und hängen Sie Ihr Netzwerk-Interface an den Server an.
resource "stackit_server" "<SERVER_NAME>" { project_id = "<PROJECT_ID" name = "<SERVER_NAME>"
boot_volume = { source_type = "volume" source_id = stackit_volume.<VOLUME_NAME>.volume_id } availability_zone = "eu01-1" labels = { "key" = "value" } machine_type = "<FLAVOR_ID>" keypair_name = "<KEY_NAME>"}resource "stackit_server_network_interface_attach" "<ATTACH_NAME>" { project_id = "<PROJECT_ID>" server_id = stackit_server.<SERVER_NAME>.server_id network_interface_id = stackit_network_interface.nic1.network_interface_id}Ihre Einstellungen anwenden
Abschnitt betitelt „Ihre Einstellungen anwenden“Um diese Einstellungen auf Ihr Projekt anzuwenden, müssen Sie die Dateien in Ihrem Terraform-Verzeichnis planen.
terraform planJetzt können Sie die Änderungen anwenden.
terraform applyDie Erstellung Ihres Servers sollte jetzt beginnen.
Nachdem der Server erstellt wurde, versuchen Sie, sich mit dem Server zu verbinden.
ssh <USERNAME>@<PUBLIC_IP>