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 (ana bilgisayar adı, kullanıcı adı ve parola gibi) devredip önyükleme sırasında vm için 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 desteği iki sağlama aracısı cloud-init ve Azure Linux Aracısı (WALA) vardır.

cloud-init'e genel bakış

cloud-init , linux vm'sini ilk kez önyüklemesi için ö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şleri düzgün biçimlendirme #cloud-config hakkında daha fazla bilgi 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 paketlerinin desteklendiği veya önizleme aşamasında olduğu 'Azure'da cloud-init paket desteği' belgeleri, bu paketleri özel bir görüntüdeki işletim sistemiyle birlikte kullanabilirsiniz.
  • Görüntü zaten cloud-init kullanacak şekilde yapılandırılmışsa 'image cloud-init ready' belgeleri.

Canonical

Yayımcı / Sürüm Sunduğu SKU Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
Kurallı 24.04 UbuntuServer 22.04-LTS latest evet evet
Kurallı 22.04 UbuntuServer 22.04-LTS latest evet evet
Kurallı 20.04 UbuntuServer 20.04-LTS latest evet evet

RHEL

Yayımcı / Sürüm Sunduğu SKU Sürüm cloud-init görüntüsü hazır Azure'da cloud-init paketi desteği
RedHat 7 RHEL 7.7, 7.8, 7_9 latest evet evet
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 latest evet evet
RedHat 9 RHEL 9_0, 9_1 latest 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 Sunduğu SKU 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 latest evet evet
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm latest 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 Sunduğu SKU 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 latest evet evet
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 latest evet evet

Debian

Yayımcı / Sürüm Sunduğu SKU 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 zamanı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 alır. Anahtarla cloud-init yapılandırmasına --custom-data başvurursanız, özel verilerinizde yer alan her şey VM ön 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ına uğradıklarından 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ı özel verileri işleyecek şekilde değiştirirseniz, 40 dakikalık toplam VM sağlama süresi süresini aşamaz; bu durumda VM Oluşturma 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 dağıtma

Cloud-init özellikli bir sanal makine dağıtmak, dağıtım sırasında bulut başlatma özellikli bir dağıtıma başvurmak kadar basittir. Linux dağıtım bakımcıları, cloud-init'i temel Azure tarafından yayımlanan görüntüleriyle etkinleştirmeyi ve 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
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Not

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 adlı ubuntu2204 bir VM oluşturur ve varsayılan anahtar konumunda yoksa 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ı geçirin. 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 isteme 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.log konumundaki cloud-init günlüğünde modül adını (disk_setupveya runcmd örneğin) aramanız gerekir.

Not

Her modül hatası önemli bir cloud-init genel yapılandırma hatasıyla sonuçlanmaz. Örneğin, runcmd betik başarısız olursa, runcmd modülü yürütülürken 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 muhabiri belirtilerek etkinleştirilir. Ç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: