Ana içeriğe geç

dtcloud_volume (Kaynak)

Bir blok depolama diskini yönetir.

Bu kaynak diskin kendisinden sorumludur: onu oluşturmak, yeniden adlandırmak, büyütmek ve depolama politikasını değiştirmek. Onu bir makineye bağlamak ayrı bir kaynağın işidir: dtcloud_vm_volume_attachment. Bir makinenin önyüklendiği disk bir dtcloud_volume değildir: dtcloud_vm üzerindeki block_device bloğundan gelir.

Örnek Kullanım​

# Boş bir veri diski.
resource "dtcloud_volume" "data" {
name = "app-data"
size = 100
storage_policy = data.dtcloud_storage_policies.available.policies[0].name
}

# İçeriği bir imajdan gelen disk. Kaynak oluşturma anında sabitlenir:
# değiştirmek diski yeniden oluşturur.
resource "dtcloud_volume" "boot" {
name = "web-01-boot"
size = 40
storage_policy = "standard"
image_id = var.image_id
}
not

image_id, source_volume_id ve source_snapshot_id birlikte kullanılamaz: diskin içeriğini doldurmak için birini ayarlayın ya da boş bir disk için hiçbirini ayarlamayın.

Şema​

Zorunlu​

  • name (String) Diskin adı. Yerinde değiştirilebilir.
  • size (Number) GB cinsinden boyut, 1 ile 8192 arasında. Yerinde büyütülebilir; küçültmek mümkün değildir ve apply sırasında reddedilir.
  • storage_policy (String) Diski destekleyen depolama politikasının adı; dtcloud_storage_policies veri kaynağının listelediği haliyle. Değiştirmek diskin tipini yerinde değiştirir.

İsteğe Bağlı​

  • description (String) Serbest metin açıklama. Yalnızca yazılabilir: API kabul eder ama hiç geri bildirmez; bu yüzden sapma göstermez, içe aktarmada korunmaz ve temizlenemez.
  • image_id (String) Diski bu imajdan oluşturur ve önyüklenebilir yapar. Değiştirmek diski yeniden oluşturur.
  • source_snapshot_id (String) Diski bu anlık görüntüden geri yükler. size en az anlık görüntünün boyutu kadar olmalıdır. Değiştirmek diski yeniden oluşturur.
  • source_volume_id (String) Diski bunun bir klonu olarak oluşturur. Değiştirmek diski yeniden oluşturur.
  • timeouts (Block, Optional) (bkz. aşağıdaki iç içe şema)

Salt Okunur​

  • attached_to (String) Bu diskin bağlı olduğu sanal makinenin adı; ayrılmışsa boş.
  • attached_to_id (String) Bu diskin bağlı olduğu sanal makinenin kimliği; ayrılmışsa boş.
  • attached_to_status (String) Bu diskin bağlı olduğu sanal makinenin durumu.
  • bootable (Boolean) Diskten önyükleme yapılıp yapılamayacağı. İmajdan oluşturulan diskler için true.
  • created (String) Diskin oluşturulduğu zaman, platformun bildirdiği haliyle.
  • id (String) Bu kaynağın kimliği.
  • image_metadata (List of Object) Bu diskin oluşturulduğu imajın ayrıntıları. Boş bir disk için boştur. (bkz. aşağıdaki iç içe şema)
  • is_detachable (Boolean) Platformun bu diskin ayrılmasına izin verip vermeyeceği.
  • last_modified (String) Diskin son değiştiği zaman, platformun bildirdiği haliyle.
  • status (String) Platformun bildirdiği durum, örn. available ya da in-use.
  • volume_type (String) HDD; disk bir ISO tutuyorsa CD-ROM. Depolama politikası değildir, platform tarafından türetilir.

timeouts için iç içe şema​

İsteğe Bağlı:

  • create (String)
  • delete (String)
  • update (String)

image_metadata için iç içe şema​

Salt Okunur:

  • checksum (String)
  • container_format (String)
  • disk_format (String)
  • image_id (String)
  • image_name (String)
  • min_disk (String)
  • min_ram (String)
  • os_distro (String)
  • os_type (String)
  • size (String)

Bilinmesi Gerekenler​

warning

Bağlı bir disk silinemez. Platform in-use durumundaki bir diski silmeyi reddeder; bu yüzden sağlayıcı önce kontrol eder ve diskin bağlı olduğu makinenin adını verir. Diski sizin yerinize ayırmaz. Bağlantı bu diske referans veren bir dtcloud_vm_volume_attachment ise Terraform önce bağlantıyı kendiliğinden kaldırır.

  • Yerinde değişenler. name, description, size ve storage_policy. Üç kaynak argümanı yeni bir disk gerektirir: içeriği oluşturma anında doldururlar ve mevcut bir diski yeniden dolduran bir uç nokta yoktur.
  • size yalnızca büyütülebilir. Daha düşük bir değer, veriyi yok edecek bir yeniden oluşturmaya dönüştürülmek yerine reddedilir. Plan aşamasında değil apply sırasında reddedilir, çünkü bir plan düşürülmüş bir sayıyı Terraform dışında büyütülmüş bir diskten ayırt edemez ve plan aşamasında reddetmek terraform destroy'u da engellerdi. Bir plan sizin düzenlemediğiniz bir diski küçültmeyi öneriyorsa size değerini diskin gerçek boyutuna eşitleyin.
  • description yalnızca yazılabilir. API onu hiç geri bildirmez; bu yüzden sapma gösteremez, içe aktarmada korunmaz ve temizlenemez. Disk oluşturulduktan sonra ikinci bir çağrıyla uygulanır.
  • Büyütme ve tip değiştirme, bitmeden bitmiş gibi görünür. Disk bir süre eski boyutu ya da politikasıyla available durumunda kalır; bu yüzden sağlayıcı durumu değil, istediği değeri bekler.
  • storage_policy bir addır. Bir disk tipi kimliğiyle oluşturulan disk ad olarak geri okunur ve sonraki her plan bir değişiklik önerir. Adları dtcloud_storage_policies listeler.
  • Silmek anlık görüntüleri de götürür. Silme işlemi bağlı kayıtları da siler; bu yüzden dtcloud_snapshot olarak yönetilenler dahil diskin tüm anlık görüntüleri de gider ve Terraform uyarmaz. Önce dtcloud_volume_snapshots ile kontrol edin. volume_id içinde bu diske referans veren anlık görüntüler diskten önce yok edilir.

Zaman Aşımları​

create ve update için varsayılan süre 30 dakika, delete için 20 dakikadır. Üçü de eşzamansızdır ve imajdan oluşturmak ya da büyük bir diski büyütmek zaman alır, bu yüzden varsayılanlar cömerttir. Bunları bir timeouts bloğuyla değiştirin:

resource "dtcloud_volume" "data" {
# ...

timeouts {
create = "1h"
}
}

İçe Aktarma​

terraform import dtcloud_volume.data 8a4f2c15-6b93-4d0e-a7f1-2c5b8e9d3a66

description, image_id, source_volume_id ve source_snapshot_id ayrıntı uç noktası tarafından bildirilmez, bu yüzden içe aktarmadan sonra boştur. image_metadata.image_id bunların yerine geçmez: içeriğin geldiği imajı gösterir ve bir klon ya da geri yükleme bunu kaynağından devralır. Üç kaynak argümanı yeni bir disk gerektirir; bu yüzden yapılandırma birini ayarlıyorsa içe aktarmadan sonraki ilk plan yeniden oluşturmayı önerir. İçe aktarılan diski korumak için bunu yok sayın:

resource "dtcloud_volume" "data" {
# ...

lifecycle {
ignore_changes = [image_id, source_volume_id, source_snapshot_id]
}
}