dtcloud_image (Kaynak)
Bir disk imajını ve arkasındaki dosyayı yönetir.
Oluşturmak iki istek ve bir bekleme demektir: ilki boş bir kayıt açar, ikincisi dosyayı yükler ve imaj ancak active durumuna geldiğinde kullanılabilir. İkisi de apply sırasında olur, çünkü verisi olmayan bir imaj hiçbir makinenin önyükleyemeyeceği bir kayıttır.
Örnek Kullanım
resource "dtcloud_image" "golden" {
name = "golden-ubuntu-22.04"
source_file = "${path.module}/images/ubuntu-22.04.qcow2"
disk_format = "qcow2"
os_distro = "ubuntu"
min_disk = 20
min_ram = 2048
visibility = "private"
uefi = false
tags = ["golden", "ubuntu"]
}
Şema
Zorunlu
disk_format(String) Dosyanın biçimi, örneğinqcow2ya daiso. Kabul edilen değerler sağlayıcıdaki bir listeden değil platformun kendi yapılandırmasından gelir; bu yüzden desteklenmeyen bir değer apply sırasında API tarafından reddedilir. Bundan türetilen bir görüntüleme kategorisi olantypeözniteliğiyle aynı şey değildir. Bu değiştirilirse yeni bir kaynak oluşturulur.name(String) İmajın adı. Yerinde değiştirilebilir. Platformda adlar benzersiz değildir;dtcloud_image'ın kimlikle aramayı tercih etmesinin nedeni budur.source_volume_id(String) Yakalanacak disk. Çağrı anındaki içeriği imaj olur; diske sonradan yazılanlar imaja ulaşmaz. Disk varlığını sürdürür ve imaj diskten daha uzun yaşar. Var olan bir imajın verisini değiştiren bir uç nokta yoktur; bu yüzden burayı başka bir diske çevirmek yeni bir imaj kurar. Bu değiştirilirse yeni bir kaynak oluşturulur.
İsteğe Bağlı
container_format(String) Disk verisinin sarmalandığı kap; özel bir nedeniniz yoksabare. Yalnızca yazılabilir: hiçbir uç nokta geri bildirmez. Bu değiştirilirse yeni bir kaynak oluşturulur.min_disk(Number) Bu imajdan kurulacak bir makinenin ihtiyaç duyduğu en küçük disk, GB olarak. Yakalama bunu kaynak diskin boyutundan türetir; geçersiz kılmak için oluştururken ya da sonradan ayarlayın. API bunu20 GBmetni olarak bildirir, sağlayıcı da sayıya geri çevirir.os_distro(String) İmajın taşıdığı dağıtım; örneğindebian12. Yakalama bunu kaynak diskten alır, yani vermezseniz diskin kurulduğu dağıtım devralınır. Geçersiz kılmak için oluştururken ya da sonradan ayarlayın; kabul edilen değerler platformundur ve API tarafından denetlenir.timeouts(Block, Optional) (bkz. aşağıdaki iç içe şema)visibility(String) İmajı kimlerin görebileceği:private,sharedveyacommunity. Varsayılanshared. Yerinde değiştirilebilir.publickabul edilmez: yayımlamakpublicize_imageyetkisini gerektirir, bu yetki müşteri hesaplarına verilmez ve platform hem yakalamada hem güncellemede 403 döner.
Salt Okunur
id(String) Bu kaynağın kimliği.os_type(String) Platform bildiriyorsalinuxya dawindows. Burada sık sık boştur: ayrıntı uç noktası değeri olduğu gibi aktarır,dtcloud_images'ın arkasındaki liste uç noktası ise değer eksikse onuos_distro'dan tahmin eder.size(String) Yakalanan verinin boyutu, platformun biçimlendirdiği gibi —1.2 GBya da250 MB. Bunu sayı olarak bildiren bir uç nokta yok. Henüz verisi olmayan bir imaj0 MBgörünür.status(String) Platformun bildirdiği durum. Bir makinenin kurulabileceği tek durumactive'tir;queuedvesavingverinin henüz orada olmadığı,killedise yakalamanın başarısız olduğu anlamına gelir.type(String) Platformun imajı nasıl sınıflandırdığı:ISOya daTemplate (VM). Budisk_formatdeğildir; ondan türetilir ve ikisi birbirinin yerine kullanılamaz.uefi(Boolean) İmajın UEFI donanım yazılımıyla önyüklenip yüklenmeyece ği. Kaynak diskten devralınır; bunu ayarlayan bir uç nokta yoktur.
timeouts için iç içe şema
İsteğe Bağlı:
create(String)delete(String)update(String)
Bilinmesi Gerekenler
- Yerinde değişenler. Her biri için ayrı bir istekle
name,os_distro,min_diskvevisibility. Dosya dahil diğer her şey yeni bir imaj oluşturur: mevcut bir imajın verisini değiştiren bir uç nokta yoktur. - Dosya apply sırasında eksiksiz gönderilir. Büyük bir imaj uzun bir apply demektir ve
createzaman aşımı, platformun sonrasındaki işinin yanı sıra aktarımı da kapsamalıdır. Dosya boyutu aktarım başlamadan bildirilir; bu yüzden platform için fazla büyük bir imaj daha hiçbir şey gönderilmeden reddedilir. - Başarısız bir yükleme geride bir şey bırakmaz. Platform, yüklemesi başarısız olan imajı siler. Temizlenecek yarım bir kayıt kalmaz ve sonraki apply imajı yeniden oluşturur.
- Yalnızca yazılabilir argümanlar.
min_ramvetagsimaj oluşturulurken kabul edilir ve hiçbir uç nokta tarafından bildirilmez; bu yüzden sapma gösteremez ve içe aktarmada korunmaz.disk_formatda geri okunmaz: platform onun yerine türetilmiştypedeğerini bildirir. protectedbilerek sunulmaz. API bunu imaj oluşturulurken kabul eder ama sonradan kaldıramaz; bu da imajı bu sağlayıcı üzerinden yok edilemez hale getirirdi. Bir destroy, imaj başka bir yerde korumalı olarak işaretlendiği için reddedilirse işaretin Terraform dışında kaldırılması gerekir.
Zaman Aşımları
create için varsayılan süre 2 saat, update için 15 dakika, delete için 30 dakikadır. create varsayılanı yüklemenin kendisini de kapsar; yükleme, dosyanın bağlantınız üzerinden gönderilmesi ne kadar sürüyorsa o kadar sürer. Yavaş bir bağlantıda büyük bir imaj için artırın. Bunları bir timeouts bloğuyla değiştirin:
resource "dtcloud_image" "golden" {
# ...
timeouts {
create = "6h"
}
}
İçe Aktarma
# Bir imajın arkasındaki dosya, biçimi, min_ram ve tags hiçbir uç nokta
# tarafından bildirilmez: ilk apply'dan önce içe aktarma notlarını okuyun.
terraform import dtcloud_image.golden 1f6b8d24-3e70-49ca-8d15-4b2f7a9c6e77
name, os_distro, min_disk, visibility ve uefi geri okunur. source_file, source_file_hash, disk_format, min_ram ve tags hiçbir uç nokta tarafından bildirilmez, bu yüzden içe aktarmadan sonra boştur. Beşi de değiştirilince yeni bir imaj gerektirir; bu yüzden yapılandırma yüklenenle eşleşse bile ilk plan imajı yeniden oluşturmayı önerir. İçe aktarılan imajı korumak için bunları yok sayın:
resource "dtcloud_image" "golden" {
# ...
lifecycle {
ignore_changes = [source_file, source_file_hash, disk_format, min_ram, tags]
}
}