我在terraform的变量插值方面遇到了麻烦.这是我的terraform配置的样子.即内置函数内的变量
variable "key" {}
ssh_keys {
path = "/home/${var.provider["user"]}/.ssh/authorized_keys"
key_data = "${file(${var.key})}"
}
Run Code Online (Sandbox Code Playgroud)
命令:terraform apply -var'key =〜/ .ssh/id_rsa.pub'
它不是从命令行参数或env变量中读取"key"的值.但是,当我在.tf文件中硬化该值时,它可以工作.如下.
key_data = "${file("~/.ssh/id_rsa.pub")}"
Run Code Online (Sandbox Code Playgroud)
所述${ ... }嵌入的表达到引用字符串时的语法仅使用.在这种情况下,您的var.key变量只是作为参数传递给${ ... }序列中已有的函数,您可以直接引用变量名称,如下所示:
key_data = "${file(var.key)}"
Run Code Online (Sandbox Code Playgroud)
嵌套${ ... }序列有时用于将插值字符串传递给函数.在这种情况下,首先会有一组嵌套的引号返回字符串上下文.例如:
key_data = "${file("${path.module}/${var.key_filename}")}"
Run Code Online (Sandbox Code Playgroud)
在这个更复杂的情况下,首先计算最里面的字符串表达式,将两个变量用a连接在一起/,然后将整个字符串传递给file函数,最后将结果作为值返回key_data.
| 归档时间: |
|
| 查看次数: |
5579 次 |
| 最近记录: |