【发布时间】:2020-05-08 19:20:51
【问题描述】:
我在question 中关注了这里的答案,并且
我创建了一个template 文件tf_ansible_vars_file.yml.tpl,如下所示
tf_share_location: "${share_location}"
还有一个terra_render.tf,如下所示
# Define an Ansible var_file containing Terraform variable values
data "template_file" "tf_ansible_vars_file" {
template = "${file("/home/deployment_root/app4/tf_ansible_vars_file.yml.tpl")}"
vars = {
share_location = var.share_location
# gitlab_backup_bucket_name = aws_s3_bucket.gitlab_backup.bucket
}
}
# Render the Ansible var_file containing Terrarorm variable values
resource "local_file" "tf_ansible_vars_file" {
content = data.template_file.tf_ansible_vars_file.rendered
filename = "/home/deployment_root/app4/tf_ansible_vars_file.yml"
}
我已经有一个 variables.tf 文件,我在其中声明了该变量
variable "share_location" {
type = string
}
在terraform.tfvars 中给出的值为null
share_location = null
当我运行terraform apply 时出现以下错误
Error: failed to render : <template_file>:1,23-37: Unknown variable; There is no variable named "share_location".
on terra_render.tf line 2, in data "template_file" "tf_ansible_vars_file":
2: data "template_file" "tf_ansible_vars_file" {
我的理解是它会创建该答案中提到的文件,但它不起作用。
如何将变量输出到 Ansible?
【问题讨论】:
-
您将
null类型指定为变量的值,因此除非在渲染过程中发生一些不寻常的类型转换,否则这是行不通的。如果您不想使用该变量,则可以将其从模板中删除。 -
这很令人困惑,如果我删除该值,它会要求一个值,我不是要求 terraform 为我生成一个值吗?