Ana içeriğe geç

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ğin qcow2 ya da iso. 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 olan type ö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 yoksa bare. 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 bunu 20 GB metni olarak bildirir, sağlayıcı da sayıya geri çevirir.
  • os_distro (String) İmajın taşıdığı dağıtım; örneğin debian12. 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, shared veya community. Varsayılan shared. Yerinde değiştirilebilir. public kabul edilmez: yayımlamak publicize_image yetkisini 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 bildiriyorsa linux ya da windows. 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 onu os_distro'dan tahmin eder.
  • size (String) Yakalanan verinin boyutu, platformun biçimlendirdiği gibi — 1.2 GB ya da 250 MB. Bunu sayı olarak bildiren bir uç nokta yok. Henüz verisi olmayan bir imaj 0 MB görünür.
  • status (String) Platformun bildirdiği durum. Bir makinenin kurulabileceği tek durum active'tir; queued ve saving verinin henüz orada olmadığı, killed ise yakalamanın başarısız olduğu anlamına gelir.
  • type (String) Platformun imajı nasıl sınıflandırdığı: ISO ya da Template (VM). Bu disk_format değ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_disk ve visibility. 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 create zaman 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_ram ve tags imaj oluşturulurken kabul edilir ve hiçbir uç nokta tarafından bildirilmez; bu yüzden sapma gösteremez ve içe aktarmada korunmaz. disk_format da geri okunmaz: platform onun yerine türetilmiş type değerini bildirir.
  • protected bilerek 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]
}
}