1

外部 IP を作成する条件付きの計算モジュールを作成しました。

resource "google_compute_address" "external" {     
    count = "${var.EXT_IP_CREATE ? 1 : 0}"     
    name = "${var.NAME}-ext-ip"     
    address_type = "EXTERNAL"     
    region = "${var.REGION}"} 

コンピューティング インスタンス リソース ブロック内には、次のネットワーク インターフェイス構成があります。

network_interface {     
    network= "${var.NETWORK}"     
    network_ip = "${google_compute_address.internal.address}"         
    access_config {         
         nat_ip = "${var.EXT_IP_CREATE ? google_compute_address.external.address : 0 }"         
        }     
    } 

リソース google_compute_address.external が作成されていない場合は、nat_ip を null、つまり 0 に設定する必要があります。

それはうまくいくように見えますが、うまくいきません。

EXT_IP_CREATE を true に設定すると、TF はリソースの作成に成功します。false に設定すると、次のエラーが表示されます。

Error: Error running plan: 1 error(s) occurred:

* module.compute-dbma-dev.google_compute_instance.compute: 1 error(s) occurred:

* module.compute-dbma-dev.google_compute_instance.compute: Resource 'google_compute_address.external' not found for variable 'google_compute_address.external.address'

明示的に nat_ip = 0 を渡すと、TF は空白の値を認識し、外部 IP なしでコンピューティング インスタンスを正常に作成します。

現在、Terraform バージョン Terraform v0.11 を使用しています。おそらく非常に単純な解決策がありますが、私は TF の条件を使い始めたばかりで、ここで立ち往生しています。

前もって感謝します!

4

2 に答える 2