2017-07-27 50 views
0

我正在使用谷歌虚拟机提供商terraform。我想将现有的静态IP分配给虚拟机。如何将静态IP映射到terraform google计算引擎实例?

代码

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" 
    } 
    } 
} 

但它与错误而失败:

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

我该如何解决这个问题?

回答

2

它的工作方式是将address更改为access_config中的nat_ip

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 
    } 
    } 
} 
5

您还可以让terraform为您创建静态IP地址,然后通过对象名称将其分配给实例。

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}" 
    } 
    } 
} 
相关问题