Saltstack/Jinja: 如何从字符串列表中删除 u' 前缀
Saltstack/Jinja: How to remove the u' prefix from a list of strings
这是盐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
这是盐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