nl2go.hetzner_installimage
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
- Posiadanie konta Hetzner Online GmbH.
- Skonfigurowane konto Hetzner Robot Webservice.
- Publiczny klucz SSH w Zarządzaniu Kluczami Hetzner Robot.
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
- Wejdź do swojego Hetzner Robot (robot.your-server.de)
- Zamów nowy serwer
- Wybierz system operacyjny
- Wybierz klucz do wdrożenia
- Uruchom rolę hetzner_installimage
- Instalacja istniejącej maszyny
- Dodaj swój klucz do wdrożenia w Hetzner Robot przez robot.your-server.de
- Uruchom rolę hetzner_installimage
- Instalacja już skonfigurowanej maszyny
- Wejdź do maszyny
- Usuń /etc/hetzner_installimage_provisioned.flag lub ustaw
- 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.
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