gpt4 book ai didi

amazon-web-services - 在 Terraform 中动态创建资源

转载 作者:行者123 更新时间:2023-12-02 19:52:37 25 4
gpt4 key购买 nike

如何将资源 block (例如:资源“aws Volume Attachment”“ebs att”)作为 tf 文件的输入发送

resource "aws_volume_attachment" "ebs_att" {
device_name = "/dev/sdh"
volume_id = "${aws_ebs_volume.example.id}"
instance_id = "${aws_instance.example.id}"
force_detach = "true"
}

假设,下面是我的 terraform .tf 文件

provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"

}

resource "aws_key_pair" "deployer" {
key_name = "testkey-${var.hostname}"
public_key = "${file(var.public_key_path)}"
}

对于这个文件,我必须发送资源 block ->

resource "aws_volume_attachment" "ebs_att"

最终的 .tf 文件看起来像这样

provider "aws" {
region = "${var.region}"
access_key = "${var.access_key}"
secret_key = "${var.secret_key}"

}

resource "aws_key_pair" "deployer" {
key_name = "testkey-${var.hostname}"
public_key = "${file(var.public_key_path)}"
}
resource "aws_volume_attachment" "ebs_att" {
device_name = "/dev/sdh"
volume_id = "${aws_ebs_volume.example.id}"
instance_id = "${aws_instance.example.id}"
force_detach = "true"
}

最佳答案

您将无法单独使用 terraform 脚本动态添加新资源(为什么我告诉“单独”是因为在我的例子中,我使用 python 类作为配置并生成 terraform动态地从中获取文件并从 python 脚本运行应用命令)

您可以通过另一种方式实现此目的,即向资源添加计数并将默认变量值设置为 0,这样资源通常不会被创建,除非您专门将计数值设置为 1

variable "create_ebs_resource" {
type = number
default = 0
}

resource "aws_volume_attachment" "ebs_att" {
device_name = "/dev/sdh"
volume_id = "${aws_ebs_volume.example.id}"
instance_id = "${aws_instance.example.id}"
force_detach = "true"
count = var.create_ebs_resource
}

然后运行应用命令terraform apply -var="create_ebs_resource=1" 如果您想创建资源,则只需运行 terraform apply

关于amazon-web-services - 在 Terraform 中动态创建资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57801533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com