hetzner_installimage
Ansible Роль: Установка образа Hetzner
Это роль Ansible, которая управляет жизненным циклом установки образов операционных систем на серверах Hetzner с использованием API Робота Hetzner.
Предварительные требования
- У вас должен быть действующий аккаунт Hetzner Online GmbH.
- Вам нужно настроить аккаунт веб-сервиса Hetzner Robot.
- Ваш публичный SSH-ключ должен быть добавлен в Управление ключами Hetzner Robot.
Требования
Название | Тип | Версия | Расположение |
---|---|---|---|
ansible-filter | Python пакет | 1.0.1 | Контрольный узел |
Переменные конфигурации
Рекомендуется установить следующие переменные в ваш файл ansible.cfg
[defaults]
inventory = __ВАШ_ИНВЕНТАРЬ__
forks = 1
host_key_checking = false
private_key_file = __ВАШ_КЛЮЧ_ПРОВИЗИРОВАНИЯ_HETZNER__
remote_user = root
roles_path = __ПУТЬ_К_ВАШИМ_РОЛЯМ_GALAXY__
[ssh_connection]
pipelining = True
scp_if_ssh = True
control_path = %(directory)s/%%h-%%r
Переменные роли
Набор переменных по умолчанию определяет установочный образ и лучше всего их переопределить в group_vars/host_vars
hetzner_installimage_install_bootloader: grub
hetzner_installimage_install_hostname: имя-вашего-сервера
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
Роль включает автоматическое определение значений RAID и их настройку. Если найден один диск, RAID не будет настроен, а если найдено два диска, будет настроен RAID1. Автоматическая конфигурация RAID может быть переопределена следующими переменными:
hetzner_installimage_install_drives:
- DRIVE1 /dev/sda
- DRIVE2 /dev/sdb
hetzner_installimage_install_raid:
- SWRAID 1
- SWRAIDLEVEL 0
Также можно установить только hetzner_installimage_install_raid
и позволить автоматическому определению найти соответствующие диски.
Следующие обязательные переменные необходимо установить в group_vars/host_vars или как дополнительные переменные для обеспечения связи с веб-сервисом и развертывания публичного ключа:
hetzner_installimage_webservice_username: имя_пользователя
hetzner_installimage_webservice_password: пароль
Следующую переменную можно установить дополнительно, чтобы задать имя хоста в Hetzner Robot:
hetzner_installimage_server_name: __ВАШЕ_ИМЯ_СЕРВЕРА__
Если установлено значение hetzner_installimage_key_fingerprints
, будут установлены только выбранные ключи во время процесса установки образа из Управления ключами Hetzner Robot. В противном случае будут выделены все существующие ключи.
hetzner_installimage_key_fingerprints:
- 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff
При успешном выполнении плейбука роль создаст файл-флажок на соответствующем сервере по адресу
/etc/hetzner_installimage_provisioned.flag
. В начале роли проверяется, существует ли этот файл на хосте, и если он существует, дальнейшие задачи пропускаются. Это поведение можно изменить, используя переменную hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
Установка этой переменной в значение true
пропустит проверку флажкового файла.
Пример плейбука
- 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 }}"
Важно: Роль должна выполняться с gather_facts: no
, так как хосты, на которых вы хотите установить новую операционную систему, обычно не имеют настроенного доступа по ssh, и gather_facts
попытается напрямую получить доступ к хосту.
Смотрите больше примеров в плейбуках различных тестовых сценариев в папке test.
Роль запросит подтверждение у пользователя на удаление всех данных для всех хостов в плейлисте. Это можно переопределить, установив переменную hetzner_installimage_skip_confirmation
в значение yes
.
Пример для дополнительных переменных может выглядеть так:
--extra-vars "{ hetzner_installimage_skip_confirmation : yes }"
Шаги установки
- Установка новой машины
- Зайдите в ваш Hetzner Robot (robot.your-server.de)
- Закажите новый сервер
- Выберите вашу операционную систему
- Выберите ваш ключ провизии
- Запустите роль hetzner_installimage
- Установка существующей машины
- Добавьте ваш ключ провизии в Hetzner Robot через robot.your-server.de
- Запустите роль hetzner_installimage
- Установка уже провизированной машины
- Зайдите в машину
- Удалите /etc/hetzner_installimage_provisioned.flag или установите
- Запустите роль hetzner_installimage
Если вы уверены, что случайно не удалите работающую машину, которая уже используется, вы можете напрямую запустить роль с дополнительной переменной hetzner_installimage_ignore_provisioned_flag
:
--extra-vars "{ hetzner_installimage_ignore_provisioned_flag: yes }"
Таким образом, роль не будет проверять машину на наличие существующего файла /etc/hetzner_installimage_provisioned.flag
, но также не предотвратит случайное удаление машины!
Доступные образы
Образы ОС находятся в папке /root/.oldroot/nfs/images/
внутри системы восстановления. На 25 марта 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
Старые образы находятся в папке /root/.oldroot/nfs/images.old/
внутри системы восстановления. Роль будет проверять, существует ли образ в папке с текущими образами, а затем проверит, существует ли образ в папке со старыми образами, и использовать его откуда был найден первым. Таким образом, можно поддерживать единообразие операционной системы на разных хостах, даже если в какой-то момент будет обновлен последний образ операционной системы.
Если ни один из этих образов вам не подходит, возможно использовать пользовательский образ, применив переменную hetzner_installimage_custom_image_url
. Образ будет загружен из указанного URL-адреса и использован в процессе установки.
Содержатели
Лицензия
Смотрите файл LICENSE.md для получения информации.
Информация об авторе
Эта роль была изначально создана/форкнута от 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/ansible-role-hetzner_installimage