Ansible的YAML中变量内的循环
所以我有一个脚本,我真的不想复制和粘贴大约50次 用{item}}建议的典型循环不起作用,因为它已经在另一个变量中。。这是不幸的 我不明白为什么循环在这种语言中如此困难 这是在Ansible Tower上实现的,但它通常应该像Ansible脚本一样工作。我可以让代码在没有循环的情况下运行,但在我放入循环的那一刻就把它搞砸了 这失败了:Ansible的YAML中变量内的循环,ansible,Ansible,所以我有一个脚本,我真的不想复制和粘贴大约50次 用{item}}建议的典型循环不起作用,因为它已经在另一个变量中。。这是不幸的 我不明白为什么循环在这种语言中如此困难 这是在Ansible Tower上实现的,但它通常应该像Ansible脚本一样工作。我可以让代码在没有循环的情况下运行,但在我放入循环的那一刻就把它搞砸了 这失败了: - name: Start Instances with Persist as "No" ec2: instance_ids: "{{hostvar
- name: Start Instances with Persist as "No"
ec2:
instance_ids: "{{hostvars[groups['tag_Persist_No'][{{item}}]].ec2_id}}"
region: us-east-1
state: running
wait: yes
ignore_errors: yes
loop:
- 0
- 1
这成功:
- name: Start Instances with Persist as "No" 0
ec2:
instance_ids: "{{hostvars[groups['tag_Persist_No'][0]].ec2_id}}"
region: us-east-1
state: running
wait: yes
ignore_errors: yes
- name: Start Instances with Persist as "No" 1
ec2:
instance_ids: "{{hostvars[groups['tag_Persist_No'][1]].ec2_id}}"
region: us-east-1
state: running
wait: yes
ignore_errors: yes
错误是
template error while templating string: expected token ':'. got '}'. String: {{hostvars[groups['tag_Persist_No'][{{item}}]].ec2_id}}
这是在循环中使用var的正确语法:
instance_ids: "{{ hostvars[groups['tag_Persist_No'][item]].ec2_id }}"
您只是简单地添加了额外的花括号,而这些花括号与此无关,因为您已经在jinja2模板表达式中了。效果很好-谢谢。。真不敢相信我竟然没有想到这一点。