nl2go.hetzner_installimage
Rol de Ansible: Hetzner Installimage
Un Rol de Ansible que gestiona el ciclo de vida de la instalación de imágenes del sistema operativo en servidores Hetzner utilizando la API Robot de Hetzner.
Requisitos previos
- Cuenta existente en Hetzner Online GmbH.
- Cuenta del servicio web Robot de Hetzner configurada.
- Clave pública SSH presente en Gestión de Claves Robot de Hetzner.
Requisitos
Nombre | Tipo | Versión | Ubicación |
---|---|---|---|
ansible-filter | Paquete de Python | 1.0.1 | Nodo de control |
Variables de configuración
Las siguientes variables se sugieren para ser configuradas en su archivo ansible.cfg
[defaults]
inventory = __SU_INVENTARIO__
forks = 1
host_key_checking = false
private_key_file = __SU_CLAVE_DE_PROVISIONAMIENTO_DE_HETZNER__
remote_user = root
roles_path = __RUTA_A_SUS_ROLES_DE_GALAXY__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r
Variables de rol
El conjunto de variables por defecto define la imagen de instalación y es mejor sobreescribirlo en group_vars/host_vars
hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: su-nombre-de-servidor-aquí
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
El rol incluye una autodetección de valores y configuración RAID. No se configurará RAID si se encuentra un disco y RAID1 si se encuentran 2 discos. La configuración automática de RAID se puede sobrescribir con las siguientes variables:
hetzner_installimage_install_drives:
- DRIVE1 /dev/sda
- DRIVE2 /dev/sdb
hetzner_installimage_install_raid:
- SWRAID 1
- SWRAIDLEVEL 0
También es posible simplemente establecer hetzner_installimage_install_raid
y permitir que la autodetección encuentre los discos respectivos.
Las siguientes variables obligatorias deben establecerse en group_vars/host_vars o como variables adicionales para permitir la comunicación con el servicio web y el despliegue de la clave pública:
hetzner_installimage_webservice_username: nombre_usuario
hetzner_installimage_webservice_password: contraseña
La siguiente variable se puede establecer opcionalmente para definir el nombre del servidor en el robot de Hetzner:
hetzner_installimage_server_name: __SU_NOMBRE_DE_SERVIDOR__
Si hetzner_installimage_key_fingerprints
está establecido, solo se instalarán las claves seleccionadas durante el proceso de instalación de
la imagen desde Gestión de Claves Robot de Hetzner. De lo contrario, se provisionarán todas las claves existentes.
hetzner_installimage_key_fingerprints:
- 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff
Al ejecutar el playbook con éxito, el rol crea un archivo de indicador en el servidor respectivo bajo
/etc/hetzner_installimage_provisioned.flag
. Al comienzo del rol se verifica si ese archivo existe en el host y se omiten las tareas posteriores. Este comportamiento se puede evitar utilizando la variable hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
Establecer esta variable en true
evitará la verificación del archivo de indicador.
Ejemplo 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 }}"
Nota importante: El rol debe ejecutarse con gather_facts: no
ya que los hosts donde desea instalar un nuevo
sistema operativo generalmente no tienen acceso SSH configurado y gather_facts
intentará acceder directamente al host.
Vea más ejemplos en los playbooks de los diferentes escenarios de prueba dentro de la carpeta de prueba.
El rol pedirá una confirmación al usuario para borrar todos los datos de todos los hosts en la tarea. Esto se puede sobrescribir
utilizando la variable hetzner_installimage_skip_confirmation
establecida en yes
.
Un ejemplo para las variables adicionales podría verse así:
--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"
Pasos para la Instalación
- Instalar una nueva máquina
- Inicie sesión en su robot de Hetzner (robot.your-server.de)
- Ordene un nuevo servidor
- Seleccione su sistema operativo
- Seleccione su clave de provisión
- Ejecute el rol hetzner_installimage
- Instalar una máquina existente
- Agregue su clave de provisión al robot de Hetzner a través de robot.your-server.de
- Ejecute el rol hetzner_installimage
- Instalar una máquina ya provisionada
- Ingrese a la máquina
- Elimine /etc/hetzner_installimage_provisioned.flag o establezca
- Ejecute el rol hetzner_installimage
Si está seguro de que no borrará accidentalmente una máquina en funcionamiento, puede ejecutar directamente el rol con la variable adicional hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
De esta manera, el rol no verificará si existe un archivo /etc/hetzner_installimage_provisioned.flag
en la máquina, pero tampoco evitará que la máquina sea
borrada accidentalmente.
Imágenes Disponibles
Las imágenes del sistema operativo se encuentran en la carpeta /root/.oldroot/nfs/images/
dentro del sistema de recuperación. Las
siguientes imágenes están disponibles desde el 25 de marzo de 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
Imágenes más antiguas se encuentran en /root/.oldroot/nfs/images.old/
dentro del sistema de recuperación. El rol
verificará primero si existe una imagen en la carpeta con las imágenes actuales y luego comprobará si
una imagen existe en la carpeta con las imágenes más antiguas, utilizando aquella de donde se encontró primero.
De esta manera, es posible mantener el sistema operativo consistente entre los hosts incluso si se actualiza en algún momento la imagen más reciente
de un sistema operativo.
Si ninguna de estas imágenes le funciona, es posible usar una imagen personalizada aprovechando
la variable hetzner_installimage_custom_image_url
. La imagen se descargará desde
la URL dada y se utilizará durante el proceso de instalación.
Mantenedores
Licencia
Consulte el archivo LICENSE.md para más detalles.
Información del Autor
Este rol fue creado inicialmente por/derivado 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