Bilgi tabanı

İlk açılış işini cloud-init ile yapın

Siparişe bir user-data belgesi ekleyin ve örnek, kullanıcınız, anahtarınız, paketleriniz ve güvenlik duvarınız zaten yerinde olarak gelir.

Ne çalışır, ne zaman

Her Linux imajı cloud-init taşır. İlk açılışta siparişinize bağlı user-data'yı okur, bir kez uygular ve bir işaret yazar, böylece bir daha asla çalışmaz. Tüm bunlar siz daha bir şey yazamadan olur; mesele de budur: bir örneğin var olması ile yapılandırılması arasındaki pencere, sizin olmamanız gereken penceredir.

Sipariş vermeden önce belgeyi doğrulayın. Şema denetleyici, aksi takdirde size yeniden oluşturmaya mal olacak girinti hatasını yakalar:

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

Faydalı işleri yapan bir 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]

İlk satır ne bir yorum ne de isteğe bağlıdır. #cloud-config olmadan belge sessizce yok sayılır ve örnek, hiçbir şey eklememişsiniz gibi açılır.

AlmaLinux'ta groups: [sudo], groups: [wheel] olur ve yeniden başlatılacak hizmet sshd'dur. Diğer her şey aynıdır.

Çalışırken izlemek

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

Günlük, hangi aşamanın başarısız olduğunu söyler. cloud-init-output.log, runcmd girdilerinizin gerçek çıktısını tutar; sebebi orada bulacaksınız.

İçine sır koymayın

User-data, örneğin ömrü boyunca içeriden okunabilir kalır:

cloud-init query userdata

Oradaki her şey, root'a ulaşan herhangi bir işlem için ve diskin anlık görüntüsünü geri yükleyen herkes için kullanılabilir. Sırrı getiren bir kimlik bilgisi yüklemek için kullanın, sırrı taşımak için değil.

Örnek yakmadan test etmek

cloud-init clean --logs --reboot

Bu, işareti, günlükleri ve önbelleğe alınmış veri kaynağını kaldırır, ardından temiz bir ilk açılışa yeniden başlar. Bunu atılacak bir örnekte çalıştırın. Üretimde çalıştırın ve runcmd'nizin ikinci kez ne yaptığını keşfedersiniz; bu, nadiren ilk seferde yaptığı şeydir.

Nerede durmalı

cloud-init önyükleme içindir ve makinenin yarın hangi durumda olması gerektiği hakkında hiçbir fikri yoktur. Gerçek araçlarınızın devralabileceği noktaya ulaşmak için kullanın: bir anahtar, bir ağ, bir aracı. Orada durun. Altmış satır sağlıklı bir user-data'dır ve altı yüz satır, yakınsama yolu olmayan bir yapılandırma yönetim sistemidir.

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

Örnek kimliği, site kodu, ana bilgisayar adı ve açılışta atanan adreslerin tümü orada yaşar; bir betiğin, kendini bir yere kaydetmesi ve nerede uyandığını henüz bilmemesi gerektiğinde ihtiyaç duyduğu şey budur.

Hazır olduğunda

Bir şehir seç. Bir boyut seç. Kripto ile öde.

Kim olduğunuzla ilgili formlar yok, onay için insan bekleme yok, doğrulama için telefon görüşmesi yok. Ödeme onaylanır ve kimlik bilgileri gelen kutunuza düşer.