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

时间:2015-01-26 19:12:26

标签: ansible

这是我的示例,不确定是否可以这样做,但我想从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

1 个答案:

答案 0 :(得分:1)

这不起作用,因为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

在该示例中,我假设您在item[0].dest作业中表示item[0].src而非dest