如何在filebeat.yml文件中使用变量

时间:2019-03-26 11:47:09

标签: docker elasticsearch filebeat

我在filebeat.yml中使用了env变量,它无法解析变量。

filebeat.yml

 output.elasticsearch:
 hosts: [$ELASTICSEARCH_HOST]
 template:
  name: "filebeat"
  path: "fields.yml"
 overwrite: false
 protocol: "http"

docker-compose.yml

  version: "3.5"

  services:

   filebeat:
       build:
       context: ./filebeat
       args:
        ELK_VERSION: $ELK_VERSION
       volumes:
           - "/var/lib/docker/containers:/usr/share/dockerlogs/data:ro"
           - "/var/run/docker.sock:/var/run/docker.sock"

   networks:
    default:
     name: filebeat-nw
     external: true

我将变量$ ELASTICSEARCH_HOST导出到环境变量。但是,它无法解析文档。

我正在使用命令“ docker-compose up --build”将容器作为服务运行

我想了解如何在filebeat.yml文件中使用环境变量。

谢谢。

2 个答案:

答案 0 :(得分:0)

  

每个变量引用在启动时都会被环境变量的值替换。替换区分大小写,并且发生在解析YAML文件之前。除非您指定默认值,否则对未定义变量的引用将替换为空字符串。要指定默认值,请使用:

     

$ {VAR:default_value}

完整文档为here

答案 1 :(得分:0)

我在this参考页上找到了答案

要使Filebeat配置文件可以访问环境变量,您需要使用O(2^n)中的environment设置对其进行定义

docker-compose.yml

docker-compose.yml

然后在 filebeat.yml

# other settings omitted
services:
  filebeat:
    environment:
      ELASTICSEARCH_HOSTS: "<host1>:<port1>,<host2>:<port2>"

希望这可以解决您的问题!