قاعدة المعرفة

قم بأعمال الإقلاع الأولى باستخدام cloud-init

اربط مستند بيانات المستخدم بالطلب وستصل النسخة مع المستخدم والمفتاح والحزم وجدار الحماية الخاصين بك جاهزة بالفعل.

ما يعمل، ومتى

تحمل كل صور لينكس cloud-init. عند أول تمهيد، يقرأ user-data المرفق بطلبك، ويطبقه مرة واحدة، ويكتب علامة بحيث لا يعمل مرة أخرى أبدًا. كل ذلك يحدث قبل أن تتمكن من كتابة أي شيء، وهذا هو المقصود: الفجوة بين وجود مثيل وتهيئته هي الفجوة التي يجب ألا تكون لديك.

تحقق من المستند قبل الطلب. يكتشف مدقق المخطط خطأ المسافة البادئة الذي كان سيكلفك إعادة بناء:

cloud-init schema --config-file user-data.yaml --annotate

user-data يفيد الأشياء

#cloud-config
hostname: edge-01
fqdn: edge-01.example.com
timezone: UTC

users:
  - name: deploy
    groups: [sudo]
    shell: /bin/bash
    sudo: "ALL=(ALL) NOPASSWD:ALL"
    ssh_authorized_keys:
      - ssh-ed25519 AAAAC3Nza... deploy@laptop

ssh_pwauth: false
disable_root: true

package_update: true
package_upgrade: true
packages:
  - nftables
  - vnstat
  - mtr-tiny

write_files:
  - path: /etc/ssh/sshd_config.d/10-local.conf
    permissions: "0644"
    content: |
      PermitRootLogin no
      PasswordAuthentication no
      AllowUsers deploy

runcmd:
  - [systemctl, enable, --now, nftables]
  - [systemctl, restart, ssh]

السطر الأول ليس تعليقًا ولا اختياريًا. بدون #cloud-config يتم تجاهل المستند بصمت ويتم تمهيد المثيل كما لو أنك لم ترفق شيئًا.

على AlmaLinux، يصبح groups: [sudo] هو groups: [wheel] والخدمة التي يجب إعادة تشغيلها هي sshd. كل شيء آخر متطابق.

مشاهدة عمله

cloud-init status --long
journalctl -u cloud-final -b
less /var/log/cloud-init-output.log

يخبرك السجل بأي مرحلة فشلت. cloud-init-output.log يحتوي على الإخراج الفعلي لإدخالات runcmd الخاصة بك، حيث سيكون السبب.

لا تضع أسرارًا فيه

يبقى user-data قابلًا للقراءة من داخل المثيل طوال حياته:

cloud-init query userdata

أي شيء هناك متاح لأي عملية تصل إلى الجذر، ولأي شخص يستعيد لقطة من القرص. استخدمه لتثبيت بيانات اعتماد تجلب السر، وليس لحمل السر.

الاختبار دون حرق مثيل

cloud-init clean --logs --reboot

يؤدي ذلك إلى إزالة العلامة والسجلات ومصدر البيانات المخزن مؤقتًا، ثم يعيد التشغيل إلى أول تمهيد نظيف. شغّله على نسخة مؤقتة. شغّله في الإنتاج وستكتشف ما يفعله runcmd الخاص بك في المرة الثانية، وهو نادرًا ما يكون ما فعله في المرة الأولى.

أين تتوقف

cloud-init مخصص للتمهيد الأولي ولا يعرف الحالة التي يجب أن يكون عليها الجهاز غدًا. استخدمه للوصول إلى النقطة التي يمكن لأدواتك الحقيقية أن تتولى فيها: مفتاح، شبكة، وكيل. توقف عند هذا الحد. ستون سطرًا هو user-data صحي، وستمائة سطر هو نظام إدارة تكوين بدون طريقة للالتقاء.

cloud-init query -a
cloud-init query ds.meta_data

معرف المثيل ورمز الموقع واسم المضيف والعناوين المعينة عند التمهيد كلها موجودة هناك، وهذا ما يحتاجه السجل عندما يتعين عليه تسجيل نفسه في مكان ما ولا يعرف بعد أين استيقظ.

جاهز عندما تكون

اختر مدينة. اختر الحجم. ادفع بالعملة الرقمية.

لا نماذج عن هويتك، ولا انتظار لموافقة بشرية، ولا مكالمة للتحقق من أي شيء. بمجرد تصفية الفاتورة، تصل بيانات الدخول إلى بريدك الإلكتروني.