在Python中,我使用以下代码:打印1至5和11至15
for i in range(1, 6) + range(11, 16):
print i
ansible Playbook中是否有类似的方法来实现相同的目的。
我看到with_sequence可用,如下所示,我可以使用
with_sequence: start=1 end=5
但是我无法在一个循环中实现这一目标,我可能最终会使用两个循环,一个循环用于start = 1 end = 5,第二个循环用于start = 11 end = 15
答案 0 :(得分:0)
这可能是一个选择:
tasks:
- debug: msg="{{ '%02d' | format(item) }}"
loop: "{{ range(1, 6)|list + range(11, 16)|list }}"
答案 1 :(得分:0)
在给定的ansible循环选项中,with_sequence被循环替换,并且范围功能对应于ansible doc https://docs.ansible.com/ansible/2.7/user_guide/playbooks_loops.html#with-sequence
- name: a play that runs entirely on the ansible host
hosts: 127.0.0.1
connection: local
tasks:
- name: range task
debug:
msg: "{{ item }}"
loop:
- "{{range(1, 6)|list + range(11, 16)|list }}"
输出:
PLAY [a play that runs entirely on the ansible host] *************************************************************************************************
TASK [Gathering Facts] *******************************************************************************************************************************
ok: [127.0.0.1]
TASK [range task] ************************************************************************************************************************************
ok: [127.0.0.1] => (item=[1, 2, 3, 4, 5, 11, 12, 13, 14, 15]) => {
"msg": [
1,
2,
3,
4,
5,
11,
12,
13,
14,
15
]
}
PLAY RECAP *******************************************************************************************************************************************
127.0.0.1 : ok=2 changed=0 unreachable=0 failed=0
可用版本: ansible 2.7.1