hetzner_installimage

Статус сборки Codecov Ansible Galaxy Тег GitHub (последний по дате) Скачивания Ansible Galaxy

Ansible Роль: Установка образа Hetzner

Это роль Ansible, которая управляет жизненным циклом установки образов операционных систем на серверах Hetzner с использованием API Робота Hetzner.

Предварительные требования

Требования

Название Тип Версия Расположение
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 }"

Шаги установки

  • Установка новой машины
    1. Зайдите в ваш Hetzner Robot (robot.your-server.de)
    2. Закажите новый сервер
    3. Выберите вашу операционную систему
    4. Выберите ваш ключ провизии
    5. Запустите роль hetzner_installimage
  • Установка существующей машины
    1. Добавьте ваш ключ провизии в Hetzner Robot через robot.your-server.de
    2. Запустите роль hetzner_installimage
  • Установка уже провизированной машины
    1. Зайдите в машину
    2. Удалите /etc/hetzner_installimage_provisioned.flag или установите
    3. Запустите роль 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
Лицензия
mit
Загрузки
18348
Владелец