برنامج تشغيل 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
بالشكل التالي.
---
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.