nl2go.hetzner_installimage

Build Status Codecov Ansible Galaxy GitHub tag (latest by date) Ansible Galaxy Downloads

Ansible Rolle: Hetzner Installimage

Eine Ansible Rolle, die den Lebenszyklus der OS-Image-Installation von Hetzner-Servern mit der Hetzner Robot API verwaltet.

Voraussetzungen

Anforderungen

Name Typ Version Ort
ansible-filter Python Paket 1.0.1 Steuerungsknoten

Konfigurationsvariablen

Die folgenden Variablen sollten in deiner ansible.cfg Datei gesetzt werden:

[defaults]
inventory = __DEIN_INVENTAR__
forks = 1
host_key_checking = false
private_key_file = __DEIN_HETZNER_BEREITSTELLUNGSSCHLÜSSEL__
remote_user = root
roles_path = __PFAD_ZU_DEINEN_GALAXY_ROLLEN__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r

Rollenvariablen

Die Standardvariablen definieren das Installationsimage und sollten in group_vars/host_vars überschrieben werden:

hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: dein-server-name-hier
hetzner_installimage_install_partitions:
- PART swap swap 32G
- PART /boot ext4 1G
- PART / ext4 all
hetzner_installimage_install_image: Ubuntu-1604-xenial-64-minimal.tar.gz

Die Rolle umfasst eine automatische Erkennung von RAID-Werten und -Setups. Es wird kein RAID konfiguriert, wenn eine Festplatte gefunden wird, und RAID1, wenn 2 Festplatten gefunden werden. Die automatische RAID-Konfiguration kann mit den folgenden Variablen überschrieben werden:

hetzner_installimage_install_drives:
- DRIVE1 /dev/sda
- DRIVE2 /dev/sdb
hetzner_installimage_install_raid:
- SWRAID 1
- SWRAIDLEVEL 0

Es ist auch möglich, nur hetzner_installimage_install_raid festzulegen und die automatische Erkennung die entsprechenden Festplatten finden zu lassen.

Die folgenden Pflichtvariablen müssen in group_vars/host_vars oder als zusätzliche Variablen gesetzt werden, um die Kommunikation mit dem Webservice und die Bereitstellung des öffentlichen Schlüssels zu ermöglichen:

hetzner_installimage_webservice_username: benutzername
hetzner_installimage_webservice_password: passwort

Die folgende Variable kann optional gesetzt werden, um den Hostnamen im Hetzner-Roboter festzulegen:

hetzner_installimage_server_name: __DEIN_SERVER_NAME__

Wenn hetzner_installimage_key_fingerprints gesetzt ist, werden nur die ausgewählten Schlüssel während des Installationsprozesses des Images aus der Hetzner Robot Schlüsselverwaltung installiert. Andernfalls werden alle vorhandenen Schlüssel bereitgestellt.

hetzner_installimage_key_fingerprints:
    - 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff

Wenn das Playbook erfolgreich ausgeführt wird, erstellt die Rolle eine Flag-Datei auf dem jeweiligen Server unter /etc/hetzner_installimage_provisioned.flag. Zu Beginn der Rolle wird geprüft, ob diese Datei auf dem Host existiert, und die weiteren Aufgaben werden übersprungen. Dieses Verhalten kann umgangen werden, indem die Variable hetzner_installimage_ignore_provisioned_flag verwendet wird:

--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"

Wenn diese Variable auf true gesetzt wird, wird die Überprüfung der Flag-Datei übersprungen.

Beispiel-Playbook

- hosts: hetzner
  gather_facts: no
  roles:
     - nl2go.hetzner_installimage
  vars:
    hetzner_installimage_webservice_username: "{{ hetzner_robot_api_user}}"
    hetzner_installimage_webservice_password: "{{ hetzner_robot_api_pass}}"
    hetzner_installimage_server_name: "{{ inventory_hostname }}"

Wichtiger Hinweis: Die Rolle muss mit gather_facts: no ausgeführt werden, da die Hosts, auf denen ein neues Betriebssystem installiert werden soll, normalerweise keinen SSH-Zugriff konfiguriert haben und gather_facts direkt versuchen wird, auf den Host zuzugreifen.

Weitere Beispiele findest du in den Playbooks der verschiedenen Testszenarien im Testordner.

Die Rolle fragt den Benutzer um Bestätigung, um alle Daten für alle Hosts im Play zu löschen. Dies kann überschrieben werden, indem die Variable hetzner_installimage_skip_confirmation auf yes gesetzt wird.

Ein Beispiel für die zusätzlichen Variablen könnte so aussehen:

--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"

Installationsschritte

  • Neue Maschine installieren
    1. Gehe in deinen Hetzner-Roboter (robot.your-server.de)
    2. Bestelle einen neuen Server
    3. Wähle dein Betriebssystem aus
    4. Wähle deinen Bereitstellungsschlüssel aus
    5. Führe die Hetzner-Installimage-Rolle aus
  • Bestehende Maschine installieren
    1. Füge deinen Bereitstellungsschlüssel über robot.your-server.de zum Hetzner-Roboter hinzu
    2. Führe die Hetzner-Installimage-Rolle aus
  • Bereits bereitgestellte Maschine installieren
    1. Greife auf die Maschine zu
    2. Lösche /etc/hetzner_installimage_provisioned.flag oder setze
    3. Führe die Hetzner-Installimage-Rolle aus

Wenn du sicher bist, dass du keine laufende Maschine versehentlich löschen wirst, die bereits in Gebrauch ist, kannst du die Rolle direkt mit der zusätzlichen Variablen hetzner_installimage_ignore_provisioned_flag ausführen:

--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"

So wird die Rolle nicht überprüfen, ob auf der Maschine eine vorhandene /etc/hetzner_installimage_provisioned.flag Datei vorhanden ist, sie verhindert auch nicht, dass die Maschine versehentlich gelöscht wird!

Verfügbare Images

Die OS-Images befinden sich im Ordner /root/.oldroot/nfs/images/ im Rettungssystem. Die folgenden Images sind verfügbar (Stand: 25. März 2020):

  • Archlinux-2017-64-minimal.tar.gz
  • archlinux-latest-64-minimal.tar.gz
  • CentOS-76-64-minimal.tar.gz
  • CentOS-77-64-minimal.tar.gz
  • CentOS-80-64-minimal.tar.gz
  • CentOS-81-64-minimal.tar.gz
  • CoreOS-1298-64-production.bin.bz2
  • Debian-103-buster-64-LAMP.tar.gz
  • Debian-103-buster-64-minimal.tar.gz
  • Debian-811-jessie-64-minimal.tar.gz
  • Debian-911-stretch-64-minimal.tar.gz
  • Debian-912-stretch-64-minimal.tar.gz
  • Ubuntu-1604-xenial-64-minimal-no-hwe.tar.gz
  • Ubuntu-1604-xenial-64-minimal.tar.gz
  • Ubuntu-1804-bionic-64-minimal.tar.gz
  • Ubuntu-1804-bionic-64-nextcloud.tar.gz
  • Ubuntu-1910-eoan-64-minimal.tar.gz

Ältere Images befinden sich im Ordner /root/.oldroot/nfs/images.old/ im Rettungssystem. Die Rolle prüft zuerst, ob ein Image im Ordner mit den aktuellen Bildern vorhanden ist, und prüft anschließend, ob ein Image im Ordner mit den älteren Bildern vorhanden ist, und verwendet es von dort, wo es zuerst gefunden wurde. So ist es möglich, das Betriebssystem bei den Hosts konsistent zu halten, auch wenn das neueste Image eines Betriebssystems irgendwann aktualisiert wird.

Wenn keines dieser Images für dich funktioniert, ist es möglich, ein benutzerdefiniertes Image über die Variable hetzner_installimage_custom_image_url zu verwenden. Das Image wird von der angegebenen URL heruntergeladen und während des Installationsprozesses verwendet.

Maintainer

Lizenz

Siehe die LICENSE.md Datei für Details.

Autor

Diese Rolle wurde ursprünglich von/forkiert von andrelohmann erstellt.

Über das Projekt

Provision your hetzner boxes with installimage by leveraging the Hetzner Robot Webservice https://robot.your-server.de/doc/webservice/en.html

Installieren
ansible-galaxy install nl2go.hetzner_installimage
Lizenz
mit
Downloads
18.8k