ไดรเวอร์ Hetzner Cloud สำหรับ Molecule
ปลั๊กอินนี้ช่วยให้คุณใช้เซิร์ฟเวอร์ Hetzner Cloud ตามความต้องการสำหรับการทดสอบการรวมโมเลกุลของคุณ
$ 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
.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