Ansible 1.8.2 嵌套循环,试图在 item[0] 字符串中输出 item[1],但被转义

Ansible 1.8.2 nested loop, trying to output item[1] in item[0] string, but its being escaped

这是我的示例,不确定是否可以这样做,但我想从 sites 数组中输出值,特别是 item[1].site,在 item[0].dest 中,但它看起来就像它正在将 {{ item[1].site }} 转义为 {# item[1].site #}。有没有办法防止它转义字符串?

- name: Put files into docker directory
  template: src={{ item[0].src }}  dest={{ item[0].src }}
  with_nested:
    - [
        { src: 'Dockerfile.j2', dest: "/opt/docker-apache2-fpm/{{ item[1].site }}/Dockerfile" },
      ]
    - sites

这是输出:

failed: [192.168.200.87] => (item=[{'dest': u'/opt/docker-apache2-fpm/{# item[1].site #}/Dockerfile', 'src': 'Dockerfile.j2'}, {'site': 'admin.mysite.com', 'user': 'mysite', 'uid': 11004}]) => {"failed": true, "item": [{"dest": "/opt/docker-apache2-fpm/{# item[1].site #}/Dockerfile", "src": "Dockerfile.j2"}, {"site": "admin.mysite.com", "uid": 11004, "user": "mysite"}]}
msg: Destination directory  does not exist

那是行不通的,因为 Ansible 没有重新评估元素。但是您可以使用 replace 过滤器来归档您的目标。

- name: Put files into docker directory
  template: src={{ item[0].src }}  dest={{ item[0].dest | replace("%site%", item[1].site) }}
  with_nested:
    - [
        { src: 'Dockerfile.j2', dest: "/opt/docker-apache2-fpm/%site%/Dockerfile" },
      ]
    - sites

在那个例子中,我假设您在 dest 作业中指的是 item[0].dest 而不是 item[0].src