أعلنا هذا الشهر عن شراكة مثيرة للغاية مع Canonical، الشركة المطورة لنظام Ubuntu. وقبل كل شيء، فإن العنصر الأساسي في هذه الشراكة هو تقديم الدعم الكامل لـ CloudInit بين سحابة CloudSigma و Ubuntu.
مقدمة إلى CloudInit
إذا لم تكن على دراية بـ CloudInit، فإنها المعيار الصناعي لتهيئة خوادم السحاب. للتوضيح، إذا كنت تستخدم DSL فمن الممكن تنفيذ المهام بسهولة عند التشغيل الأول. وتجدر الإشارة أيضًا إلى أن CloudInit لا يقتصر على Ubuntu. ستجد اليوم دعمًا لـ CloudInit في معظم توزيعات Linux الحديثة (ولكن السحب المدعومة ستختلف).
قبل أن نبدأ مع CloudInit، من المهم فهم أين يتناسب CloudInit في نظام التهيئة البيئي. في حين أنه من الممكن تشغيل CloudInit كنظام تهيئة مستقل، إلا أنه من الشائع أكثر استخدامه بالاقتران مع نظام تهيئة آخر، مثل Ansible أو Chef أو Puppet أو Salt. في هذه الحالة، ستستخدم ببساطة CloudInit لإيصال خادمك الجديد إلى حالة يمكن لنظام التهيئة تولي زمام الأمور فيها. شخصيًا، غالبًا ما أستخدم CloudInit بالاشتراك مع Ansible.
استخدام CloudInit على CloudSigma
استخدام CloudInit على CloudSigma مباشر وبسيط للغاية.
لاستخدام CloudInit على خادم Ubuntu 14.04، اتبع الخطوات التالية:
-
- قم بنسخ القرص “Ubuntu 14.04 Cloud Image” من المتجر (حالياً هو القرص الوحيد المدعوم بالكامل مع CloudInit). تأكد من تغيير حجم القرص المستنسخ إلى الحجم المطلوب وسيقوم تلقائيًا بتوسيع نظام الملفات عند التشغيل الأول.
- أنشئ خادمًا جديدًا.
- بمجرد إنشاء الخادم، سترى زر CloudInit أسفل حالة الخادم.

-
- عند النقر فوق هذا الزر، ستظهر لك نافذة الحوار التالية.

- ما عليك سوى لصق بيانات CloudInit الخاصة بك هنا، والضغط على ‘تنشيط’.
- يمكنك تشغيل خادمك وسيعمل البرنامج النصي عند التشغيل الأول.
تثبيت مفتاح (مفاتيح) SSH باستخدام CloudInit
الآن بعد أن عرفت كيفية استخدام CloudInit على سحابتنا، فلنضع هذه المعرفة المكتشفة حديثًا قيد الاستخدام لتثبيت مفتاحي SSH. مفتاحا SSH العامان الخياليان اللذان سنستخدمهما هما ‘ssh-rsa AAA[…] user1@host‘ و ‘ssh-rsa AAA[…] user2@host‘. (لمعرفة المزيد حول إنشاء مفاتيح SSH، يرجى إلقاء نظرة على هذه الصفحة على Github.)
في صور سحابة Ubuntu، اسم المستخدم الافتراضي هو ‘ubuntu’. وبالتالي، سيتم تثبيت المفاتيح في حساب المستخدم هذا.
سيبدو تكوين CloudInit لهذا كالتالي:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
[/ruby]
يرجى ملاحظة أن المسافات مهمة. هناك مسافتان قبل ‘-‘. إذا وضعت مسافة واحدة فقط، فقد لا يقرأها الخادم.
بمجرد حفظ تكوين CloudInit وتشغيل الخادم، يجب أن تكون قادرًا على الاتصال بالخادم عبر SSH باستخدام المستخدم ‘ubuntu’:
[bash light="true"]
$ ssh ubuntu@aaa.bbb.ccc.ddd
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-36-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Sun Oct 19 21:51:54 UTC 2014
System load: 0.0 Users logged in: 0
Usage of /: 77.4% of 39.34GB IP address for eth0: aaa.bbb.ccc.ddd
Memory usage: 26%
Swap usage: 0%
Processes: 113
Graph this data and manage this system at:
https://landscape.canonical.com/
Get cloud support with Ubuntu Advantage Cloud Guest:
http://www.ubuntu.com/business/services/cloud
0 packages can be updated.
0 updates are security updates.
[...]
ubuntu@myserver:~$
[/bash]
تثبيت تحديثات النظام باستخدام CloudInit
شيء آخر مفيد للغاية يمكنك إنجازه بسهولة باستخدام CloudInit هو تشغيل تحديثات النظام عند التشغيل الأول. على الرغم من أننا نقوم بتحديث صور الأقراص الخاصة بنا بشكل متكرر، إلا أنه لا يزال من الجيد اتخاذ احتياطات إضافية لضمان تحديث أنظمتك.
لتثبيت تحديثات النظام عند التشغيل الأول، أضف ما يلي:
[ruby]
#cloud-config
apt_update: true
apt_upgrade: true
[/ruby]
قد تلاحظ أيضًا أن هناك خيارًا مشابهًا يسمى ‘package_update,’ وهو اسم مستعار محايد للتوزيعة لـ ‘apt_update’ على Ubuntu.
أيضًا، سيتم تعيين ‘apt_update’ إلى true افتراضيًا إذا تم تعيين ‘packages’ (أدناه)، ولكنني أضفته أعلاه لجعله أكثر وضوحًا.
تثبيت الحزم باستخدام CloudInit
أحد الأجزاء الأساسية لتهيئة الأنظمة هو القدرة على تثبيت الحزم عند بدء التشغيل. لحسن الحظ، يسهل CloudInit هذا الأمر أيضًا. كل ما نحتاج إلى فعله هو تحديد قائمة بالحزم التي نريد تثبيتها تحت ‘packages.’ على سبيل المثال، إذا أردنا تثبيت ‘python-pip,’ و ‘fail2ban’ و ‘vim’، فسيبدو الأمر كما يلي:
[ruby]
#cloud-config
packages:
- python-pip
- fail2ban
- vim
[/ruby]
مرة أخرى، يرجى ملاحظة أن المسافات مهمة. هناك مسافتان قبل ‘-‘.
تعيين اسم المضيف باستخدام CloudInit
عند إعداد خادم جديد، قد ترغب أيضًا في تعيين اسم المضيف له.
[ruby]
#cloud-config
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
[/ruby]
تشغيل الأوامر عند بدء التشغيل الأول باستخدام CloudInit
بافتراض أنك تقوم بشيء أكثر تعقيدًا مع خوادمك، فمن المحتمل أن يكون لديك بعض الأوامر التي تحتاج إلى تشغيلها عند بدء التشغيل الأول.
هنا يأتي دور ‘runcmd’ و ‘bootcmd’. يتيح لك كلاهما تشغيل الأوامر عند بدء التشغيل الأول. الفرق هو أن ‘bootcmd’ يتم تنفيذه في مرحلة مبكرة من عملية بدء التشغيل مقارنة بـ ‘runcmd.’
لاستخدام أي من هذين الأمرين، أضف ما يلي إلى CloudInit الخاص بك:
[ruby]
#cloud-config
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
استخدام CloudInit مع مدير التكوين
أخيرًا، إذا كنت مستخدمًا أكثر خبرة للسحابة، فمن المرجح أنك تستخدم أحد مديري التكوين. لحسن الحظ، يأتي CloudInit مستعدًا لذلك. ومع ذلك، فهو موضوع معقد إلى حد ما لتغطيته، نظرًا للمتغيرات الكثيرة.
لذا، إليك بعض الأمثلة التي من شأنها أن توجهك في الاتجاه الصحيح:
كيفية ربط عناصر متعددة معًا
بالنسبة لأولئك الذين ليسوا على دراية بالملفات ذات نمط YAML، قد لا يكون من الواضح كيفية ربط عناصر CloudInit المتعددة معًا. ومع ذلك، فإن الأمر بسيط. في السطر الأول، تحتاج إلى ‘#cloud-config‘. بعد ذلك، ما عليك سوى إضافة التكوين الخاص بك.
على سبيل المثال، دمج جميع الأمثلة المذكورة أعلاه في تكوين واحد سيبدو كما يلي:
[ruby]
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAA[...] user1@host
- ssh-rsa AAA[...] user2@host
hostname: mynode
fqdn: mynode.example.com
manage_etc_hosts: true
apt_update: true
apt_upgrade: true
packages:
- python-pip
- fail2ban
- vim
runcmd:
- ls -l /root
- [wget, "https://news.ycombinator.com", -O, /tmp/index.html]
[/ruby]
موارد إضافية
لقد قمنا حقًا بخدش السطح فقط لما يمكن لـ CloudInit فعله في هذه المقالة. هناك الكثير من الأشياء الأخرى التي يمكنك القيام بها أيضًا للتعلم، مثل إنشاء المستخدمين والمجموعات, كتابة الملفات على القرص و استدعاء عناوين URL عند الانتهاء (لإخطار الأنظمة الأخرى).
إذا كنت تريد معرفة المزيد عن CloudInit، فإنني أوصي بالمصادر التالية:
- وثائق CloudInit الرسمية
- دليل CloudInit الخاص بـ Ubuntu
- وثائق CloudInit الخاصة بـ RedHat
- مكتبة أمثلة CloudInit الخاصة بـ Ubuntu
التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.