Linuxguide

Ansible – Linux-Server automatisch konfigurieren 2025

Idempotente Server-Konfiguration mit Ansible Playbooks

S
SeeColors IT
11. Juni 20264 Min. Lesezeit51 Aufrufe

Ansible installieren

# Auf Control Node (kein Agent auf Zielservern nötig!)
pip3 install ansible

# oder
apt install -y ansible

ansible --version

# SSH-Verbindung testen
ansible all -i "server1.firma.de," -m ping --user admin --private-key ~/.ssh/id_ed25519

Inventory

# /etc/ansible/hosts oder ./inventory.ini

[webservers]
web-01.firma.de ansible_user=admin
web-02.firma.de ansible_user=admin

[dbservers]
db-01.firma.de ansible_user=admin

[production:children]
webservers
dbservers

[all:vars]
ansible_python_interpreter=/usr/bin/python3
ansible_ssh_private_key_file=~/.ssh/id_ed25519

Erstes Playbook

# playbook-webserver.yml
---
- name: Webserver konfigurieren
  hosts: webservers
  become: yes
  vars:
    nginx_port: 80
    app_user: www-data

  tasks:
    - name: System aktualisieren
      apt:
        update_cache: yes
        upgrade: dist
        cache_valid_time: 3600

    - name: Nginx installieren
      apt:
        name:
          - nginx
          - certbot
          - python3-certbot-nginx
        state: present

    - name: Nginx starten und aktivieren
      systemd:
        name: nginx
        state: started
        enabled: yes

    - name: Nginx-Konfiguration kopieren
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/sites-available/default
        owner: root
        group: root
        mode: '0644'
      notify: Nginx reload

    - name: UFW: HTTP und HTTPS erlauben
      ufw:
        rule: allow
        port: "{{ item }}"
        proto: tcp
      loop:
        - '80'
        - '443'

  handlers:
    - name: Nginx reload
      systemd:
        name: nginx
        state: reloaded
# Playbook ausführen
ansible-playbook -i inventory.ini playbook-webserver.yml

# Dry-Run (Check-Mode)
ansible-playbook -i inventory.ini playbook-webserver.yml --check --diff

# Nur bestimmte Tags
ansible-playbook -i inventory.ini playbook-webserver.yml --tags nginx

Ansible Roles

# Rolle erstellen
ansible-galaxy init roles/nginx

# Struktur:
# roles/nginx/
#   tasks/main.yml
#   handlers/main.yml
#   templates/
#   files/
#   defaults/main.yml
#   vars/main.yml
# site.yml - Haupt-Playbook
---
- hosts: webservers
  become: yes
  roles:
    - common
    - nginx
    - certbot

Ansible Vault (Secrets verschlüsseln)

# Datei verschlüsseln
ansible-vault encrypt vars/secrets.yml

# Verschlüsselt erstellen
ansible-vault create vars/secrets.yml

# Inhalt anzeigen
ansible-vault view vars/secrets.yml

# Mit Vault-Passwort ausführen
ansible-playbook site.yml --ask-vault-pass

# Passwort-Datei
echo "vault-passwort" > ~/.vault_pass && chmod 600 ~/.vault_pass
ansible-playbook site.yml --vault-password-file ~/.vault_pass

FAQ

Was ist der Unterschied zwischen Ansible und Puppet/Chef?
Ansible: agentlos (SSH), push-basiert, einfacherer Einstieg. Puppet/Chef: Agent-basiert, pull-basiert, mächtiger für große Flotten.

Fazit

Ansible ist das einsteigerfreundlichste Automatisierungswerkzeug für Linux-Server – keine Agenten, einfache YAML-Syntax, riesige Modul-Bibliothek.

Ansible-Automatisierung für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Beratung anfragen.

Artikel teilen

War dieser Artikel hilfreich?

Dein Feedback hilft uns, bessere Inhalte zu erstellen.

Kommentar hinterlassen

Verwandte Artikel