0

我想在输出值周围加上引号(简单地说,我想使用“local-exec”配置程序将输出写入文件,但不幸的是它没有在它周围加上引号,尽管它确实将正确的值回显到文件。我也使用了转义字符 () 但仍然没有运气。任何帮助将不胜感激。谢谢

代码片段供参考:

provisioner "local-exec" {
command = " echo **ELB_DNS_NAME: \"${aws_elb.elb.dns_name}\"** >> ${var.name}.yml"
}
4

2 回答 2

0

我不确定这是否是最简单或最理想的解决方案,但我想多行字符串语法应该可以工作,如此处所示并此处记录。

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}"
}
于 2016-02-16T14:25:15.160 回答
0

使用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}"**
于 2016-09-30T09:40:43.253 回答