لقد أطلقنا مزود Terraform رسميًا للعمل مع Selectel. يتيح هذا المنتج للمستخدمين تنفيذ إدارة الموارد بشكل كامل من خلال منهجية البنية التحتية كرمز.
يدعم الموفر حاليًا إدارة موارد الخدمة "السحابة الخاصة الافتراضية" (يشار إليها فيما يلي باسم VPC). في المستقبل، نخطط لإضافة إدارة الموارد للخدمات الأخرى التي تقدمها Selectel.
كما تعلم بالفعل، فإن خدمة VPC مبنية على OpenStack. ومع ذلك، نظرًا لحقيقة أن OpenStack لا يوفر أدوات أصلية لخدمة السحابة العامة، فقد قمنا بتنفيذ الوظيفة المفقودة في مجموعة من واجهات برمجة التطبيقات الإضافية التي تعمل على تبسيط إدارة الكائنات المركبة المعقدة وتجعل العمل أكثر ملاءمة. بعض الوظائف المتوفرة في OpenStack مغلقة عن الاستخدام المباشر، ولكنها متاحة من خلال واجهة برمجة التطبيقات الخاصة بنا.
يتضمن موفر Selectel Terraform الآن القدرة على إدارة موارد VPC التالية:
المشاريع وحصصها؛
المستخدمين وأدوارهم ورموزهم؛
الشبكات الفرعية العامة، بما في ذلك الشبكات الإقليمية وVRRP؛
تراخيص البرمجيات.
يستخدم الموفر مكتبة Go العامة لدينا للعمل مع VPC API. كل من المكتبة والمزود نفسه مفتوحان المصدر، ويتم تطويرهما على Github:
لإدارة الموارد السحابية الأخرى، مثل الأجهزة الافتراضية والأقراص ومجموعات Kubernetes، يمكنك استخدام موفر OpenStack Terraform. الوثائق الرسمية لكلا المزودين متاحة على الروابط التالية:
في ملف vars.tf يتم وصف كافة المعلمات التي سيتم استخدامها عند استدعاء الوحدات. بعضها لديه قيم افتراضية، على سبيل المثال، سيتم إنشاء الخادم في المنطقة رو-3a بالتكوين التالي:
حجة تجاهل_التغييرات يسمح لك بتجاهل تغييرات السمات id للصورة المستخدمة لإنشاء الجهاز الظاهري. في خدمة VPC، يتم تحديث معظم الصور العامة تلقائيًا مرة واحدة في الأسبوع وفي نفس الوقت يتم تحديثها id يتغير أيضا. ويرجع ذلك إلى خصوصيات مكون OpenStack - Glance، حيث تعتبر الصور كيانات غير قابلة للتغيير.
إذا كنت تقوم بإنشاء أو تعديل خادم أو قرص موجود كوسيطة معرّف_صورة تستخدم id العامة، وبعد تحديث تلك الصورة، سيؤدي تشغيل بيان Terraform مرة أخرى إلى إعادة إنشاء الخادم أو القرص. باستخدام حجة تجاهل_التغييرات يسمح لك بتجنب مثل هذا الموقف.
ملحوظة: حجة تجاهل_التغييرات ظهرت في Terraform منذ وقت طويل: سحب #2525.
حجة تجاهل_تغيير_الحجم_تأكيد اللازمة لتغيير حجم القرص المحلي أو النوى أو ذاكرة الخادم بنجاح. يتم إجراء مثل هذه التغييرات من خلال مكون OpenStack Nova باستخدام الطلب تغيير حجم. نوفا الافتراضي بعد الطلب تغيير حجم يضع الخادم في الحالة Verified_resize وينتظر تأكيدًا إضافيًا من المستخدم. ومع ذلك، يمكن تغيير هذا السلوك بحيث لا تنتظر Nova إجراءات إضافية من المستخدم.
تسمح الوسيطة المحددة لـ Terraform بعدم انتظار الحالة Verified_resize للخادم وكن مستعدًا ليكون الخادم في حالة نشطة بعد تغيير معلماته. الوسيطة متاحة من الإصدار 1.10.0 لموفر OpenStack Terraform: سحب #422.
إنشاء الموارد
قبل تشغيل البيانات، يرجى ملاحظة أنه في مثالنا، تم إطلاق موفرين مختلفين، ويعتمد موفر OpenStack على موارد موفر Selectel، لأنه بدون إنشاء مستخدم في المشروع، من المستحيل إدارة الكائنات التابعة له . ولسوء الحظ، لنفس السبب، لا يمكننا تشغيل الأمر فحسب تطبيق terraform داخل مثالنا. علينا أولا أن نفعل تطبيق للوحدة النمطية project_with_user وبعد ذلك لكل شيء آخر.
ملاحظة: لم يتم حل هذه المشكلة بعد في Terraform، يمكنك متابعة المناقشة على Github على العدد رقم 2430 и العدد رقم 4149.
بعد تشغيل الأمر، سيعرض Terraform الموارد التي يريد إنشاءها ويطلب التأكيد:
Plan: 3 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
بمجرد إنشاء المشروع والمستخدم والدور، يمكنك البدء في إنشاء الموارد المتبقية:
يمكنك العمل مع الجهاز الظاهري الذي تم إنشاؤه عبر SSH باستخدام عنوان IP المحدد.
تحرير الموارد
بالإضافة إلى إنشاء الموارد من خلال Terraform، يمكن أيضًا تعديلها.
على سبيل المثال، دعونا نزيد عدد النوى والذاكرة لخادمنا عن طريق تغيير قيم المعلمات server_vcpus и server_ram_mb في ملف أمثلة/vpc/server_local_root_disk/main.tf:
في كلتا الحالتين، سوف تحتاج إلى تأكيد حذف كافة الكائنات:
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only 'yes' will be accepted to confirm.
Enter a value: yes
ينشئ هذا المثال مشروعًا، ومستخدمًا له دور في المشروع، ويرفع مجموعة Kubernetes واحدة. في الملف vars.tf يمكنك رؤية القيم الافتراضية، مثل عدد العقد وخصائصها وإصدار Kubernetes وما إلى ذلك.
لإنشاء موارد مشابهة للمثال الأول، سنبدأ أولاً بتهيئة الوحدات وإنشاء موارد الوحدة project_with_userثم إنشاء كل شيء آخر:
سنقوم بنقل إنشاء مجموعات Kubernetes وإدارتها من خلال مكون OpenStack Magnum. يمكنك معرفة المزيد حول كيفية العمل مع مجموعة في أحد مواقعنا المقالات السابقة، وكذلك في قاعدة المعرفة.
عند إعداد المجموعة، سيتم إنشاء الأقراص والأجهزة الافتراضية وسيتم تثبيت جميع المكونات الضرورية. يستغرق التحضير حوالي 4 دقائق، وخلال هذه الفترة سيعرض Terraform رسائل مثل:
module.kubernetes_cluster.openstack_containerinfra_cluster_v1.cluster_1: Still creating... (3m0s elapsed)
بمجرد اكتمال التثبيت، سيشير Terraform إلى أن المجموعة جاهزة ويعرض معرفها:
لإدارة مجموعة Kubernetes التي تم إنشاؤها من خلال الأداة المساعدة kubectl تحتاج إلى الحصول على ملف الوصول إلى الكتلة. للقيام بذلك، انتقل إلى المشروع الذي تم إنشاؤه من خلال Terraform في قائمة المشاريع الموجودة في حسابك:
بعد ذلك، اتبع الرابط مثل xxxxxx.selvpc.ruوالذي يظهر أسفل اسم المشروع:
للحصول على معلومات تسجيل الدخول، استخدم اسم المستخدم وكلمة المرور اللذين قمت بإنشائهما من خلال Terraform. إذا لم تكن قد خدعت vars.tf أو main.tf على سبيل المثال، سيكون لدى المستخدم الاسم tf_user. يجب عليك استخدام قيمة المتغير ككلمة المرور TF_VAR_user_password، والذي تم تحديده عند بدء التشغيل تطبيق terraform في وقت سابق.
داخل المشروع عليك الذهاب إلى علامة التبويب Kubernetes:
هذا هو المكان الذي توجد فيه المجموعة التي تم إنشاؤها عبر Terraform. تحميل الملف ل kubectl يمكنك في علامة التبويب "الوصول":
توجد تعليمات التثبيت في نفس علامة التبويب. kubectl واستخدام ما تم تنزيله الملف config.yaml.
بعد بدء تشغيل kubectl وتعيين متغير البيئة كوبيكونفيج يمكنك استخدام Kubernetes:
عندما يتغير عدد العقد، ستظل المجموعة متاحة. بعد إضافة عقدة عبر Terraform، يمكنك استخدامها دون تكوين إضافي:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tf-cluster-rz6nggvs4va7-master-0 Ready,SchedulingDisabled master 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-0 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-1 Ready <none> 8m v1.12.4
tf-cluster-rz6nggvs4va7-minion-2 Ready <none> 3m v1.12.4
اختتام
في هذه المقالة تعرفنا على الطرق الرئيسية للعمل بها "السحابة الخاصة الافتراضية" عبر تيرافورم. سنكون سعداء إذا استخدمت موفر Selectel Terraform الرسمي وقدمت تعليقاتك.
يمكن الإبلاغ عن أي أخطاء موجودة في موفر Selectel Terraform عبر قضايا جيثب.