【发布时间】:2021-04-13 16:48:53
【问题描述】:
我在一个模块中有 Terraform“aws_instance”资源。当 ami 设置为 var.ami_id 并使用单个给定字符串时,它按预期工作。 为了将此模块用于不同的目的,我已将 var.ami_ids 添加为列表(字符串)并添加为可选变量。
ami = var.ami_ids == [""] ? var.ami_id : var.ami_ids[count.index]
变量.tf
variable "ami_id" {
description = "ID of AMI to use for the instance"
type = string
default = ""
}
variable "ami_ids" {
description = "List of IDs of AMI to use for the instance"
type = list(string)
default = [""]
}
main.tf
resource "aws_instance" "ec2" {
count = var.number_of_ec2_instances_required
ami = var.ami_ids == [""] ? var.ami_id : var.ami_ids[count.index]
instance_type = var.instance_type
private_ip = length(var.private_ips) > 0 ? element(var.private_ips, count.index) : var.private_ip
subnet_id = length(var.network_interface) > 0 ? null : element(
distinct(compact(concat([var.ec2_subnets_id], var.ec2_subnets_ids))),
count.index,
)
key_name = var.key_name
monitoring = var.monitoring
iam_instance_profile = var.iam_instance_profile
vpc_security_group_ids = var.vpc_security_group_ids
associate_public_ip_address = var.associate_public_ip_address
ebs_optimized = var.ebs_optimized
...
}
虽然“ami_ids”没有声明值(即 null),但我收到以下错误。
Error: Invalid index
on ../../modules/ec2/main.tf line 23, in resource "aws_instance" "ec2":
23: ami = var.ami_ids == [""] ? var.ami_id : var.ami_ids[count.index]
|----------------
| count.index is 1
| var.ami_ids is list of string with 1 element
The given key does not identify an element in this collection value.
Releasing state lock. This may take a few moments...
有人可以在这里帮助我以更好的方式做到这一点。
谢谢
【问题讨论】:
标签: amazon-web-services variables amazon-ec2 terraform