将数组复制到模板中会为每个变量引入额外的'u'

时间:2019-10-25 13:47:16

标签: ansible jinja2

我正在使用Ansible设置Traefik节点,为此,我想在模板中插入一个trustedIps数组。 但是,在将数组插入模板时,它会为每个数组元素添加一个字符'u'。

我认为Traefik配置文件期望使用带字符串的简单数组,并且希望使用双引号,但是我不确定,如果单引号有效,我会尝试使用

我还尝试在变量和替换之间添加保险柜,但这似乎无关紧要。

现在,我确实找到了另一个有关同一问题的人的问题,这确实为我解决了一些问题,但是我仍然不确定如何解决此问题,因为我没有遍历像这样的变量另一个问题的人做到了。 Link to other question. 关于如何实施解决方案的任何想法?

无论如何,为了实现这一点,我创建了以下代码。 我的模板条目如下所示:

trustedIPs = {{ trustedIps | safe | replace('\'', '\"') }}

我的变量如下:

trustedIps: ["127.0.0.1/32", "XX.XXX.X.XX"]

我希望它看起来像这样:

trustedIps = ["127.0.0.1/32", "XX.XXX.X.XX"]

但是我的结果看起来像这样:

trustedIps = [u"127.0.0.1/32", u"XX.XXX.X.XX"]

1 个答案:

答案 0 :(得分:2)

下面的模板可以完成工作

$ cat test.j2
trustedIPs = ["{{ trustedIps|join('", "') }}"]

戏剧

  vars:
    trustedIps: ["127.0.0.1/32", "XX.XXX.X.XX"]
  tasks:
    - template:
        src: test.j2
        dest: test

给予

$ cat test
trustedIPs = ["127.0.0.1/32", "XX.XXX.X.XX"]