Sou novo no Terraform e estou praticando a criação do meu primeiro terraform. Encontrei um erro do qual não tenho certeza e, ao revisar os mesmos erros on-line, não está claro o que devo fazer. Parece que há uma questão fundamental de “tipo” aqui. Alguém pode destacar o que precisa ser feito e por quê.
Erro:
terraform validate
╷
│ Error: Missing resource instance key
│
│ on variables.tf line 32, in output "public_ip":
│ 32: value = aws_instance.my_rhel9_vm.public_ip
│
│ Because aws_instance.my_rhel9_vm has "count" set, its attributes must be accessed on specific instances.
│
│ For example, to correlate with indices of a referring resource, use:
│ aws_instance.my_rhel9_vm[count.index]
╵
╷
│ Error: Missing resource instance key
│
│ on variables.tf line 37, in output "instance_id":
│ 37: value = aws_instance.my_rhel9_vm.id
│
│ Because aws_instance.my_rhel9_vm has "count" set, its attributes must be accessed on specific instances.
│
│ For example, to correlate with indices of a referring resource, use:
│ aws_instance.my_rhel9_vm[count.index]
╵
main.tf
provider "aws" {
access_key = var.aws_access_key_id
secret_key = var.aws_secret_access_key
region = "us-east-1"
}
resource "aws_instance" "my_rhel9_vm" {
ami = var.ami //RHEL 9 AMI
instance_type = var.type
count = var.number_of_instances
key_name = var.ami_key_pair_name
tags = {
Name = "${var.name_tag}"
}
}
variables.tf
variable "ami" {
type = string
description = "RHEL 9 AMI ID in US-East-1"
default = "ami-05a5f6298acdb05b6"
}
variable "type" {
type = string
description = "Instance Type"
default = "t2.micro"
}
variable "name_tag" {
type = string
description = "Name of the EC2 instance"
default = "My EC2 RHEL 9 instance"
}
variable "number_of_instances" {
type = number
description = "Number of instances to be created"
default = 1
}
variable "ami_key_pair_name" {
type = string
description = "SSH Key Pair"
default = "tomcat"
}
output "public_ip" {
value = aws_instance.my_rhel9_vm.public_ip
description = "Public IP Address of EC2 instance"
}
output "instance_id" {
value = aws_instance.my_rhel9_vm.id
description = "Instance ID"
}
variable "aws_access_key_id" {}
variable "aws_secret_access_key" {}
#locals {
# ami = "ami-05a5f6298acdb05b6"
# type = "t2.micro"
# name_tag = "My EC2 RHEL 9 instance"
#}
A mensagem de erro informa que, como
aws_instance.my_rhel9_vm
possui umcount
atributo, pode haver várias instâncias, portanto, você precisa especificar a qual instância está se referindo. Basicamente, o Terraform esperaaws_instance.my_rhel9_vm
ser uma matriz de recursos e você pode se referir a cada um deles usando um índice comoaws_instance.my_rhel9_vm[0]
,,aws_instance.my_rhel9_vm[1]
etc.Você pode mudar
aws_instance.my_rhel9_vm
paraaws_instance.my_rhel9_vm[0]
invariables.tf
para obter uma configuração válidaDos documentos do Terraform :