我想在输出值周围加上引号(简单地说,我想使用“local-exec”配置程序将输出写入文件,但不幸的是它没有在它周围加上引号,尽管它确实将正确的值回显到文件。我也使用了转义字符 () 但仍然没有运气。任何帮助将不胜感激。谢谢
代码片段供参考:
provisioner "local-exec" {
command = " echo **ELB_DNS_NAME: \"${aws_elb.elb.dns_name}\"** >> ${var.name}.yml"
}
我想在输出值周围加上引号(简单地说,我想使用“local-exec”配置程序将输出写入文件,但不幸的是它没有在它周围加上引号,尽管它确实将正确的值回显到文件。我也使用了转义字符 () 但仍然没有运气。任何帮助将不胜感激。谢谢
代码片段供参考:
provisioner "local-exec" {
command = " echo **ELB_DNS_NAME: \"${aws_elb.elb.dns_name}\"** >> ${var.name}.yml"
}
我不确定这是否是最简单或最理想的解决方案,但我想多行字符串语法应该可以工作,如此处所示并在此处记录。
resource "aws_iam_user_policy" "lb_ro" {
name = "test"
user = "${aws_iam_user.lb.name}"
policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:Describe*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
EOF
}
resource "aws_iam_user" "lb" {
name = "loadbalancer"
path = "/system/"
}
resource "aws_iam_access_key" "lb" {
user = "${aws_iam_user.lb.name}"
}
使用template_file
数据源和file
供应商,这样您就不必弄乱引用/转义字符。
data "template_file" "name" {
template = "${file("${path.root}/templates/name.tpl")}"
vars {
elb_dns_name = "${aws_elb.elb.dns_name}"
}
}
[...]
resource "null_resource" "render_templates"
provisioner "file" {
content = "${data.template_file.name.rendered}"
destination = "name.yml"
}
}
在<your root TF directory>/templates/name.tpl
你有简单的:
**ELB_DNS_NAME: "${elb_dns_name}"**