Ein Hetzner Cloud-Treiber für Molecule.
Mit diesem Plugin können Sie On-Demand-Hetzner-Cloud-Server für Ihre Molekülintegrationstests verwenden.
$ pip install molecule-hetznercloud
Dieses Projekt folgt der semantischen Versionierung.
$ pip install --upgrade molecule-hetznercloud
molecule.yml
-Dateien den Namen des Molekültreibers ( driver.name
) in molecule_hetznercloud
um: driver:
- name: hetznercloud
+ name: molecule_hetznercloud
molecule.yml
-Dateien ist jetzt das Feld „Volume-Name“ ( platforms[].volumes[].name
) erforderlich. Wenn das Feld fehlt, MÜSSEN Sie es hinzufügen: platforms:
- name: instance-1
image: debian-12
volumes:
- - size: 20
+ - name: volume-1
+ size: 20
Jedem Ressourcennamen (Server, Volumes, Netzwerke) wird ein Hash (32 Zeichen) vorangestellt, der auf der Rolle und dem Szenariopfad basiert. Das bedeutet, dass Sie in Ihren Szenarien möglicherweise dieselben Namen (z. B. „ instance-1
“) wiederverwenden. Ressourcennamen DÜRFEN ihre maximale Länge nicht überschreiten, zum Beispiel beträgt die maximale Länge des Servernamens 63 Zeichen, mit dem Präfix haben Sie nur noch 31 Zeichen für Ihren Namen übrig.
In Ihren molecule.yml
-Dateien ist das Feld „Plattformservertyp“ ( platforms[].server_type
) jetzt standardmäßig auf cx22
eingestellt. Wenn Sie bereits die Standardeinstellung verwenden, können Sie das Feld möglicherweise entfernen:
platforms:
- name: instance-1
image: debian-12
- server_type: cx22
Um mit der Hetzner Cloud API zu kommunizieren, müssen Sie eine Umgebungsvariable HCLOUD_TOKEN
verfügbar machen. Weitere Informationen zum Erhalt eines Hetzner Cloud API-Tokens finden Sie in der Authentifizierungsdokumentation.
$ export HCLOUD_TOKEN= " set_the_hcloud_token_here "
Richten Sie dann mit dem Treiber-Plugin ein neues Molekülszenario ein.
$ molecule init scenario --driver-name molecule_hetznercloud
Warnung
Mit Molecule 6 hat der molecule init scenario
-Befehl die Unterstützung für die vom Treiber bereitgestellte Konfiguration eingestellt. Wenn Sie Molekül >=6 verwenden, kopieren Sie bitte das folgende Beispiel und fügen Sie es in Ihre Szenario- molecule.yml
Datei ein. Weitere Informationen finden Sie in diesem Commit.
Ihre molecule/default/molecule.yml
sollte dann wie folgt aussehen.
---
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
Notiz
Für die Erstellung ist der networks.ip_range
wichtig. Wenn Sie mehrere Hosts haben, dürfen Sie diese nur einmal definieren.
Notiz
Sie können die Servertypen und verfügbaren Bilder mit dem hcloud
-Befehlszeilentool auflisten:
# List server types
$ hcloud server-type list --sort name
# List images for the x86 architecture
$ hcloud image list --type system --architecture x86 --sort name
Dann testen Sie Ihre Rolle.
$ molecule test
Um das anfängliche Debuggen für den Einstieg zu erleichtern, stellen Sie auch die folgenden Umgebungsvariablen bereit.
$ export MOLECULE_NO_LOG=False # not so verbose, helpful
$ export MOLECULE_DEBUG=True # very verbose, last ditch effort
Sie können auch einen benutzerdefinierten Ressourcen-Namespace definieren, indem Sie die folgenden Umgebungsvariablen verfügbar machen, beispielsweise in CI-Workflows:
$ export RESOURCE_NAMESPACE=e121dc64ff615ccdfac71bb5c00296b9 # Ensure the value length is <= 32
Führen Sie Unit-Tests durch:
make test
Führen Sie Integrationstests durch
export HCLOUD_TOKEN= " set_the_hcloud_token_here "
make integration
Das Projekt wurde ursprünglich von @decentral1se betreut. Nach langer Suche nach neuen Betreuern wurde das Projekt Anfang 2023 archiviert.
Im September 2023 wurde der Code von @jooola neu geschrieben und das Projekt wurde reaktiviert, um die Entwicklung fortzusetzen.
Die LGPLv3-Lizenz.