1. 循环一个列表
[root@wyl01 auto]# cat xh.yml
---
- hosts: all
gather_facts: no
tasks:
- name: dispaly list
debug: msg="{{item}}"
with_items:
- one
- two
- three
- four
[root@wyl01 auto]# ansible-playbook -i hosts xh.yml
PLAY [all] *************************************************************************************************************
TASK [dispaly xunhuan] *************************************************************************************************
ok: [192.168.52.129] => (item=one) => {
"changed": false,
"item": "one",
"msg": "one"
}
ok: [192.168.52.129] => (item=two) => {
"changed": false,
"item": "two",
"msg": "two"
}
ok: [192.168.52.129] => (item=three) => {
"changed": false,
"item": "three",
"msg": "three"
}
ok: [192.168.52.129] => (item=four) => {
"changed": false,
"item": "four",
"msg": "four"
}
2. 循环一个字典
[root@wyl01 auto]# cat dict.yml
---
- hosts: all
gather_facts: no
tasks:
- name: dispaly dict
debug: msg="name==>{{item.key}},value==>{{item.value}}"
with_items:
- {key: "one",value: "v1"}
- {key: "two",value: "v2"}
[root@wyl01 auto]# ansible-playbook -i hosts dict.yml
PLAY [all] *************************************************************************************************************
TASK [dispaly dict] ****************************************************************************************************
ok: [192.168.52.129] => (item={u'key': u'one', u'value': u'v1'}) => {
"changed": false,
"item": {
"key": "one",
"value": "v1"
},
"msg": "name==>one,value==>v1"
}
ok: [192.168.52.129] => (item={u'key': u'two', u'value': u'v2'}) => {
"changed": false,
"item": {
"key": "two",
"value": "v2"
},
"msg": "name==>two,value==>v2"
}
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=1 changed=0 unreachable=0 failed=0
3. 嵌套循环
[root@wyl01 auto]# cat qtxuh.yml
---
- hosts: all
gather_facts: no
tasks:
- name: display qitaoxunhuan
debug: msg="{{item[0]}}===>{{item[1]}}"
with_nested:
- ['A','B']
- ['a','b','c']
[root@wyl01 auto]# ansible-playbook -i hosts qtxuh.yml
PLAY [all] *************************************************************************************************************
TASK [display qitaoxunhuan] ********************************************************************************************
ok: [192.168.52.129] => (item=[u'A', u'a']) => {
"changed": false,
"item": [
"A",
"a"
],
"msg": "A===>a"
}
ok: [192.168.52.129] => (item=[u'A', u'b']) => {
"changed": false,
"item": [
"A",
"b"
],
"msg": "A===>b"
}
ok: [192.168.52.129] => (item=[u'A', u'c']) => {
"changed": false,
"item": [
"A",
"c"
],
"msg": "A===>c"
}
ok: [192.168.52.129] => (item=[u'B', u'a']) => {
"changed": false,
"item": [
"B",
"a"
],
"msg": "B===>a"
}
ok: [192.168.52.129] => (item=[u'B', u'b']) => {
"changed": false,
"item": [
"B",
"b"
],
"msg": "B===>b"
}
ok: [192.168.52.129] => (item=[u'B', u'c']) => {
"changed": false,
"item": [
"B",
"c"
],
"msg": "B===>c"
}
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=1 changed=0 unreachable=0 failed=0
3. 文件列表
[root@wyl01 auto]# cat file.yml
---
- hosts: all
tasks:
- name: display file list
debug: msg="{{item}}"
with_fileglob:
- /opt/auto/*
[root@wyl01 auto]# ansible-playbook -i hosts file.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [192.168.52.129]
TASK [display file list] ***********************************************************************************************
ok: [192.168.52.129] => (item=/opt/auto/site.yml) => {
"changed": false,
"item": "/opt/auto/site.yml",
"msg": "/opt/auto/site.yml"
}
ok: [192.168.52.129] => (item=/opt/auto/site.retry) => {
"changed": false,
"item": "/opt/auto/site.retry",
"msg": "/opt/auto/site.retry"
}
ok: [192.168.52.129] => (item=/opt/auto/hosts) => {
"changed": false,
"item": "/opt/auto/hosts",
"msg": "/opt/auto/hosts"
}
ok: [192.168.52.129] => (item=/opt/auto/vars.yml) => {
"changed": false,
"item": "/opt/auto/vars.yml",
"msg": "/opt/auto/vars.yml"
}
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=2 changed=0 unreachable=0 failed=0
4 until循环
# 循环条件,不是以Master开头的,循环5次每次5s,直到文件以Master开头
[root@wyl01 auto]# cat loop.yml
---
- hosts: all
tasks:
- name: display loop
shell: cat /root/ansible
register: hosts
until: hosts.stdout.startswith("Master")
retries: 5
delay: 5
[root@wyl01 auto]# ansible-playbook -i hosts loop.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [192.168.52.129]
TASK [display loop] ****************************************************************************************************
FAILED - RETRYING: display loop (5 retries left).
FAILED - RETRYING: display loop (4 retries left).
FAILED - RETRYING: display loop (3 retries left).
changed: [192.168.52.129]
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=2 changed=1 unreachable=0 failed=0
5 for 循环
[root@wyl01 auto]# cat test1.yml
---
- hosts: all
tasks:
- name: get values
shell: "{{item}}"
with_items:
- hostname
- uname
register: ret
- name: display values
debug: msg="{% for i in ret.results %} {{ i.stdout }} {% endfor %}"
[root@wyl01 auto]# ansible-playbook -i hosts test1.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [192.168.52.129]
TASK [get values] ******************************************************************************************************
changed: [192.168.52.129] => (item=hostname)
changed: [192.168.52.129] => (item=uname)
TASK [display values] **************************************************************************************************
ok: [192.168.52.129] => {
"msg": " wyl02 Linux "
}
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=3 changed=1 unreachable=0 failed=0
6 判断when
[root@wyl01 auto]# cat when.yml
---
- hosts: all
gather_facts: yes
tasks:
- name: ceshi when
debug: msg="{{ansible_default_ipv4.address}}"
when: ansible_default_ipv4.address == "192.168.52.129"
[root@wyl01 auto]# ansible-playbook -i hosts when.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************
ok: [192.168.52.129]
ok: [192.168.52.130]
TASK [ceshi when] *****************************************************************************************************
skipping: [192.168.52.130] # 跳过该次循环
ok: [192.168.52.129] => {
"msg": "192.168.52.129"
}
PLAY RECAP *************************************************************************************************************
192.168.52.129 : ok=2 changed=0 unreachable=0 failed=0
192.168.52.130 : ok=1 changed=0 unreachable=0 failed=0