使用Terraform创建Filebeat配置

时间:2018-08-22 16:51:15

标签: terraform filebeat

我正在使用Terraform创建实例后尝试创建Filebeat配置文件:

resource "local_file" "greylogIP" {
  content  = <<EOF
filebeat.inputs:
- type: log
  enabled: false
  paths:
    - /var/log/*.log
filebeat.config.modules:
  path: '$'{path.config}/modules.d/*.yml
  reload.enabled: false
setup.template.settings:
  index.number_of_shards: 3
output.logstash:
  hosts: ["${aws_instance.web.public_ip}:5014"]
  EOF
  filename = "filebeat.conf"
} 

我需要传递${aws_instance.web.public_ip}变量来分配动态IP,但是Terraform还尝试如何插值path: '$'{path.config}/modules.d/*.yml,这是Filebeat配置的一部分,并引发错误。

如何将path: '$'{path.config}/modules.d/*.yml作为字符串传递?

1 个答案:

答案 0 :(得分:1)

您需要用双倍的美元(errorMap)转义一个真实的美元($)。

interpolation documentation涵盖了这一点:

  

您可以使用带有双美元符号的插值进行转义:$$ {foo}将呈现为文字$ {foo}。

template docs中有进一步的提及:

  

重要提示:内联模板中的模板变量(例如上面的consul_address)必须使用双$进行转义。在执行模板之前,Terraform将正常处理未转义的插值。