nl2go.hetzner_installimage

Status budowy Codecov Ansible Galaxy Ostatnia wersja na GitHubie Pobrania Ansible Galaxy

Rola Ansible: Hetzner Installimage

Jest to rola Ansible, która zarządza cyklem instalacji obrazu systemu operacyjnego na serwerach Hetzner za pomocą Hetzner Robot API.

Wymagania wstępne

Wymagania

Nazwa Typ Wersja Lokalizacja
ansible-filter Pakiet Pythona 1.0.1 Węzeł kontrolny

Zmienne konfiguracyjne

Poniższe zmienne powinny być ustawione w pliku ansible.cfg

[defaults]
inventory = __TWOJA_INWENTARY__
forks = 1
host_key_checking = false
private_key_file = __TWÓJ_KLUCZ_PROWIZYJNY_HETZNER__
remote_user = root
roles_path = __ŚCIEŻKA_DO_TWOICH_ROLI_GALAXY__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r

Zmienne roli

Domyślny zestaw zmiennych definiuje obraz instalacyjny i najlepiej jest je nadpisać w group_vars/host_vars

hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: twoja-nazwa-serwera-tutaj
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

Rola automatycznie wykrywa wartości i konfigurację RAID. Skonfiguruje brak RAID, jeśli znajdzie jeden dysk, a RAID1, jeśli znajdzie dwa dyski. Automatyczną konfigurację RAID można nadpisać następującymi zmiennymi:

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

Można również ustawić tylko hetzner_installimage_install_raid i pozwolić na automatyczne wykrycie odpowiednich dysków.

Poniższe wymagane zmienne muszą być ustawione w group_vars/host_vars lub jako dodatkowe zmienne, aby umożliwić komunikację z webservice oraz wdrożenie klucza publicznego:

hetzner_installimage_webservice_username: username
hetzner_installimage_webservice_password: password

Poniższa zmienna może być opcjonalnie ustawiona, aby ustawić nazwę hosta w Hetzner Robot:

hetzner_installimage_server_name: __TWOJA_NAZWA_SERWERA__

Jeśli hetzner_installimage_key_fingerprints jest ustawiona, tylko wybrane klucze zostaną zainstalowane w trakcie procesu instalacji obrazu z Zarządzania Kluczami Hetzner Robot. W przeciwnym razie wszystkie istniejące klucze będą użyte.

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

Po pomyślnym wykonaniu playbooka rola tworzy plik flagi na odpowiednim serwerze w /etc/hetzner_installimage_provisioned.flag. Na początku rola sprawdza, czy ten plik istnieje na hoście, i pomija dalsze zadania. To zachowanie można pominąć, używając zmiennej hetzner_installimage_ignore_provisioned_flag:

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

Ustawienie tej zmiennej na true pominie sprawdzenie pliku flagi.

Przykładowy 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 }}"

Ważna uwaga: Rola musi być wykonywana z gather_facts: no, ponieważ hosty, na których chcesz zainstalować nowy system operacyjny, zazwyczaj nie mają skonfigurowanego dostępu SSH, a gather_facts bezpośrednio spróbuje uzyskać dostęp do hosta.

Zobacz więcej przykładów w playbookach różnych scenariuszy testowych w folderze testowym.

Rola poprosi użytkownika o potwierdzenie przed skasowaniem wszystkich danych dla wszystkich hostów w playbooku. To można pominąć, używając zmiennej hetzner_installimage_skip_confirmation ustawionej na yes.

Przykład dla dodatkowych zmiennych może wyglądać tak:

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

Kroki instalacji

  • Instalacja nowej maszyny
    1. Wejdź do swojego Hetzner Robot (robot.your-server.de)
    2. Zamów nowy serwer
    3. Wybierz system operacyjny
    4. Wybierz klucz do wdrożenia
    5. Uruchom rolę hetzner_installimage
  • Instalacja istniejącej maszyny
    1. Dodaj swój klucz do wdrożenia w Hetzner Robot przez robot.your-server.de
    2. Uruchom rolę hetzner_installimage
  • Instalacja już skonfigurowanej maszyny
    1. Wejdź do maszyny
    2. Usuń /etc/hetzner_installimage_provisioned.flag lub ustaw
    3. Uruchom rolę hetzner_installimage

Jeśli jesteś pewien, że przypadkowo nie usuniesz działającej maszyny, której już używasz, możesz bezpośrednio uruchomić rolę z dodatkową zmienną hetzner_installimage_ignore_provisioned_flag:

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

W ten sposób rola nie sprawdzi maszyny pod kątem istniejącego pliku /etc/hetzner_installimage_provisioned.flag, ale również nie zapobiegnie przypadkowemu usunięciu maszyny!

Dostępne obrazy

Obrazy systemów operacyjnych znajdują się w folderze /root/.oldroot/nfs/images/ wewnątrz systemu ratunkowego. Następujące obrazy są dostępne na 25 marca 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

Starsze obrazy znajdują się w folderze /root/.oldroot/nfs/images.old/ wewnątrz systemu ratunkowego. Rola sprawdzi, czy obraz istnieje najpierw w folderze z bieżącymi obrazami, a potem sprawdzi, czy obraz istnieje w folderze z starszymi obrazami i użyje go z miejsca, w którym został znaleziony jako pierwsze. Dzięki temu można utrzymać spójność systemu operacyjnego między hostami, nawet jeśli najnowszy obraz systemu operacyjnego zostanie zaktualizowany w pewnym momencie.

Jeśli żaden z tych obrazów Ci nie pasuje, możliwe jest użycie własnego obrazu, korzystając z zmiennej hetzner_installimage_custom_image_url. Obraz zostanie pobrany z podanego adresu URL i użyty w trakcie procesu instalacji.

Opiekunowie

Licencja

Zobacz plik LICENSE.md po szczegóły.

Informacje o autorze

Ta rola została początkowo stworzona lub forkowana z andrelohmann.

O projekcie

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

Zainstaluj
ansible-galaxy install nl2go.hetzner_installimage
Licencja
mit
Pobrania
18.8k
Właściciel