Aracılığıyla paylaş


Azure'da sanal makineler için cloud-init desteği

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Bu makalede, Azure'da sağlama zamanında bir sanal makine (VM) veya Sanal Makine Ölçek Kümeleri yapılandırmaya yönelik cloud-init desteği açıklanmaktadır. Bu cloud-init yapılandırmaları, kaynaklar Azure tarafından sağlandıktan sonra ilk önyüklemede çalıştırılır.

VM Sağlama, Azure'ın VM Oluşturma parametre değerlerinizi (hostname, kullanıcı adı ve parola gibi) devretmesi ve bunları VM önyüklenirken kullanılabilir hale getirme işlemidir. Bir 'sağlama aracısı' bu değerleri kullanır, VM'yi yapılandıracak ve tamamlandığında raporlayacaktır.

Azure iki sağlama aracısını destekler: cloud-init ve Azure Linux Aracısı (WALA).

cloud-init'e genel bakış

cloud-init, Linux sanal makinesini ilk kez önyüklendiğinde özelleştirmek için yaygın olarak kullanılan bir yaklaşımdır. cloud-init’i paket yükleme, dosyalara yazma ve kullanıcılar ile güvenliği yapılandırma işlemleri için kullanabilirsiniz. cloud-init ilk önyükleme işlemi sırasında çağrıldığından, yapılandırmanızı uygulamak için ek adım veya gerekli aracılar yoktur. Dosyalarınızı veya diğer girişlerinizi düzgün biçimlendirme #cloud-config hakkında daha fazla bilgi öğrenmek için cloud-init belge sitesine bakın. #cloud-config dosyalar, base64'te kodlanmış metin dosyalarıdır.

cloud-init, dağıtımlar arasında da çalışır. Örneğin, bir paket yüklemek için apt-get install veya yum install kullanmazsınız. Bunun yerine, yüklenecek paketlerin listesini tanımlayabilirsiniz. cloud-init, seçtiğiniz dağıtım için otomatik olarak yerel paket yönetim aracını kullanır.

Azure Market cloud-init özellikli görüntülerin kullanılabilir olması için onaylı Linux dağıtım iş ortaklarımızla etkin bir şekilde çalışıyoruz. Bu görüntüler, bulut başlatma dağıtımlarınızın ve yapılandırmalarınızın VM'ler ve sanal makine ölçek kümeleri ile sorunsuz çalışmasını sağlar. Başlangıçta Azure'daki işletim sistemiyle buluta giriş işlevlerini sağlamak için onaylı Linux dağıtım iş ortakları ve yukarı akış ile işbirliği yapıyoruz, ardından paketler güncelleştiriliyor ve dağıtım paketi depolarında herkese açık hale getiriliyor.

Cloud-init'i Azure'da desteklenen Linux dağıtımları için kullanılabilir hale getirmek için paket desteği ve ardından görüntü desteği olmak üzere iki aşama vardır:

  • 'cloud-init paket desteği' belgelerinde, Azure'da hangi cloud-init paketlerinin desteklendiği veya önizleme aşamasında olduğu belirtilmiştir, böylece bu paketleri özel bir görüntüdeki işletim sistemiyle kullanabilirsiniz.
  • 'cloud-init hazır görüntü' belgeliyor, bu görüntü zaten cloud-init kullanacak şekilde yapılandırılmış mı.

Canonical

Yayımcı / Sürüm Teklif Stok Kod Numarası Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
Canonical 24.04 UbuntuServer 24.04-LTS en yeni evet evet
Canonical 22.04 Ubuntu Sunucusu 22.04-LTS en yeni evet evet
Kurallı 20.04 UbuntuServer 20.04-LTS en yeni evet evet

RHEL (Red Hat Enterprise Linux)

Yayımcı / Sürüm Teklif Stok Kod Numarası Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
RedHat 7 RHEL (Red Hat Enterprise Linux) 7.7, 7.8, 7_9 en yeni evet evet
RedHat 8 RHEL (Red Hat Enterprise Linux) 8.1, 8.2, 8_3, 8_4 en yeni evet evet
RedHat 9 RHEL (Red Hat Enterprise Linux) 9_0, 9_1 en yeni evet evet
  • RhEL 7 (sürüm 7.7) ve RHEL 8'den (sürüm 8.1) itibaren hem 1. Nesil hem de 2. Nesil görüntüleri dahil olmak üzere diğer tüm RedHat SKU'ları cloud-init kullanılarak sağlanır. Cloud-init, RHEL 6'da desteklenmez.

Oracle

Yayımcı / Sürüm Teklif Stok Kod Numarası Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
Oracle 7 Oracle Linux 77, 78, ol79 en yeni evet evet
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm en yeni evet evet
  • Oracle 7 (sürüm 7.7) ve Oracle 8 'den (sürüm 8.1) başlayarak hem 1. Nesil hem de 2. Nesil görüntüleri dahil diğer tüm Oracle SKU'ları cloud-init kullanılarak sağlanır.

SUSE SLES

Yayımcı / Sürüm Teklif Stok Kod Numarası Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 en yeni evet evet
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 en yeni evet evet

Debian

Yayımcı / Sürüm Teklif Stok Kod Numarası Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.1015 evet evet
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.991 evet evet
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.999 evet evet

Azure Stack şu anda cloud-init özellikli görüntülerin sağlanmasını desteklemektedir.

cloud-init ile Linux Aracısı (WALA) arasındaki fark nedir?

WALA, VM'leri sağlamak ve yapılandırmak ve Azure uzantılarını işlemek için kullanılan Azure platformuna özgü bir aracıdır.

Mevcut cloud-init müşterilerinin mevcut cloud-init betiklerini kullanmasına veya yeni müşterilerin zengin cloud-init yapılandırma işlevinden yararlanmasına olanak sağlamak için VM'leri Linux Aracısı yerine cloud-init kullanacak şekilde yapılandırma görevini geliştiriyoruz. Linux sistemlerini yapılandırmak için cloud-init betiklerine yönelik mevcut yatırımlarınız varsa, cloud-init'in bunları işlemesini etkinleştirmek için ek ayar gerekmez .

cloud-init, Azure uzantılarını işleyemez, bu nedenle uzantıları işlemek için görüntüde WALA gereklidir ancak sağlama kodunun devre dışı bırakılması gerekir. Cloud-init tarafından sağlanana dönüştürülen onaylı Linux dağıtım görüntüleri için WALA yüklüdür ve doğru şekilde kurulur.

VM oluştururken, Azure CLI --custom-data anahtarını sağlama sırasında eklemezseniz cloud-init veya WALA, VM'yi sağlamak ve dağıtımı varsayılan değerlerle tamamlamak için gereken en düşük VM sağlama parametrelerini kullanır. Cloud-init yapılandırmasına --custom-data anahtarı ile başvurursanız, özel verilerinizde yer alan her şey VM başlatıldığında cloud-init tarafından kullanılabilir.

VM'lere uygulanan cloud-init yapılandırmalarında zaman kısıtlamaları yoktur ve zaman aşımı nedeniyle dağıtımın başarısız olmasına neden olmaz. WALA için bu durum geçerli değildir. WALA varsayılanlarının özel verileri işleyecek şekilde değiştirirseniz, 40 dakikalık toplam VM sağlama süresini aşamaz; bu durumda VM Oluşturma işlemi başarısız olur.

UDF sürücüsü olmadan cloud-init VM sağlama

cloud-init 21.2 sürümünden başlayarak cloud-init kullanarak Azure'da UDF sürücüsü olmayan bir VM sağlayabilirsiniz. Görüntüde bir UDF sürücüsü yoksa cloud-init, VM'yi sağlamak için Azure Örnek Meta Veri Hizmeti'nde bulunan meta verileri kullanır. Bu seçenek yalnızca SSH anahtarı ve kullanıcı verileri için çalışır. Sağlama sırasında vm'ye parola veya özel veri geçirmek için bir UDF sürücüsü kullanmanız gerekir.

Cloud-init özellikli bir Sanal Makine oluşturma

Cloud-init özellikli bir sanal makine dağıtmak, dağıtım sırasında cloud-init destekli bir dağıtıma başvurmak kadar basittir. Linux dağıtım bakımcıları, cloud-init'i Azure'da yayımlanan temel görüntülerle etkinleştirip tümleştirmeyi seçmelidir. Dağıtmak istediğiniz görüntünün cloud-init özelliğinin etkinleştirildiğini onayladıktan sonra, görüntüyü dağıtmak için Azure CLI'yı kullanabilirsiniz.

Bu görüntüyü dağıtmanın ilk adımı, az group create komutuyla bir kaynak grubu oluşturmaktır . Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.

Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur.

az group create --name myResourceGroup --location eastus

Sonraki adım, geçerli kabuğunuzda cloud-init.txt adlı bir dosya oluşturmak ve aşağıdaki yapılandırmayı yapıştırmaktır. Bu örnekte, dosyayı yerel makinenizde değil Cloud Shell'de oluşturun. İstediğiniz herhangi bir düzenleyiciyi kullanabilirsiniz. Dosyayı oluşturmak ve kullanılabilir düzenleyicilerin listesini görmek için sensible-editor cloud-init.txt girin. Seçtiğiniz düzenleyiciyi kullanın. Bazı tipik seçenekler nano, vim veya ed'dir. Başta birinci satır olmak üzere cloud-init dosyasının tamamının doğru bir şekilde kopyalandığından emin olun:

SLES Ubuntu RHEL (Red Hat Enterprise Linux)
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Uyarı

cloud-init birden çok giriş türüne sahiptir; cloud-init, girişi nasıl işlemesi gerektiğini belirtmek için customData/userData'nın ilk satırını kullanır, örneğin #cloud-config içeriğin cloud-init yapılandırması olarak işlenmesi gerektiğini gösterir.

Dosyadan çıkın ve dosyayı düzenleyiciye göre kaydedin. Çıkışta dosya adını doğrulayın.

Son adım, az vm create komutuyla bir VM oluşturmaktır .

Aşağıdaki örnek, ubuntu2204 adında bir VM oluşturur ve (eğer yoksa) varsayılan anahtar konumunda SSH anahtarları oluşturur. Belirli bir anahtar kümesini kullanmak için --ssh-key-value seçeneğini kullanın. --custom-data parametresini kullanarak cloud-init yapılandırma dosyanızı iletin. Dosyayı mevcut çalışma dizininizin dışına kaydettiyseniz cloud-init.txt yapılandırmasının tam yolunu belirtin.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

VM oluşturulduğunda, Azure CLI dağıtımınıza özgü bilgileri gösterir. publicIpAddress değerini not edin. Bu adres, VM’ye erişmek için kullanılır. VM'nin oluşturulması, paketlerin yüklenmesi ve uygulamanın başlatılması biraz zaman alır. Azure CLI sizi komut istemine geri döndürdükten sonra çalışmaya devam eden arka plan görevleri vardır. VM'de SSH oluşturabilir ve sorun giderme bölümünde açıklanan adımları kullanarak cloud-init günlüklerini görüntüleyebilirsiniz.

Arm şablonunda parametreleri geçirerek cloud-init özellikli bir VM de dağıtabilirsiniz.

Cloud-init sorunlarını giderme

VM sağlandıktan sonra cloud-init, VM'yi yapılandırmak için tanımlanan --custom-data tüm modüller ve betikler üzerinde çalışır. Yapılandırmadaki hataları veya eksikleri gidermeniz gerekiyorsa, /var/log/cloud-init.logdisk_setupmodül adını (runcmdveya örneğin) aramanız gerekir.

Uyarı

Her modül hatası önemli bir cloud-init genel yapılandırma hatasıyla sonuçlanmaz. Örneğin, runcmd modülünü kullanarak, betik başarısız olursa bile, runcmd modülü yürütüldüğü için cloud-init yine de sağlamanın başarılı olduğunu bildirir.

Cloud-init günlüğü hakkında daha fazla bilgi için cloud-init belgelerine bakın

Telemetri

cloud-init, ürünlerimizin ve hizmetlerimizin geliştirilmesine yardımcı olmak için kullanım verilerini toplar ve Microsoft'a gönderir. Telemetri yalnızca sağlama işlemi (VM'nin ilk önyüklemesi) sırasında toplanır. Toplanan veriler sağlama hatalarını araştırmamıza ve performans ile güvenilirliği izlememize yardımcı olur. Toplanan veriler hiçbir tanımlayıcı (kişisel tanımlayıcı) içermez. Daha fazla bilgi edinmek için gizlilik bildirimimizi okuyun. Toplanan telemetri verilerinin bazı örnekleri şunlardır (bu kapsamlı bir liste değildir): İşletim sistemiyle ilgili bilgiler (cloud-init sürümü, dağıtım sürümü, çekirdek sürümü), temel VM sağlama eylemlerinin performans ölçümleri (DHCP kirası alma süresi, VM'yi yapılandırmak için gereken meta verileri alma süresi vb.), cloud-init günlüğü ve dmesg günlüğü.

Telemetri koleksiyonu şu anda cloud-init kullanan market görüntülerimizin çoğu için etkinleştirilmiştir. Cloud-init için KVP telemetri raportörü belirtilerek etkinleştirildi. Çoğu Azure Market görüntüde bu yapılandırma /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg dosyasında bulunabilir. Görüntü hazırlığı sırasında bu dosyanın kaldırılması, bu görüntüden oluşturulan tüm VM'ler için telemetri koleksiyonunu devre dışı bırakır.

10-azure-kvp.cfg örnek içeriği

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

Sonraki adımlar

cloud-init ile ilgili sorunları giderin.

Yapılandırma değişikliklerinin cloud-init örnekleri için aşağıdaki belgelere bakın: