78 Dokumentationen verfügbar

Wissensdatenbank

Ansible Grundlagen Automatisierung

Zuletzt aktualisiert: 11.01.2026 um 12:06 Uhr

Ansible Grundlagen: Server-Automatisierung

Ansible automatisiert Server-Konfiguration, Deployments und IT-Aufgaben. Im Gegensatz zu anderen Tools benötigt Ansible keinen Agent auf den Zielservern - nur SSH-Zugang.

Warum Ansible?

  • Agentless: Keine Software auf Zielservern nötig
  • YAML-Syntax: Einfach lesbar und schreibbar
  • Idempotent: Mehrfache Ausführung = gleiches Ergebnis
  • Push-basiert: Änderungen werden aktiv verteilt

Installation

# Ubuntu/Debian
sudo apt update
sudo apt install ansible -y

# Oder via pip
pip install ansible

# Version prüfen
ansible --version

Inventory - Serverliste

# /etc/ansible/hosts oder eigene Datei
[webservers]
web1.example.com
web2.example.com
192.168.1.100

[databases]
db1.example.com ansible_user=admin
db2.example.com ansible_port=2222

[all:vars]
ansible_user=deploy
ansible_ssh_private_key_file=~/.ssh/id_rsa

Ad-hoc Befehle

# Ping alle Server
ansible all -m ping

# Befehl ausführen
ansible webservers -a "uptime"

# Paket installieren
ansible webservers -m apt -a "name=nginx state=present" --become

# Datei kopieren
ansible all -m copy -a "src=/local/file dest=/remote/path"

# Service neustarten
ansible webservers -m service -a "name=nginx state=restarted" --become

Erstes Playbook

# webserver.yml
---
- name: Webserver einrichten
  hosts: webservers
  become: yes
  
  tasks:
    - name: Nginx installieren
      apt:
        name: nginx
        state: present
        update_cache: yes
    
    - name: Nginx starten
      service:
        name: nginx
        state: started
        enabled: yes
    
    - name: Index-Seite kopieren
      copy:
        src: files/index.html
        dest: /var/www/html/index.html
        owner: www-data
        mode: '0644'
# Playbook ausführen
ansible-playbook webserver.yml

# Mit Inventory-Datei
ansible-playbook -i inventory.ini webserver.yml

# Dry-Run (Check-Mode)
ansible-playbook webserver.yml --check

Variablen

---
- name: Mit Variablen
  hosts: webservers
  vars:
    http_port: 80
    doc_root: /var/www/html
  
  tasks:
    - name: Nginx Config
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/sites-available/default
      notify: Restart Nginx
  
  handlers:
    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

Templates (Jinja2)

# templates/nginx.conf.j2
server {
    listen {{ http_port }};
    server_name {{ ansible_hostname }};
    root {{ doc_root }};
}

Rollen - Wiederverwendbare Struktur

# Rolle erstellen
ansible-galaxy init roles/webserver

# Struktur:
roles/
  webserver/
    tasks/main.yml
    handlers/main.yml
    templates/
    files/
    vars/main.yml
    defaults/main.yml

Wichtige Module

Modul Beschreibung
apt/yum Pakete installieren
service Dienste verwalten
copy Dateien kopieren
template Jinja2-Templates
user Benutzer verwalten
file Dateien/Ordner erstellen
git Git-Repositories
docker_container Docker-Container

Weitere Hilfe