Ameer - stock.adobe.com

AWS EC2-Instanzen mit Terraform reproduzierbar erstellen

Mit Terraform lassen sich AWS EC2-Instanzen effizient bereitstellen. Entwickler definieren Infrastruktur im Code, testen sie und automatisieren wiederkehrende Prozesse.

Entwickler können eine Amazon EC2-Instanz erstellen, um Software in einer Entwicklungs- oder Staging-Umgebung zu testen oder Software für den produktiven Einsatz bereitzustellen. Mit Terraform optimieren sie diesen Prozess mithilfe von Code.

Eine EC2-Instanz ist eine virtuelle Maschine, die in der AWS-Cloud ausgeführt wird. AWS verwaltet die zugrunde liegende Hardware, sodass sich Benutzer auf die von ihnen ausgeführte Software konzentrieren können, anstatt sich um Aufgaben der Infrastrukturverwaltung zu kümmern. Terraform ist ein Infrastructure-as-Code-Tool (IaC), mit dem IT-Administratoren und Entwickler Infrastrukturressourcen programmgesteuert bereitstellen können.

In diesem Beitrag erfahren Sie mehr über die Vorteile von Terraform und wie Sie damit eine EC2-Instanz in AWS starten können.

Warum Terraform geeignet ist

Entwickler müssen ihre Zeit sinnvoll nutzen. Daher sind sie bestrebt, sich wiederholende und manuelle Prozesse zu reduzieren.

In der Regel konzentrieren sich Entwickler auf das Entwerfen und Planen der Anwendungsarchitektur sowie auf das Schreiben von Code. IaC-Tools wie Terraform, das die HashiCorp Configuration Language verwendet, ermöglichen es Entwicklern, vertraute Fähigkeiten, wie zum Beispiel das Schreiben von Code, anzuwenden, um die Cloud-Infrastruktur bereitzustellen, auf der ihre Software ausgeführt wird. Mit Terraform können Entwickler auch Tests schreiben, darunter Unit- und Integrationstests, diese Tests in der Quellcodeverwaltung speichern und mit anderen daran zusammenarbeiten.

Erstellen einer EC2-Instanz mit Terraform

In diesem Abschnitt schreiben wir den Code zum Erstellen einer EC2-Instanz. Wir werden uns ansehen, wie die Datei main.tf zum Erstellen einer EC2-Instanz und die Variablendateien eingerichtet werden, um sicherzustellen, dass die Instanz in jeder Umgebung wiederholbar ist.

Für diesen Vorgang sind folgende Voraussetzungen erforderlich:

  • AWS-Konto
  • Anmeldedaten für AWS Identity and Access Management und programmatischen Zugriff
  • lokal mit der AWS CLI eingerichtete AWS-Anmeldeinformationen
  • eine für EC2 konfigurierte Virtuelle Private Cloud (VPC)
  • ein Code- oder Texteditor

Für die Zwecke dieses Abschnitts verwenden wir Visual Studio Code als Codeeditor. Es kann jedoch jeder Texteditor verwendet werden.

Schritt 1. Erstellen Sie die Datei main.tf

Öffnen Sie Ihren Text-/Codeeditor und erstellen Sie ein neues Verzeichnis. Generieren Sie eine Datei mit dem Namen main.tf. Beim Einrichten der Datei main.tf erstellen und verwenden Sie den Terraform AWS Provider – ein Plug-in, mit dem Terraform mit der AWS-Plattform kommunizieren kann – und die EC2-Instanz.

Fügen Sie zunächst den Provider-Code hinzu, um sicherzustellen, dass Sie den AWS Provider verwenden. Ergänzen Sie mit required_version die Version für Terraform und die gewünschte Version des AWS Providers.

terraform {
  required_version = “>=1.2.0”
  required_providers {
    aws = {
      source = „hashicorp/aws“
      version = “~> 5.0”
    }
  }
}

Richten Sie als Nächstes Ihre Terraform-Ressource ein, die ein Infrastrukturobjekt für die EC2-Instanz beschreibt. Dadurch wird die Instanz erstellt. Definieren Sie den Instanztyp und konfigurieren Sie das Netzwerk.

resource „aws_instance“ „“ {
  ami           = var.ami
  instance_type = var.instance_type
 
  network_interface {
    network_interface_id = var.network_interface_id
    device_index         = 0
  }
 
credit_specification {
    cpu_credits = „unlimited“
  }
}

Schritt 2. Erstellen Sie die Datei variables.tf

Nachdem Sie die Datei main.tf erstellt haben, richten Sie die erforderlichen Variablen ein. Mit diesen Variablen können Sie Werte übergeben und sicherstellen, dass der Code wiederholbar ist. Mit Variablen können Sie Ihren Code in jeder EC2-Umgebung verwenden.

Fügen Sie beim Einrichten der Datei variables.tf die folgenden drei Variablen hinzu:

  • network_interface_id: Das ist die Netzwerkschnittstellen-ID, die aus der VPC mit der EC2-Instanz verbunden werden soll. In einfacheren Szenarien ist subnet_id oder vpc_security_group_ids ausreichend.
  • ami: Das ist das Amazon Machine Image (AMI) einer Instanz. Im folgenden Codeausschnitt ist Ubuntu als Standard-AMI festgelegt. In der Realität ist eine dynamische Gestaltung über einen Data-Source-Block besser geeignet, damit immer die aktuelle Version genutzt wird.
  • instance_type: Die Größe der Instanz wird mit dieser Variable festgelegt. Im folgenden Codeausschnitt ist als Standard-Instanztyp eine t2.micro-Instanzgröße festgelegt.

Erstellen Sie in der Datei variables.tf die folgenden Variablen.

variable „network_interface_id“ {
  type = string
  default = „network_id_from_aws“
}
 
variable „ami“ {
    type = string
    default = „ami-005e54dee72cc1d00“
}
 
variable „instance_type” {
    type = string
    default = „t2.micro”
}

Schritt 3. Erstellen Sie die EC2-Umgebung

Um die EC2-Umgebung bereitzustellen, stellen Sie sicher, dass Sie sich im Terraform-Modul/Verzeichnis befinden, in dem Sie den Terraform-Code schreiben, und führen Sie die folgenden Befehle aus:

  • terraform init initialisiert die Umgebung und ruft den AWS Provider ab.
  • terraform plan erstellt einen Ausführungsplan für die Umgebung und bestätigt, dass keine Fehler gefunden wurden.
  • terraform apply --auto-approve erstellt die Umgebung und genehmigt sie automatisch.

Schritt 4. Bereinigen Sie die Umgebung

Um alle Terraform-Umgebungen zu löschen, stellen Sie sicher, dass Sie sich in dem Terraform-Modul/Verzeichnis befinden, das Sie zum Erstellen der EC2-Instanz verwendet haben, und führen Sie terraform destroy aus.

EC2-Instanz mit Terraform erstellen

Terraform ermöglicht es Entwicklern und IT-Administratoren, EC2-Instanzen in AWS effizient per Infrastructure as Code bereitzustellen. Eine EC2-Instanz ist eine virtuelle Maschine in der AWS-Cloud, bei der AWS die Hardware verwaltet. Mit Terraform können Infrastrukturressourcen wiederholbar definiert, getestet und versioniert werden. Dazu legt man Code in Dateien wie main.tf und variables.tf ab, initialisiert die Umgebung mit terraform init, prüft mit plan, erstellt mit apply und entfernt mit destroy.

Erfahren Sie mehr über Cloud Computing