nl2go.hetzner_installimage
Rôle Ansible : Hetzner Installimage
Un rôle Ansible qui gère le cycle de vie de l'installation des images du système d'exploitation des serveurs Hetzner en utilisant l'API Robot Hetzner.
Prérequis
- Compte existant Hetzner Online GmbH.
- Compte Webservice Robot Hetzner configuré ici.
- Clé publique SSH présente dans Gestion des clés Robot Hetzner.
Exigences
Nom | Type | Version | Emplacement |
---|---|---|---|
ansible-filter | Paquet Python | 1.0.1 | Nœud de contrôle |
Variables de configuration
Les variables suivantes sont suggérées pour être définies dans votre fichier ansible.cfg
[defaults]
inventory = __VOTRE_INVENTAIRE__
forks = 1
host_key_checking = false
private_key_file = __VOTRE_CLÉ_DE_PROVISIONNEMENT_HETZNER__
remote_user = root
roles_path = __CHEMIN_VERS_VOS_ROLES_GALAXY__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r
Variables de rôle
L'ensemble de variables par défaut définit l'installimage et doit idéalement être remplacé dans group_vars/host_vars
hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: nom-de-votre-serveur-ici
hetzner_installimage_install_partitions:
- PART swap swap 32G
- PART /boot ext4 1G
- PART / ext4 tout
hetzner_installimage_install_image: Ubuntu-1604-xenial-64-minimal.tar.gz
Le rôle inclut une autodétection des valeurs et de la configuration RAID. Il ne configurera pas de RAID s'il trouve un disque et RAID1 s'il en trouve 2. La configuration RAID automatique peut être remplacée par les variables suivantes :
hetzner_installimage_install_drives:
- DRIVE1 /dev/sda
- DRIVE2 /dev/sdb
hetzner_installimage_install_raid:
- SWRAID 1
- SWRAIDLEVEL 0
Il est également possible de simplement définir hetzner_installimage_install_raid
et laisser l'autodétection trouver les disques respectifs.
Les variables obligatoires suivantes doivent être définies dans group_vars/host_vars ou en tant que variables supplémentaires pour permettre la communication avec le service web et le déploiement de la clé publique :
hetzner_installimage_webservice_username: username
hetzner_installimage_webservice_password: password
La variable suivante peut être définie de manière optionnelle pour définir le nom d'hôte dans le robot Hetzner :
hetzner_installimage_server_name: __VOTRE_NOM_DE_SERVEUR__
Si hetzner_installimage_key_fingerprints
est défini, seules les clés sélectionnées seront installées pendant le processus d'installation de l'image
depuis Gestion des clés Robot Hetzner. Sinon, toutes les clés existantes seront provisionnées.
hetzner_installimage_key_fingerprints:
- 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff
Après l'exécution réussie du playbook, le rôle crée un fichier d'indication sur le serveur respectif sous
/etc/hetzner_installimage_provisioned.flag
. Au début du rôle, il vérifie si ce fichier existe sur l'hôte et saute les tâches suivantes. Ce comportement peut être évité en utilisant la variable hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
Définir cette variable sur true
sautera la vérification du fichier d'indication.
Exemple de 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 }}"
Remarque importante : Le rôle doit être exécuté avec gather_facts: no
car les hôtes où vous souhaitez installer un nouveau
système d'exploitation n'ont généralement pas de connexion ssh configurée et gather_facts
essaiera directement d'accéder à l'hôte.
Voir plus d'exemples dans les playbooks des différents scénarios de test dans le dossier test.
Le rôle demandera une confirmation de l'utilisateur pour effacer toutes les données pour tous les hôtes dans le play. Cela peut être remplacé
en utilisant la variable hetzner_installimage_skip_confirmation
définie sur yes
.
Un exemple pour les variables supplémentaires ressemblerait à ceci :
--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"
Étapes d'installation
- Installer une nouvelle machine
- Accédez à votre robot Hetzner (robot.your-server.de)
- Commandez un nouveau serveur
- Sélectionnez votre système d'exploitation
- Sélectionnez votre clé de provisionnement
- Exécutez le rôle hetzner_installimage
- Installer une machine existante
- Ajoutez votre clé de provisionnement au robot Hetzner via robot.your-server.de
- Exécutez le rôle hetzner_installimage
- Installer une machine déjà provisionnée
- Entrez dans la machine
- Supprimez /etc/hetzner_installimage_provisioned.flag ou définissez
- Exécutez le rôle hetzner_installimage
Si vous êtes sûr de ne pas purger accidentellement une machine en cours d'utilisation, vous pouvez directement exécuter le
rôle avec la variable supplémentaire hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
Ainsi, le rôle ne vérifiera pas la machine pour un fichier existant /etc/hetzner_installimage_provisioned.flag
mais n'empêchera pas également la machine d'être purgée accidentellement !
Images disponibles
Les images du système d'exploitation sont situées dans le dossier /root/.oldroot/nfs/images/
à l'intérieur du système de secours.
Les images suivantes sont disponibles au 25 mars 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
Des images plus anciennes se trouvent dans le dossier /root/.oldroot/nfs/images.old/
à l'intérieur du système de secours.
Le rôle vérifiera d'abord si une image existe dans le dossier contenant les images actuelles, puis vérifiera si une image existe dans le dossier contenant les images plus anciennes et l'utilisera à partir de l'endroit où elle a été trouvée en premier.
Ainsi, il est possible de maintenir le système d'exploitation cohérent entre les hôtes même si la dernière image d'un système d'exploitation est mise à jour à un moment donné.
Si aucune de ces images ne fonctionne pour vous, il est possible d'utiliser une image personnalisée en utilisant la variable
hetzner_installimage_custom_image_url
. L'image sera téléchargée à partir de l'URL donnée et utilisée pendant le processus d'installation.
Mainteneurs
Licence
Voir le fichier LICENSE.md pour plus de détails.
Informations sur l'auteur
Ce rôle a été créé à l'origine par/derivé de andrelohmann.
Provision your hetzner boxes with installimage by leveraging the Hetzner Robot Webservice https://robot.your-server.de/doc/webservice/en.html
ansible-galaxy install nl2go.hetzner_installimage