elasticsearch Elasticsearch节拍的Jinja模板,elasticsearch,ansible,jinja2,elasticsearch,Ansible,Jinja2" /> elasticsearch Elasticsearch节拍的Jinja模板,elasticsearch,ansible,jinja2,elasticsearch,Ansible,Jinja2" />

elasticsearch Elasticsearch节拍的Jinja模板

elasticsearch Elasticsearch节拍的Jinja模板,elasticsearch,ansible,jinja2,elasticsearch,Ansible,Jinja2,我正在创建一个Ansible角色来部署Elastic Stack和各种Beats。我已经安装并运行了所有ES服务器,现在正在部署我需要的各种Beat 我正在为beats config yaml文件创建一个Jinja模板。我需要识别我的摄取节点和端口。我正在部署Foreman的所有内容,因此我使用了那里的参数来覆盖在我的角色中设置的默认值 我有这样一个数组变量设置:摄取节点:[“node1”、“node2”、“node3”] 对于主节点,我有相同的设置。为了在elasticsearch.yml文件

我正在创建一个Ansible角色来部署Elastic Stack和各种Beats。我已经安装并运行了所有ES服务器,现在正在部署我需要的各种Beat

我正在为beats config yaml文件创建一个Jinja模板。我需要识别我的摄取节点和端口。我正在部署Foreman的所有内容,因此我使用了那里的参数来覆盖在我的角色中设置的默认值

我有这样一个数组变量设置:
摄取节点:[“node1”、“node2”、“node3”]
对于主节点,我有相同的设置。为了在elasticsearch.yml文件模板的模板中获得该数组,我使用
{{master_nodes | To_yaml}}
,这将生成我在该文件中需要的结果

但是对于beats配置文件,似乎需要将端口(我也定义为变量)附加到每个节点

我正在寻找一种在模板中实现这一点的方法。我这样做是为了使集群具有可伸缩性。如果我需要更多的摄取节点,或者任何类型的节点,我只需将主机名添加到相应的数组变量中,构建新的VM,并在所有节点上重新运行ansible以获得更新的配置

从以下变量:

ingest_nodes: ["node1", "node2", "node3"]
elastic_port: 9200
我需要能够有这样的模板输出:

host: [node1:9200, node2:9200, node3:9200]
下面的任务

    - template:
        src: beats.conf.j2
        dest: beats.conf
使用模板

shell> cat beats.conf.j2
host: [{% for item in ingest_nodes-%}
{{ item }}:{{ elastic_port }}{{ ", " if not loop.last else "" }}
{%- endfor %}]
给予

下面的任务

    - template:
        src: beats.conf.j2
        dest: beats.conf
使用模板

shell> cat beats.conf.j2
host: [{% for item in ingest_nodes-%}
{{ item }}:{{ elastic_port }}{{ ", " if not loop.last else "" }}
{%- endfor %}]
给予


非常好,谢谢!这是我在Ansible中第一次真正进入Jinja2模板。非常好,谢谢!这是我在Ansible中第一次真正进入Jinja2模板。