ما يعمل، ومتى
تحمل كل صور لينكس cloud-init. عند أول تمهيد، يقرأ user-data المرفق بطلبك، ويطبقه مرة واحدة، ويكتب علامة بحيث لا يعمل مرة أخرى أبدًا. كل ذلك يحدث قبل أن تتمكن من كتابة أي شيء، وهذا هو المقصود: الفجوة بين وجود مثيل وتهيئته هي الفجوة التي يجب ألا تكون لديك.
تحقق من المستند قبل الطلب. يكتشف مدقق المخطط خطأ المسافة البادئة الذي كان سيكلفك إعادة بناء:
cloud-init schema --config-file user-data.yaml --annotateuser-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معرف المثيل ورمز الموقع واسم المضيف والعناوين المعينة عند التمهيد كلها موجودة هناك، وهذا ما يحتاجه السجل عندما يتعين عليه تسجيل نفسه في مكان ما ولا يعرف بعد أين استيقظ.