nl2go.hetzner_installimage

Statut de construction Codecov Ansible Galaxy Tag GitHub (dernier par date) Téléchargements Ansible Galaxy

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

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
    1. Accédez à votre robot Hetzner (robot.your-server.de)
    2. Commandez un nouveau serveur
    3. Sélectionnez votre système d'exploitation
    4. Sélectionnez votre clé de provisionnement
    5. Exécutez le rôle hetzner_installimage
  • Installer une machine existante
    1. Ajoutez votre clé de provisionnement au robot Hetzner via robot.your-server.de
    2. Exécutez le rôle hetzner_installimage
  • Installer une machine déjà provisionnée
    1. Entrez dans la machine
    2. Supprimez /etc/hetzner_installimage_provisioned.flag ou définissez
    3. 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.

À propos du projet

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

Installer
ansible-galaxy install nl2go.hetzner_installimage
Licence
mit
Téléchargements
18.8k
Propriétaire