Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to map static IP to terraform google compute engine instance?

Tags:

terraform

I'm using terraform with google vm provider. I want to assign existing Static IP to a VM.

Code:

resource "google_compute_instance" "test2" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "${var.region}"

  disk {
    image = "centos-7-v20170719"
  }

  metadata {
    ssh-keys = "myuser:${file("~/.ssh/id_rsa.pub")}"
  }

  network_interface {
    network = "default"
    access_config {
      address = "130.251.4.123"
    }
  }
}

But its failing with the error:

google_compute_instance.test2: network_interface.0.access_config.0: invalid or unknown key: address

How can I fix this?

like image 231
RMK Avatar asked Jul 27 '17 19:07

RMK


Video Answer


2 Answers

You could also allow terraform to create the static IP address for you and then assign it to the instance by object name.

resource "google_compute_address" "test-static-ip-address" {
  name = "my-test-static-ip-address"
}

resource "google_compute_instance" "test2" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "${var.region}"

  disk {
    image = "centos-7-v20170719"
  }

  metadata {
    ssh-keys = "myuser:${file("~/.ssh/id_rsa.pub")}"
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = "${google_compute_address.test-static-ip-address.address}"
    }
  }
}
like image 105
todd r Avatar answered Oct 03 '22 10:10

todd r


It worked by changing address to nat_ip in access_config.

resource "google_compute_instance" "test2" {
  name         = "dns-proxy-nfs"
  machine_type = "n1-standard-1"
  zone         = "${var.region}"

  disk {
    image = "centos-7-v20170719"
  }

  metadata {
    ssh-keys = "myuser:${file("~/.ssh/id_rsa.pub")}"
  }

  network_interface {
    network = "default"
    access_config {
      nat_ip = "130.251.4.123" // this adds regional static ip to VM
    }
  }
}
like image 32
RMK Avatar answered Oct 03 '22 10:10

RMK