如何使用Terraform为GCP中的实例添加私有IP输出



我在outputs.tf:中的TF代码中定义了这个输出

output "ip" {
value = google_compute_address.vm_private_ip.address
}

这是我用来在main.tf:中创建实例的代码

// Launch an MS SQL Server into GCP
// Configure the Google Cloud provider
provider "google" {
credentials = file("mycreds.json")
project     = var.project
region      = var.region
}
// Terraform plugin for creating random ids
resource "random_id" "instance_id" {
byte_length = 8
}
// A single Compute Engine instance
resource "google_compute_instance" "default" {
name         = var.instance_name
machine_type = var.machine_type
zone         = var.zone
tags         = [var.instance_name, var.env_name]
boot_disk {
initialize_params {
size =  var.boot_disk_size
image = data.google_compute_image.sqlserverimage.self_link
}
}
network_interface {
subnetwork = var.subnetwork
subnetwork_project = var.subnetwork_project
}
}
data "google_compute_image" "sqlserverimage" {
family  = var.image_family
project = var.project
}
// Create additional disks
resource "google_compute_disk" "datadisk" {
name  = var.data_disk_name
type  = var.data_disk_type
size  = var.data_disk_size
zone  = var.zone
image = data.google_compute_image.sqlserverimage.self_link
labels = {
environment = "dev"
asv = "mycompanytools"
ownercontact = "myuser"
}
physical_block_size_bytes = 4096
}
resource "google_compute_disk" "backupdisk" {
name  = var.backup_disk_name
type  = var.backup_disk_type
size  = var.backup_disk_size
zone  = var.zone
image = data.google_compute_image.sqlserverimage.self_link
labels = {
environment = "dev"
asv = "mycompanytools"
ownercontact = "myuser"
}
physical_block_size_bytes = 4096
}
resource "google_compute_disk" "logdisk" {
name  = var.log_disk_name
type  = var.log_disk_type
size  = var.log_disk_size
zone  = var.zone
image = data.google_compute_image.sqlserverimage.self_link
labels = {
environment = "dev"
asv = "mycompanytools"
ownercontact = "myuser"
}
physical_block_size_bytes = 4096
}
// Attach additional disks
resource "google_compute_attached_disk" "datadiskattach" {
disk = google_compute_disk.datadisk.id
instance = google_compute_instance.default.id
}
resource "google_compute_attached_disk" "backupdiskattach" {
disk = google_compute_disk.backupdisk.id
instance = google_compute_instance.default.id
}
resource "google_compute_attached_disk" "logdiskattach" {
disk = google_compute_disk.logdisk.id
instance = google_compute_instance.default.id
}

但当我运行terraform plan时,我会收到以下错误:

terraform plan
Error: Reference to undeclared resource
on outputs.tf line 2, in output "ip":
2:   value = google_compute_address.vm_private_ip.address
A managed resource "google_compute_address" "vm_private_ip" has not been
declared in the root module.

在创建实例之前,将不知道专用IP。如何获得显示私有IP的输出?我不想给实例分配IP,我只想知道它创建后有什么IP。

下面的输出块将为您提供所需的输出值

output "ip" {
value = google_compute_instance.default.network_interface.0.network_ip
}

要获得通过google_compute_instance资源创建的Google Compute实例的默认、动态分配的IP地址,您可以访问资源文档中所述的network_interface.0.network_ip属性:

  • network_interface.0.network_ip-手动或动态分配的实例的内部ip地址

所以你的输出应该是:

output "ip" {
value = google_compute_instance.default.network_interface.0.network_ip
}

最新更新