我在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
}