如何在Terraform中将TXT文件内容用作列表型变量?
如何将文本文件内容转为Terraform变量列表
完全可以实现,以下是两种常用方法:
方法一:在Terraform配置中直接读取处理
通过Terraform内置的file、split和trimspace函数,直接将文本文件内容转换为列表:
- 先定义变量(可选,也可直接使用本地值):
variable "animal_list" { type = list(string) default = [] }
- 用本地值处理文件内容:
locals { # 读取文件并按换行分割,同时移除首尾空白字符 animals = split("\n", trimspace(file("var_file.txt"))) }
- 后续在配置中可直接引用
local.animals,比如输出验证:
output "animal_list" { value = local.animals }
如果文件中存在空白行,会导致列表出现空字符串元素,可加上compact函数过滤:
locals { animals = compact(split("\n", trimspace(file("var_file.txt")))) }
方法二:通过命令行传入变量
如果需要在执行Terraform命令时动态传入,可借助shell命令将文件内容格式化为逗号分隔的字符串,Terraform会自动解析为列表:
terraform apply -var="animal_list=$(cat var_file.txt | tr '\n' ',' | sed 's/,$//')"
注意:此方法要求文件内容中不含逗号,否则会导致列表元素分割错误。
内容的提问来源于stack exchange,提问作者Kikeman26
相关产品推荐
相关产品推荐

