首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Salt堆栈/Jinja:如何从字符串列表中删除u‘前缀

问Salt堆栈/Jinja:如何从字符串列表中删除u‘前缀
EN

Stack Overflow用户
提问于 2020-12-31 20:39:36
回答 2查看 386关注 0票数 0

这是盐config.sls

代码语言:javascript
复制
{% 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 }}

当呈现时,主机条目如下所示:

代码语言:javascript
复制
hosts: [u'172.16.49.169:5044', u'172.16.51.156:5044']

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-04 22:59:22

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

filebeat.yml.tmpl

代码语言:javascript
复制
output.logstash:
  hosts: {{ testval|tojson }}
  loadbalance: True
  index: filebeat
票数 0
EN

Stack Overflow用户

发布于 2021-01-01 17:03:24

这个问题似乎与编码有关,因为我将按照下面的示例按预期的方式呈现配置。

我的config.sls状态文件:

代码语言:javascript
复制
{% 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模板:

代码语言:javascript
复制
hosts: {{ logstash_hosts }}

呈现:

代码语言:javascript
复制
hosts: ['192.168.1.11:5044', '192.168.1.12:5044']

然而,

因为文件节拍配置遵循YAML语法,所以我们可以使用YAML列表-语法。我们可以有一个filebeat.yml.j2模板文件,如:

代码语言:javascript
复制
output.logstash:
  hosts:
  {%- for host in logstash_hosts %}
  - "{{ host }}"
  {%- endfor %} 

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

代码语言:javascript
复制
output.logstash:
  hosts:
  - "192.168.1.11:5044"
  - "192.168.1.12:5044"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65525390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档