Molecule 的 Hetzner Cloud 驅動程式。
該插件允許您使用按需 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
命令放棄了對驅動程式提供的配置的支援。如果您使用的 molecular >=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年9月,程式碼已被@jooola重寫,專案重新啟動繼續開發。
LGPLv3 授權。