【发布时间】:2021-06-21 09:49:34
【问题描述】:
我在 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。
【问题讨论】:
-
您能否编辑问题中的代码,使其形成minimal reproducible example?现在看起来您还没有将您的
google_compute_address资源寻址为vm_private_ip,但从当前代码中无法准确判断您哪里出错了。 -
好的,我现在就添加。
-
好的,我刚刚用我的原始代码更新了 OP。谢谢!
-
您的代码不包含解释错误的
google_compute_address资源。您想添加一个但还没有添加吗?还是只想要google_compute_instance资源的IP 地址? -
我只想知道实例创建后的IP地址。我不想给它一个。
标签: terraform terraform-provider-gcp