Драйвер Hetzner Cloud для Molecule.
Этот плагин позволяет вам использовать облачные серверы Hetzner по требованию для тестов интеграции молекул.
$ pip install molecule-hetznercloud
Этот проект придерживается семантического управления версиями.
$ pip install --upgrade molecule-hetznercloud
molecule.yml
переименуйте имя драйвера молекулы ( driver.name
) в molecule_hetznercloud
: driver:
- name: hetznercloud
+ name: molecule_hetznercloud
molecule.yml
поле имени тома ( platforms[].volumes[].name
) теперь является обязательным. Если поле отсутствует, ОБЯЗАТЕЛЬНО добавьте его: platforms:
- name: instance-1
image: debian-12
volumes:
- - size: 20
+ - name: volume-1
+ size: 20
Каждому имени ресурса (серверов, томов, сетей) предшествует хэш (32 символа), основанный на роли и пути сценария. Это означает, что вы МОЖЕТЕ повторно использовать одни и те же имена (например, instance-1
) в своих сценариях. Имена ресурсов НЕ ДОЛЖНЫ превышать их максимальную длину, например, максимальная длина имени сервера составляет 63 символа, а с префиксом для вашего имени остается только 31 символ.
В файлах molecule.yml
поле типа сервера платформы ( platforms[].server_type
) теперь по умолчанию имеет значение cx22
. Если вы уже используете значение по умолчанию, вы МОЖЕТЕ удалить поле:
platforms:
- name: instance-1
image: debian-12
- server_type: cx22
Для связи с Hetzner Cloud API вам необходимо предоставить переменную среды HCLOUD_TOKEN
. Узнайте больше о том, как получить токен Hetzner Cloud API, в документации по аутентификации.
$ export HCLOUD_TOKEN= " set_the_hcloud_token_here "
Затем настройте новый сценарий молекулы, используя плагин драйвера.
$ molecule init scenario --driver-name molecule_hetznercloud
Предупреждение
В молекуле 6 команда molecule init scenario
прекратила поддержку конфигурации, предоставляемой драйвером. Если вы используете молекулу >=6, скопируйте приведенный ниже пример и вставьте его в файл сценария molecule.yml
. Подробности смотрите в этом коммите.
Тогда ваш molecule/default/molecule.yml
должен выглядеть следующим образом.
---
driver :
name : molecule_hetznercloud
platforms :
- # Name of the Server to create (must be unique per Project and a valid hostname as per RFC 1123).
# required
name : instance-1
# Name of the Image the Server is created from.
# required
image : debian-12
# Name of the Server type this Server should be created with.
# default: cx22
server_type : cx22
# Name of Location to create Server in (must not be used together with datacenter).
# default: omit
location : hel1
# Name of Datacenter to create Server in (must not be used together with location).
# default: omit
datacenter : null
# Cloud-Init user data to use during Server creation. This field is limited to 32KiB.
# default: omit
user_data : null
# List of volumes to attach to the server.
volumes :
- # Name of the volume.
# required
name : volume-1
# Size of the Volume in GB.
# default: 10
size : 10
# Dictionary of private networks the server should be attached to.
networks :
# Name of the network
network-1 :
# IP range of the whole network which must span all included subnets. Must be one of the private IPv4 ranges of RFC1918.
# If multiple hosts using the same network, you may only define it once.
# required
ip_range : 10.0.0.0/16
subnet :
# IP to assign to the server.
# required
ip : 10.0.0.1/24
# Type of subnetwork.
# default: cloud
type : cloud
# Name of network zone.
# default: eu-central
network_zone : eu-central
network-2 :
ip_range : 10.1.0.0/16
subnet :
ip : 10.1.0.1/24
Примечание
networks.ip_range
важен для создания. Если у вас несколько хостов, вы можете определить его только один раз.
Примечание
Вы можете перечислить типы серверов и доступные изображения с помощью инструмента командной строки hcloud
:
# List server types
$ hcloud server-type list --sort name
# List images for the x86 architecture
$ hcloud image list --type system --architecture x86 --sort name
Затем проверьте свою роль.
$ molecule test
Чтобы облегчить первоначальную отладку для начала работы, также предоставьте следующие переменные среды.
$ export MOLECULE_NO_LOG=False # not so verbose, helpful
$ export MOLECULE_DEBUG=True # very verbose, last ditch effort
Вы также можете определить собственное пространство имен ресурсов, открыв следующие переменные среды, например, в рабочих процессах CI:
$ export RESOURCE_NAMESPACE=e121dc64ff615ccdfac71bb5c00296b9 # Ensure the value length is <= 32
Запустите модульные тесты:
make test
Запустите интеграционные тесты
export HCLOUD_TOKEN= " set_the_hcloud_token_here "
make integration
Первоначально проект поддерживал @decentral1se. После длительного периода поиска новых сопровождающих проект был заархивирован в начале 2023 года.
В сентябре 2023 года код был переписан @jooola, и проект был возобновлен для продолжения разработки.
Лицензия LGPLv3.