如何解决Saltstack/Jinja:如何从字符串列表中删除 u' 前缀
这是盐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
解决方法
这个问题似乎与编码有关,因为我正在使用下面的示例按预期呈现配置。
我的 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 list -
语法。我们可以有一个 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"
,
tojson
选项需要在 tmpl 文件中,而不是 config.sls
filebeat.yml.tmpl
output.logstash:
hosts: {{ testval|tojson }}
loadbalance: True
index: filebeat
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。