News
Serverspace Technologien in den VAE: Einführung von Falconcloud
DC
26. August 2022
Aktualisiert Juni 7, 2023

So automatisieren Sie die Serverbereitstellung über Terraform?

VPS

Terraform

Terraform Versorger Serverspace ermöglicht Ihnen die Verwaltung von Cloud-Ressourcen mithilfe des Infrastructure-as-Code-Ansatzes. Die Verwaltung erfolgt über spezielle Konfigurationsdateien, in denen Sie den gewünschten Zustand Ihrer Infrastruktur beschreiben.

Montage von Terraform

Lassen Sie uns zunächst installieren Terraform in Ihrem Betriebssystem. Wir empfehlen die Verwendung von Terraform Entwicklerhandbuch.

Anbieterkonfiguration

    1. Erstellen Sie ein API Schlüssel für das Projekt, mit dem gearbeitet werden soll Terraform.
    2. Erstellen Sie das Verzeichnis, mit dem Sie arbeiten möchten, und navigieren Sie zu diesem Verzeichnis Terraform Anbieter
    3. Erstellen und öffnen Sie die Konfigurationsdatei „provider.tf“.
    4. Fügen Sie die Anbieterinformationen in die Datei ein Ihr API drücken Sie die Taste und speichern Sie die Änderungen:
    5. terraform {
      required_providers {
      serverspace = {
      source = "itglobalcom/serverspace"
      version = "0.2.2"
      }
      }
      }

      variable "s2_token" {
      type = string
      default = ""
      }

      provider "serverspace" {
      key = var.s2_token
      }

    6. Öffnen Sie eine Eingabeaufforderung und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei erstellt haben. Führen Sie eine Initialisierung durch, um die Richtigkeit zu überprüfen:
      terraform init

      Wenn die Initialisierung erfolgreich war, wird die folgende Meldung angezeigt:

      Initializing the backend...
      Initializing provider plugins...
      - Finding itglobalcom/serverspace versions matching "0.2.0"...
      - Installing itglobalcom/serverspace v0.2.0...
      - Installed itglobalcom/serverspace v0.2.0 (self-signed, key ID 062XXXXXXXXXXXX)

      Partner and community providers are signed by their developers.
      If you'd like to know more about provider signing, you can read about it here: https://www.terraform.io/docs/cli/plugins/signing.html

      Terraform has created a lock file .terraform.lock.hcl to record the provider selections it made above. Include this file in your version control repository so that Terraform can guarantee to make the same selections by default when you run "terraform init" in the future.

      Terraform has been successfully initialized!

      You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work.

      If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.

Ihre Infrastrukturbeschreibung

Mit der Serverspace Terraform Als Anbieter können Sie eine Infrastruktur mit verschiedenen Konfigurationen erstellen. Eine ausführliche Dokumentation finden Sie im Terraform Registratur.

Schauen wir uns das Beispiel der Erstellung einer einfachen Infrastruktur mit zwei Servern an, die über ein isoliertes Netzwerk verbunden sind:

  • Server in Amsterdam namens „server-1“ mit Ubuntu 20.04 Betriebssystem. Serverkonfiguration – 2 GB RAM, 2 CPUs, 40 GB SSD Bootlaufwerk, zusätzlich 20 GB SSD Laufwerk, 50 Mbit/s. SSH Verbindung zum Server herstellen. Auf dem Server installierter Redis-Datenspeicher.
  • Server in Amsterdam namens „server-2“ mit Ubuntu 20.04 Betriebssystem. Serverkonfiguration – 8 GB RAM, 4 CPUs, 40 GB SSD Boot-Laufwerk, 70 Mbit/s.
  • Isoliertes Netzwerk in Amsterdam mit der Adresse 192.168.0.0/24

Führen Sie die folgenden Schritte aus, um diese Infrastruktur einzurichten:

    1. Erstellen und öffnen Sie die Datei ssh_key.tf, das den öffentlichen Teil von enthält ssh Schlüssel zum Erstellen des Servers.
    2. Geben Sie die Informationen zum öffentlichen Teil des ein ssh Geben Sie den Schlüssel in die Datei ein ssh_key.tf und speichern Sie die Änderungen, indem Sie den Inhalt der Variable public_key durch Ihren Wert ersetzen:
      resource "serverspace_ssh" "terraform" {
      name = "terraform-key"
      public_key = "ssh-rsa AAAAB3Nza...JUDjlM= root@CentOS.local"
      }

      variable "pvt_key" {
      type = string
      default = ""
      }

    3. Erstellen und öffnen Sie die Datei main.tf, die die Infrastrukturbeschreibung enthält.
    4. Fügen Sie die Beschreibung Ihrer Infrastruktur in die Datei ein.
      resource "serverspace_server" "server1" {
      image = "Ubuntu-20.04-X64"
      name = "server-1"
      location = "am2"
      cpu = 2
      ram = 2048

      boot_volume_size = 40*1024

      volume {
      name = "bar"
      size = 20*1024
      }

      nic {
      network = ""
      network_type = "PublicShared"
      bandwidth = 50
      }
      nic {
      network = resource.serverspace_isolated_network.my_net.id
      network_type = "Isolated"
      bandwidth = 0
      }

      ssh_keys = [
      resource.serverspace_ssh.terraform.id,
      ]

      connection {
      host = self.public_ip_addresses[0]
      user = "root"
      type = "ssh"
      private_key = file(var.pvt_key)
      timeout = "2m"
      }

      provisioner "remote-exec" {
      inline = [
      "export PATH=$PATH:/usr/bin",
      "sudo apt-get update",
      "sudo apt-get install -y redis-server",
      "exit 0"
      ]
      }

      }

      resource "serverspace_server" "server2" {
      image = "Ubuntu-20.04-X64"
      name = "server-2"
      location = "am2"
      cpu = 4
      ram = 8192

      boot_volume_size = 40*1024

      nic {
      network = ""
      network_type = "PublicShared"
      bandwidth = 70
      }
      nic {
      network = resource.serverspace_isolated_network.my_net.id
      network_type = "Isolated"
      bandwidth = 0
      }
      }

      resource"serverspace_isolated_network" "my_net" {
      location = "am2"
      name = "my_net"
      description = "Example for Terraform"
      network_prefix = "192.168.0.0"
      mask = 24
      }

    5. Um die oben beschriebene Infrastruktur zu erstellen, führen Sie den folgenden Befehl aus:
      terraform apply

      Es erscheint ein Dialogfenster:

      Terraform used the selected providers to generate the following execution plan.
      Resource actions are indicated with the following symbols:
      + create

      Terraform will perform the following actions:

      # serverspace_isolated_network.my_net will be created
      + resource "serverspace_isolated_network" "my_net" {
      + description = "Example for Terraform"
      + id = (known after apply)
      + location = "am2"
      + mask = 24
      + name = "my_net"
      + network_prefix = "192.168.0.0"
      }

      # serverspace_server.server1 will be created
      + resource "serverspace_server" "server1" {
      + boot_volume_id = (known after apply)
      + boot_volume_size = 40960
      + cpu = 2
      + id = (known after apply)
      + image = "Ubuntu-20.04-X64"
      + location = "am2"
      + name = "server-1"
      + public_ip_addresses = (known after apply)
      + ram = 2048
      + ssh_keys = (known after apply)

      + nic {
      + bandwidth = 0
      + id = (known after apply)
      + ip_address = (known after apply)
      + network = (known after apply)
      + network_type = "Isolated"
      }
      + nic {
      + bandwidth = 50
      + id = (known after apply)
      + ip_address = (known after apply)
      + network_type = "PublicShared"
      }

      + volume {
      + id = (known after apply)
      + name = "bar"
      + size = 20480
      }
      }

      # serverspace_server.server2 will be created
      + resource "serverspace_server" "server2" {
      + boot_volume_id = (known after apply)
      + boot_volume_size = 40960
      + cpu = 4
      + id = (known after apply)
      + image = "Ubuntu-20.04-X64"
      + location = "am2"
      + name = "server-2"
      + public_ip_addresses = (known after apply)
      + ram = 8192
      + ssh_keys = (known after apply)

      + nic {
      + bandwidth = 0
      + id = (known after apply)
      + ip_address = (known after apply)
      + network = (known after apply)
      + network_type = "Isolated"
      }
      + nic {
      + bandwidth = 70
      + id = (known after apply)
      + ip_address = (known after apply)
      + network_type = "PublicShared"
      }
      }

      # serverspace_ssh.terraform will be created
      + resource "serverspace_ssh" "terraform" {
      + id = (known after apply)
      + name = "terraform-key"
      + public_key = "ssh-rsa AAAAB3Nza...JUDjlM= root@CentOS.local"
      }

      Plan: 4 to add, 0 to change, 0 to destroy.

      Do you want to perform these actions?
      Terraform will perform the actions described above.
      Only 'yes' will be accepted to approve.

    6. Geben Sie „Ja“ ein, um die Infrastruktur zu erstellen.
      Enter a value: yesserverspace_ssh.terraform: Creating...
      serverspace_isolated_network.my_net: Creating...
      serverspace_ssh.terraform: Creation complete after 1s [id=3181]
      serverspace_isolated_network.my_net: Creation complete after 8s [id=l2n403]
      serverspace_server.server2: Creating...
      serverspace_server.server1: Creating...
      serverspace_server.server1: Still creating... [10s elapsed]
      serverspace_server.server2: Still creating... [10s elapsed]
      ...
      serverspace_server.server1 (remote-exec): (Reading database ...
      serverspace_server.server1 (remote-exec): (Reading database ... 5%
      serverspace_server.server1 (remote-exec): (Reading database ... 10%
      ...
      serverspace_server.server1: Creation complete after 1m3s [id=l2s190038]
      Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
    7. Um die aktuelle Infrastruktur anzuzeigen, führen Sie den folgenden Befehl aus:
      terraform show

      Dadurch wird die aktuelle Infrastrukturkonfiguration angezeigt:


      # serverspace_isolated_network.my_net:
      resource "serverspace_isolated_network" "my_net" {
      description = "Example for Terraform"
      id = "l2n403"
      location = "am2"
      mask = 24
      name = "my_net"
      network_prefix = "192.168.0.0"
      }

      # serverspace_server.server1:
      resource "serverspace_server" "server1" {
      boot_volume_id = 58909
      boot_volume_size = 40960
      cpu = 2
      id = "l2s190038"
      image = "Ubuntu-20.04-X64"
      location = "am2"
      name = "server-1"
      public_ip_addresses = [
      "45.138.24.19",
      ]
      ram = 2048
      ssh_keys = [
      3181,
      ]

      nic {
      bandwidth = 0
      id = 59576
      ip_address = "192.168.0.1"
      network = "l2n403"
      network_type = "Isolated"
      }
      nic {
      bandwidth = 50
      id = 59575
      ip_address = "45.138.24.19"
      network_type = "PublicShared"
      }

      volume {
      id = 58910
      name = "bar"
      size = 20480
      }
      }

      # serverspace_server.server2:
      resource "serverspace_server" "server2" {
      boot_volume_id = 58911
      boot_volume_size = 40960
      cpu = 4
      id = "l2s190039"
      image = "Ubuntu-20.04-X64"
      location = "am2"
      name = "server-2"
      public_ip_addresses = [
      "31.44.3.68",
      ]
      ram = 8192
      ssh_keys = []

      nic {
      bandwidth = 0
      id = 59578
      ip_address = "192.168.0.2"
      network = "l2n403"
      network_type = "Isolated"
      }
      nic {
      bandwidth = 70
      id = 59577
      ip_address = "31.44.3.68"
      network_type = "PublicShared"
      }
      }

      # serverspace_ssh.terraform:
      resource "serverspace_ssh" "terraform" {
      id = "3181"
      name = "terraform-key"
      public_key = "ssh-rsa AAAAB3Nza...JUDjlM= root@CentOS.local"
      }

Herzlichen Glückwunsch zu Ihrer ersten Infrastructure-as-a-Code-Implementierung.

Abstimmung:
5 aus 5
Durchschnittliche Bewertung: 5
Bewertet von: 1
1101 CT Amsterdam Niederlande, Herikerbergweg 292
+31 20 262-58-98
700 300
ITGLOBAL.COM NL
700 300
Wir verwenden Cookies, um Ihr Erlebnis auf der Website zu verbessern Serverspace besser. Indem Sie weiterhin auf unserer Website surfen, stimmen Sie unseren zu
Cookies und Datenschutzbestimmungen.