Ansible Grundlagen Automatisierung
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
- 📖 Ansible Dokumentation
- 📧 E-Mail: support@enjyn.de