Apa yang berjalan, dan kapan
Setiap image Linux membawa cloud-init. Pada boot pertama ia membaca user-data yang dilampirkan ke pesanan Anda, menerapkannya sekali, dan menulis marker sehingga tidak pernah berjalan lagi. Semua itu terjadi sebelum Anda sempat mengetik apa pun, yang memang intinya: jendela antara instance ada dan dikonfigurasi adalah jendela yang seharusnya tidak Anda miliki.
Validasi dokumen sebelum Anda memesan. Pemeriksa skema menangkap kesalahan indentasi yang seharusnya membuat Anda membangun ulang:
cloud-init schema --config-file user-data.yaml --annotateUser-data yang melakukan hal-hal berguna
#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]Baris pertama bukan komentar ataupun opsional. Tanpa #cloud-config dokumen diabaikan dalam diam dan instance boot seolah-olah Anda tidak melampirkan apa pun.
Pada AlmaLinux, groups: [sudo] menjadi groups: [wheel] dan layanan yang perlu dimulai ulang adalah sshd. Yang lain identik.
Melihatnya bekerja
cloud-init status --long
journalctl -u cloud-final -b
less /var/log/cloud-init-output.logJournal memberi tahu Anda tahap mana yang gagal. cloud-init-output.log berisi keluaran sebenarnya dari entri runcmd Anda, yang merupakan tempat alasannya.
Jangan taruh rahasia di dalamnya
User-data tetap dapat dibaca dari dalam instance sepanjang hidupnya:
cloud-init query userdataApa pun di dalamnya tersedia untuk proses apa pun yang mencapai root, dan untuk siapa pun yang memulihkan snapshot disk. Gunakan untuk memasang kredensial yang mengambil rahasia, bukan untuk membawa rahasia itu.
Menguji tanpa membuang instance
cloud-init clean --logs --rebootItu menghapus marker, log, dan datasource yang di-cache, lalu reboot ke boot pertama yang baru. Jalankan di mesin sekali pakai. Jalankan di produksi dan Anda akan menemukan apa yang dilakukan runcmd Anda kedua kalinya, yang jarang sama dengan yang pertama.
Di mana berhenti
cloud-init untuk bootstrap dan tidak tahu keadaan mesin seharusnya besok. Gunakan untuk mencapai titik di mana alat sungguhan Anda dapat mengambil alih: kunci, jaringan, agen. Berhenti di sana. Enam puluh baris adalah user-data yang sehat, dan enam ratus baris adalah sistem manajemen konfigurasi tanpa cara untuk konvergen.
cloud-init query -a
cloud-init query ds.meta_dataID Instance, kode situs, hostname, dan alamat yang ditetapkan saat boot semuanya ada di dalamnya, yang dibutuhkan skrip ketika harus mendaftarkan dirinya di suatu tempat dan belum tahu di mana ia bangun.