【问题标题】:Saltstack/Jinja: How to remove the u' prefix from a list of stringsSaltstack/Jinja:如何从字符串列表中删除 u' 前缀
【发布时间】:2020-12-31 20:39:36
【问题描述】:

这是盐config.sls

{% set testval = ["172.16.49.169:5044", "172.16.51.156:5044"] %}

filebeat_config:
  file.managed:
    - name: /etc/filebeat/filebeat.yml
    - source: salt://filebeat/files/filebeat.yml.tmpl
    - template: jinja
    - user: root
    - mode: 600
    - context:
      logstash_hosts: {{ testval }}

渲染后,主机条目如下所示:

hosts: [u'172.16.49.169:5044', u'172.16.51.156:5044']

如何删除每个字符串前的 u'?

我试过{{ testval|tojson }}{{ testval|json }}- encoding: ascii/utf-8

【问题讨论】:

  • 你能用filebeat.yml.tmpl模板中的相关内容更新问题吗?

标签: salt-stack


【解决方案1】:

这个问题似乎与编码有关,因为我正在使用下面的示例按预期呈现配置。

我的config.sls 状态文件:

{% set testval = ["192.168.1.11:5044", "192.168.1.12:5044"] %}

filebeat_config:
  file.managed:
  - name: /tmp/filebeat.yml
  - source: salt://files/filebeat.yml.j2
  - template: jinja
  - context:
      logstash_hosts: {{ testval }}

filebeat.yml.j2 模板:

hosts: {{ logstash_hosts }}

渲染:

hosts: ['192.168.1.11:5044', '192.168.1.12:5044']

但是

由于 Filebeat 配置遵循 YAML 语法,我们可以使用 YAML 列表- 语法。我们可以有一个filebeat.yml.j2 模板文件,例如:

output.logstash:
  hosts:
  {%- for host in logstash_hosts %}
  - "{{ host }}"
  {%- endfor %} 

使用相同的config.sls状态,配置呈现为:

output.logstash:
  hosts:
  - "192.168.1.11:5044"
  - "192.168.1.12:5044"

【讨论】:

    【解决方案2】:

    tojson 选项需要在 tmpl 文件中,而不是 config.sls

    filebeat.yml.tmpl

    output.logstash:
      hosts: {{ testval|tojson }}
      loadbalance: True
      index: filebeat
    

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 2023-04-05
      • 2017-11-12
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多