dtcloud_elastic_ip (Kaynak)
Genel (elastik) bir IP adresi ayırır ve isteğe bağlı olarak onu bir bağlantı noktasına yönlendirir.
Üç işlem doğrudan Terraform'a karşılık gelir: create adresi ayırır, update onu ilişkilendirir ya da ilişkisini kaldırır, delete onu serbest bırakır. İlişkilendirmenin kendisi port_id'dir ve onu yazan tek argümandır; ayrı bir ilişkilendirme kaynağı yoktur. API ve SDK buna floating IP der.
Örnek Kullanım
# Genel bir adres ayırın ve hiçbir şeye bağlamadan bırakın.
resource "dtcloud_elastic_ip" "spare" {
floating_network_id = var.external_network_id
}
# Ayırın ve bir makinenin bağlantı noktasına yönlendirin. Adresi başka
# bir bağlantı noktasına taşımak yerinde bir güncellemedir: adresin
# kendisi hiç serbest bırakılmaz.
resource "dtcloud_elastic_ip" "web" {
floating_network_id = var.external_network_id
port_id = dtcloud_vm_network_interface.web.port_id
}
Dış ağı bulmak. floating_network_id makinenizin bulunduğu ağ değil, dış ağdır: router'ınızın ağ geçidinin bulunduğu ağ. dtcloud_router bunu external_network_id olarak bildirir -- router'ı siz yönetiyorsanız kaynakta, yönetmiyorsanız data source üzerinden -- ve dtctl router externals de aynı bilgiyi yazdırır.
Şema
Zorunlu
floating_network_id(String) Adresin ayrılacağı dış ağın kimliği: router'ınızın ağ geçidinin bulunduğu ağ.dtcloud_routerbunuexternal_network_idolarak bildirir. Bu değiştirilirse yeni bir kaynak oluşturulur.
İsteğe Bağlı
fixed_ip_address(String) Birden fazla adresi olan bir bağlantı noktasında hangi adrese eşleneceği. Verilmezse platform birini seçer.port_id(String) Adresin yönlendirileceği bağlantı noktasının kimliği. İlişkiyi kaldırmak için silin. Bir sanal makinenin bağlantı noktalarınetwork_interfacebloklarındadır:dtcloud_vm.web.network_interface[0].port_id.subnet_id(String) Adresin alınacağı, dış ağa ait belirli bir alt ağın kimliği. Yalnızca ayırma sırasında kullanılır ve hiç geri bildirilmez; içe aktarma notuna bakın. Bu değiştirilirse yeni bir kaynak oluşturulur.timeouts(Block, Optional) (bkz. aşağıdaki iç içe şema)
Salt Okunur
created_at(String) Adresin ayrıldığı zaman, RFC 3339 biçiminde.description(String) Adresin açıklaması. Salt okunur: ne oluşturma ne de güncelleme yolu açıklama kabul eder, bu yüzden yalnızca Terraform dışında oluşturulmuş bir adreste dolu olur.device_id(String) Bağlantı noktasının arkasındaki kaynağın kimliği: bu adresin şu anda ulaştığı sanal makine ya da yük dengeleyici. Adres ilişkilendirilmemişse boştur.device_owner(String) Platformun etiketlediği haliyle bağlantı noktasının arkasında ne tür bir şey olduğu, örn. bir sanal makine içincompute:nova. Adres ilişkilendirilmemişse boştur.id(String) Bu kaynağın kimliği.ip_address(String) Ayrılan genel adres. Paylaşılacak değer budur.router_id(String) Trafiği taşıyan yönlendiricinin kimliği; adres ilişkilendirildiğinde doldurulur.status(String) Adres ilişkilendirilmişseACTIVE, değilseDOWN.DOWNbir arıza değil, kararlı bir durumdur.updated_at(String) Adresin son değiştirildiği zaman, RFC 3339 biçiminde.
timeouts için iç içe şema
İsteğe Bağlı:
create(String)delete(String)update(String)
Bilinmesi Gerekenler
- Adresi taşımak yeniden oluşturma değil, güncellemedir.
port_id'yi değiştirmek aynı adresi başka bir yere yönlendirir; böylece zaten DNS'te ya da bir güvenlik duvarı kuralında bulunan bir adres asla kaybedilmez. Yalnızcafloating_network_idvesubnet_idyeni bir adres gerektirir. - İlişkiyi kaldırmak ya hep ya hiçtir. Güncelleme uç noktasının kısmi bir modu yoktur: bağlantı noktası belirtmeyen bir istek adresi ayırır. İlişkilendirmenin bu kaynakta durmasının nedeni de budur: aynı alanı aynı çağrıyla yazan iki kaynak birbirinin yaptığını geri alırdı.
DOWNkararlı bir durumdur. Hiçbir şeye bağlı olmayan ayrılmış bir adresDOWNbildirir. Yine de kota tüketir ve faturalandırılır; bunlarıstatus = "DOWN"iledtcloud_elastic_ipsbulur.fixed_ip_addressiçinport_idgerekir. Bağlantı noktası olmadan ayarlanması plan aşamasında reddedilir. Verilmezse hiç gönderilmez ve platform bağlantı noktasında bir adres seçer; adresin, önceki adrese sahip olmayan bir bağlantı noktasına taşınabilmesini sağlayan budur.- Birden fazla IPv4 adresi olan bir bağlantı noktası
fixed_ip_addressgerektirir. Platform sizin yerinize birini seçmez ve bir bağlantı noktasının hangi adreslere sahip olduğu ancak çağrı yapıldığında bilinir; bu yüzden hata plan aşamasında değil apply sırasında çıkar. port_id'yi değiştirmek adresin ulaştığı yeri yeniler.status,device_id,device_ownerverouter_idapply sonrasında bilinecek olarak görünür.
Zaman Aşımları
create, update ve delete için varsayılan süre 10 dakikadır. Ayırma ve ilişkilendirme eşzamansızdır: sağlayıcı, adres kendisinden istenen bağlantı noktasını bildirene kadar bekler. Bunları bir timeouts bloğuyla değiştirin:
resource "dtcloud_elastic_ip" "web" {
# ...
timeouts {
update = "20m"
}
}
İçe Aktarma
terraform import dtcloud_elastic_ip.web 5c1e7b93-2fd4-4a08-9b6e-1c3a7d2f8e44
port_id, fixed_ip_address ve salt okunur öznitelikler geri okunur. subnet_id okunmaz: API onu hiç bildirmez, bu yüzden içe aktarılan bir adreste boştur. Boş değer değişiklik sayılmaz, dolayısıyla yeni bir adres önerilmez; ancak adresin hangi alt ağdan geldiği önemliyse onu yapılandırmaya yazın.