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