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_setup
veya 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: