IaC Terraform Ansible Vagrant Pulumi DevOps

Infrastructure as Code (IaC) Konfigurationsleitfaden: Terraform, Ansible und mehr

Ein umfassender Leitfaden zu IaC-Konfigurationsvorlagen, einschließlich terraform main.tf, Ansible Playbooks und Pulumi-Konfiguration für Cloud- und lokale Umgebungen.

2026-04-11

Infrastructure as Code (IaC) Konfigurationsleitfaden

Infrastructure as Code (IaC) hat die Art und Weise, wie wir IT-Ressourcen verwalten und bereitstellen, revolutioniert. Anstatt manueller Konfigurationen verwenden wir Code, um unsere Umgebung zu definieren, was Konsistenz, Skalierbarkeit und Reproduzierbarkeit gewährleistet. Dieser Leitfaden bietet wichtige Vorlagen für die beliebtesten IaC-Tools: Terraform, Ansible, Vagrant und Pulumi.

1. Terraform Konfigurationsvorlagen

Terraform ist der Industriestandard für das Provisioning von Cloud-Infrastruktur. Es verwendet HCL (HashiCorp Configuration Language), um Ressourcen zu definieren.

Terraform main.tf Vorlage

In der Datei main.tf definieren Sie Ihre primären Ressourcen. Eine typische terraform main.tf template enthält Ressourcenblöcke für Instanzen, Netzwerke und Speicher.

# Beispiel für eine terraform main.tf Vorlage
resource "aws_instance" "web_server" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"

  tags = {
    Name = "Web-Server-01"
  }
}

resource "aws_vpc" "main_vpc" {
  cidr_block = "10.0.0.0/16"
}

Terraform Provider Konfiguration (Provider Config)

Der Block terraform provider config teilt Terraform mit, welchen Cloud-Anbieter (AWS, Azure, GCP usw.) es verwenden soll und wie die Authentifizierung erfolgt.

# terraform provider config
provider "aws" {
  region = "eu-central-1"
  # Die Authentifizierung erfolgt normalerweise über Umgebungsvariablen oder AWS CLI-Profile
}

provider "google" {
  project = "mein-projekt-id"
  region  = "europe-west3"
}

Terraform Backend Konfiguration

Die terraform backend config legt fest, wo Terraform seine Zustandsdatei (state file) speichert. Die Verwendung eines Remote-Backends wie S3 oder GCS ist für die Zusammenarbeit im Team entscheidend.

# terraform backend config
terraform {
  backend "s3" {
    bucket         = "mein-terraform-state-bucket"
    key            = "prod/terraform.tfstate"
    region         = "eu-central-1"
    encrypt        = true
    dynamodb_table = "terraform-lock"
  }
}

2. Ansible Playbooks und Inventar

Während Terraform die Infrastruktur bereitstellt, ist Ansible spezialisiert auf Konfigurationsmanagement und Anwendungs-Deployment.

Ansible Playbook Vorlage

Eine ansible playbook template definiert die Aufgaben, die auf einer Gruppe von Hosts ausgeführt werden sollen.

---
# ansible playbook vorlage
- name: Webserver konfigurieren
  hosts: webservers
  become: yes
  tasks:
    - name: Sicherstellen, dass Apache installiert ist
      apt:
        name: apache2
        state: present

    - name: Apache-Dienst starten
      service:
        name: apache2
        state: started
        enabled: yes

    - name: index.html kopieren
      copy:
        src: files/index.html
        dest: /var/www/html/index.html

Ansible Inventardatei

Die ansible inventory file listet die Hosts und Hostgruppen auf, die von Ansible verwaltet werden.

# ansible inventardatei (INI-Format)
[webservers]
192.168.1.10
192.168.1.11

[dbservers]
db.example.com ansible_user=admin

[all:vars]
ansible_python_interpreter=/usr/bin/python3

3. Vagrant und Pulumi Konfiguration

Für die lokale Entwicklung und modernes programmatisches IaC sind Vagrant und Pulumi unerlässlich.

Vagrantfile Vorlage und Beispiel

Ein Vagrantfile template wird verwendet, um virtuelle Entwicklungsumgebungen zu definieren und zu konfigurieren.

# Vagrantfile Beispiel
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end

  config.vm.provision "shell", inline: <<-SHELL
    apt-get update
    apt-get install -y nginx
  SHELL
end

Pulumi Konfiguration (Pulumi Config)

Pulumi config ermöglicht es Ihnen, Infrastruktur mit vertrauten Programmiersprachen wie TypeScript, Python oder Go zu verwalten.

// Pulumi Konfigurationsbeispiel (TypeScript)
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";

const size = "t2.micro";
const ami = aws.ec2.getAmi({
    filters: [{ name: "name", values: ["amzn-ami-hvm-*"] }],
    owners: ["137112412989"], // Owner-ID für Amazon Linux
    mostRecent: true,
}).then(ami => ami.id);

const server = new aws.ec2.Instance("web-server", {
    instanceType: size,
    ami: ami,
});

export const publicIp = server.publicIp;

4. Häufig gestellte Fragen (FAQ)

F: Warum erhalte ich in Terraform den Fehler "provider configuration not found"?

A: Dies passiert normalerweise, wenn Sie nach dem Hinzufügen eines neuen Providers nicht terraform init ausgeführt haben oder wenn der Provider-Block in Ihren .tf-Dateien fehlt. Stellen Sie sicher, dass Sie den Block required_providers verwenden, wenn Sie spezifische Versionen benötigen.

F: Wie behebe ich "ansible unreachable"-Fehler?

A: Überprüfen Sie Ihre ansible inventory file, um sicherzustellen, dass die IP-Adressen/Hostnamen korrekt sind. Überprüfen Sie die SSH-Konnektivität manuell und stellen Sie sicher, dass Ihr SSH-Schlüssel zum Agenten hinzugefügt oder im Inventar angegeben wurde.

F: Was ist der Unterschied zwischen Terraform und Pulumi?

A: Terraform verwendet HCL, eine domänenspezifische Sprache, während Pulumi Standardprogrammiersprachen verwendet. Pulumi bietet mehr Flexibilität für komplexe Logik, aber Terraform hat ein größeres Ökosystem und eine größere Community.

F: Wann sollte ich Vagrant verwenden?

A: Verwenden Sie Vagrant, wenn Sie eine konsistente, reproduzierbare lokale Entwicklungsumgebung benötigen, die Ihr Produktions-Setup nachahmt (z. B. durch die Verwendung von VMs auf Ihrem Laptop).

Fazit

Das Beherrschen von IaC-Konfigurationsvorlagen ist der Schlüssel zum Aufbau moderner, resilienter Infrastrukturen. Egal, ob Sie Terraform für das Provisioning, Ansible für die Konfiguration oder Pulumi für das code-gesteuerte Cloud-Management verwenden – diese Vorlagen bieten einen soliden Ausgangspunkt für Ihre DevOps-Reise.

Benötigen Sie Hilfe beim Formatieren Ihrer JSON- oder YAML-Dateien? Besuchen Sie Tool3M für eine Sammlung leistungsstarker Entwickler-Tools.