In diesem Artikel erfährst du, wie du mithilfe von Ansible die Einrichtung deiner Server automatisieren kannst.
Ansible ist ein leistungsstarkes Open-Source-Tool für Infrastructure-as-Code (IaC), mit dem du deine Server automatisiert einrichten kannst. Dadurch erreichst du eine reproduzierbare und konsistente Umgebung, ohne jeden Server manuell einrichten zu müssen. Ein großer Vorteil von Ansible ist, dass auf dem Zielserver keine spezielle Software benötigt wird, sondern nur ein SSH-Zugang und Python.
Die Konfiguration erfolgt von einem Rechner aus, der Ansible installiert hat (Control Node). Dieser verwaltet dann einen oder mehrere Server (Managed Nodes). Die Server, die du verwalten möchtest, werden in einer Liste gepflegt (Inventory). Die Konfigurationsdatei, in der beschrieben ist, wie die Server eingerichtet werden sollen, nennt man Playbook. Diese Playbooks kannst du gegen beliebig viele Server lauf lassen und das sogar mehrfach hintereinander. Ansible wird bei jeder Ausführung nur die Änderungen vornehmen, die noch nicht angewendet worden sind.
Mit dem hier vorgestellten Ansible-Playbook kannst du:
Los geht's!
Wir benötigen folgendes:
Wir starten mit einem kleinen Playbook, das dein Betriebssystem aktuell halten und zusätzliche Pakete installieren kann. Von dort arbeiten wir uns Schritt für Schritt weiter.
Speichere das folgende Playbook als playbook.yml auf deinem lokalen Rechner ab:
- name: Server setup
hosts: all
become: true
tasks:
- name: Update apt package cache
apt:
update_cache: 'yes'
cache_valid_time: 600
- name: Upgrade installed apt packages
apt:
upgrade: dist
register: upgrade
- name: Ensure that a base set of software packages are installed
apt:
pkg:
- curl
- fail2ban
- git
- needrestart
- net-tools
- pwgen
- resolvconf
- rsync
- sudo
- ufw
- unbound
state: latest
Bevor wir das Playbook ausführen können, muss der SSH-Fingerabdruck des Zielservers auf unserem lokalen Rechner hinterlegt sein.
Falls du also vorher noch nie mit deinem Server per SSH verbunden warst, solltest du das jetzt tun:
ssh root@server_ip
Dann kannst du folgenden Befehl auf deinem lokalen Rechner ausführen:
ansible-playbook -i server_ip, -u root --ask-pass playbook.yml
Ersetze server_ip mit der IP-Adresse deines Servers. Das Komma nach der IP-Adresse ist wichtig!
Gib, sobald du dazu aufgefordert wirst, dein root-Passwort ein.
Die Ausgabe sollte dann ungefähr wie folgt aussehen:
Damit kannst du kontrollieren, welche Schritte Ansible ausgeführt hat.
Mit folgendem Schritt können wir den SSH-Port ändern:
- name: Set ssh port number
lineinfile:
dest: /etc/ssh/sshd_config
regexp: 'Port '
line: 'Port 22222'
state: present
Damit diese Änderung einen Effekt hat, muss der SSH-Server neugestartet werden. Dafür findest du im kompletten Playbook eine Lösung (siehe weiter unten).
Ab jetzt ist dein Server unter einem anderen SSH-Port erreichbar, d. h. dass du beim Aufrufen von ansible-playbook die Option -e "ansible_port=22222" mitgeben musst!
ansible-playbook -i server_ip, -u root --ask-pass playbook.yml -e "ansible_port=22222"
Das Einrichten der UFW-Firewall ist durch das eingebaute ufw-Modul sehr einfach:
- name: Deny all incoming
ufw:
direction: incoming
policy: deny
- name: Allow all outgoing
ufw:
direction: outgoing
policy: allow
- name: Allow SSH
ufw:
rule: allow
port: 22222
proto: tcp
- name: Enable ufw service
ufw:
state: enabled
Diese Firewall-Regeln sind sofort aktiv.
Das Playbook mit allen hier im Artikel vorgestellten Schritten findest du in diesem GitHub Repository.
Du kannst es mit Git auschecken und der Anleitung in der README-Datei folgen, um deinen Server zu konfigurieren.
Ansible ist sehr universell einsetzbar und es gibt viele Erweiterungen (Roles). Einige findet man in der Ansible Galaxy, die von der Community erstellte Erweiterungen bereitstellt.
Man kann z. B. auch sehr einfach Cron-Jobs über die entsprechende Rolle cron hinzufügen.
Wenn man weiter in Richtung Härtung des Servers gehen möchte, kann man sich beispielsweise die Playbooks von Ansible Lookdown anschauen. Dort wird unter anderem das CIS (Center for Internet Security) Level 1 angestrebt.
Mit diesem Playbook kannst du einen sicheren und gut konfigurierten Server in wenigen Minuten einrichten. Falls du das Playbook erweitern möchtest, kannst du weitere Pakete oder Schritte ergänzen.
Falls dieser Artikel hilfreich für dich, dann lasse es uns gerne wissen!
En FameSystems | April 1, 2025
Si buscas más: ofrecemos potentes servidores raíz, servidores de juegos, alojamiento web, servidores TeamSpeak y opciones de revendedor.
Más información sobre nuestros productos