Driver Hetzner Cloud untuk Molekul.
Plugin ini memungkinkan Anda menggunakan server Hetzner Cloud sesuai permintaan untuk pengujian integrasi molekul Anda.
$ pip install molecule-hetznercloud
Proyek ini menganut Versi Semantik.
$ pip install --upgrade molecule-hetznercloud
molecule.yml
Anda, ganti nama driver molekul ( driver.name
) menjadi molecule_hetznercloud
: driver:
- name: hetznercloud
+ name: molecule_hetznercloud
molecule.yml
Anda, bidang nama volume ( platforms[].volumes[].name
) sekarang diperlukan. Jika bidang tersebut hilang, Anda HARUS menambahkannya: platforms:
- name: instance-1
image: debian-12
volumes:
- - size: 20
+ - name: volume-1
+ size: 20
Setiap nama sumber daya (server, volume, jaringan) diawali dengan hash (32 karakter) berdasarkan peran dan jalur skenario. Ini berarti Anda MUNGKIN menggunakan kembali nama yang sama (misalnya instance-1
) di seluruh skenario Anda. Nama sumber daya TIDAK BOLEH melebihi panjang maksimalnya, misalnya panjang maksimal nama server adalah 63 karakter, dengan awalan Anda hanya memiliki 31 karakter tersisa untuk nama Anda.
Dalam file molecule.yml
Anda, bidang jenis server platform ( platforms[].server_type
) sekarang defaultnya adalah cx22
. Jika Anda sudah menggunakan default, Anda MUNGKIN menghapus bidang tersebut:
platforms:
- name: instance-1
image: debian-12
- server_type: cx22
Untuk berkomunikasi dengan Hetzner Cloud API, Anda perlu mengekspos variabel lingkungan HCLOUD_TOKEN
. Cari tahu lebih lanjut tentang cara mendapatkan token Hetzner Cloud API di dokumentasi autentikasi.
$ export HCLOUD_TOKEN= " set_the_hcloud_token_here "
Kemudian atur skenario molekul baru menggunakan plugin driver.
$ molecule init scenario --driver-name molecule_hetznercloud
Peringatan
Dengan molekul 6, perintah molecule init scenario
menghentikan dukungan untuk konfigurasi yang disediakan driver. Jika Anda menggunakan molekul >=6, silakan salin contoh di bawah ini dan tempelkan di file molecule.yml
skenario Anda. Lihat penerapan ini untuk detailnya.
molecule/default/molecule.yml
Anda akan terlihat seperti berikut.
---
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
Catatan
networks.ip_range
penting untuk pembuatan. Jika Anda memiliki beberapa host, Anda hanya dapat mendefinisikannya satu kali.
Catatan
Anda dapat membuat daftar jenis server dan gambar yang tersedia menggunakan alat baris perintah 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
Kemudian uji peran Anda.
$ molecule test
Untuk memudahkan proses debug awal untuk memulai, ekspos juga variabel lingkungan berikut.
$ export MOLECULE_NO_LOG=False # not so verbose, helpful
$ export MOLECULE_DEBUG=True # very verbose, last ditch effort
Anda juga dapat menentukan namespace sumber daya kustom dengan mengekspos variabel lingkungan berikut, misalnya dalam alur kerja CI:
$ export RESOURCE_NAMESPACE=e121dc64ff615ccdfac71bb5c00296b9 # Ensure the value length is <= 32
Jalankan pengujian unit:
make test
Jalankan tes integrasi
export HCLOUD_TOKEN= " set_the_hcloud_token_here "
make integration
Proyek ini awalnya dikelola oleh @decentral1se. Setelah sekian lama mencari pengelola baru, proyek tersebut diarsipkan pada awal tahun 2023.
Pada bulan September 2023, kode tersebut telah ditulis ulang oleh @jooola dan proyek diaktifkan kembali untuk melanjutkan pengembangan.
Lisensi LGPLv3.