gpt4 book ai didi

Terraform 模块中常用变量的使用

转载 作者:行者123 更新时间:2023-12-04 17:50:02 26 4
gpt4 key购买 nike

我正在编写 terraform 脚本以在 AWS 上创建 ASG。我尝试使用 terraform module 创建它以获得更可重用的代码。问题是当我想在模块 tf 文件上使用 common-variable.tfvars 中的变量时,它一直说它未定义并且需要声明。这样,模块的可重用性就会降低。

举个例子

root
|
|___project 1
| |_____ main.tf
| |_____ common-variable.tfvars
|
|___ modules
|
|_____ a-module
|______ main.tf

所以在project 1 common-variable.tfvars里面,基本上是这样的

variable "a" { 
description = "a variable"
default = "a"
}

variable "b" {
description = "a variable"
default = "b"
}

在 a-module/main.tf 里面是这样的

variable "name" {}

resource "aws_autoscaling_group" "asg-1" {
name = "${var.a}"
...
}

当我执行 terraform init 时,它说

resource 'aws_autoscaling_group.asg-1' config: unknown variable 
referenced: 'a'. define it with 'variable' blocks

知道如何在 main .tf 模块中使用这个公共(public)变量吗?


更新

我通过在每个模块中重新声明变量设法通过了 terraform init。但是,当我运行 terraform plan 时,会出现这种错误 invalid value "common-variable.tfvars"for flag -var-file: multiple map declarations not supported for variables

最佳答案

错误的 tfvars 格式,应该是 key/value only,例如:

a = "a"
b = "b"

其次,检查你是如何引用模块的,应该是这样的:

source = "../modules/a-module"

关于Terraform 模块中常用变量的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45747482/

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