ansible 循环案例

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 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值