我在filebeat.yml中使用了env变量,它无法解析变量。
output.elasticsearch:
hosts: [$ELASTICSEARCH_HOST]
template:
name: "filebeat"
path: "fields.yml"
overwrite: false
protocol: "http"
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文件中使用环境变量。
谢谢。
答案 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>"
希望这可以解决您的问题!