Ansible : Schleifen realisieren
Der Eintrag dient mir hauptsächlich als Gedächtnisstütze, braucht man nicht jeden Tag 
Eine einfache Schleife mit einem Counter von 1 bis 4 kann man so realisieren.
Verschachtelte Schleifen mit 2 dics kann man so realisieren (in diesem Beispiel wurden Benutzer die Rechte auf MySQL Datenbanken eingetragen)
Jetzt gibt es noch die Möglichkeit mit inner und outer loop zu arbeiten. Gestartet wird dann das playbook outer_loop.yaml
outer_loop.yaml
Quellen :
Ansible Documentation - Loops
Ansible Documentation - Complex Loops
Eine einfache Schleife mit einem Counter von 1 bis 4 kann man so realisieren.
- hosts: localhost
tasks:
- name: loop test
debug:
msg: "{{ item }}"
with_sequence: count=4Liefert dannTASK [loop test] ***************************************************************************************************
ok: [localhost] => (item=1) => {
"msg": "1"
}
ok: [localhost] => (item=2) => {
"msg": "2"
}
ok: [localhost] => (item=3) => {
"msg": "3"
}
ok: [localhost] => (item=4) => {
"msg": "4"
}Verschachtelte Schleifen mit 2 dics kann man so realisieren (in diesem Beispiel wurden Benutzer die Rechte auf MySQL Datenbanken eingetragen)
- hosts: localhost
tasks:
- name: loop test
debug:
msg: "name {{ item[0] }} db : {{ item[1] }}.*:ALL"
with_nested:
- [ 'user01', 'user02' ]
- [ 'db01', 'db02', 'db03' ]Liefert dannTASK [loop test] ***************************************************************************************************
ok: [localhost] => (item=[u'user01', u'db01']) => {
"msg": "name user01 db : db01.*:ALL"
}
ok: [localhost] => (item=[u'user01', u'db02']) => {
"msg": "name user01 db : db02.*:ALL"
}
ok: [localhost] => (item=[u'user01', u'db03']) => {
"msg": "name user01 db : db03.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db01']) => {
"msg": "name user02 db : db01.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db02']) => {
"msg": "name user02 db : db02.*:ALL"
}
ok: [localhost] => (item=[u'user02', u'db03']) => {
"msg": "name user02 db : db03.*:ALL"
}
Jetzt gibt es noch die Möglichkeit mit inner und outer loop zu arbeiten. Gestartet wird dann das playbook outer_loop.yaml
outer_loop.yaml
- hosts: localhost
tasks:
- include_tasks: inner_loop.yaml
with_sequence: count=4
loop_control:
loop_var: IDXinner_loop.yaml- debug:
msg: "create directory /opt/{{ item}}-{{ IDX }}"
with_items:
- dic1
- dic2
- dic3Das liefert dannTASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
"msg": "create directory /opt/dic1-1"
}
ok: [localhost] => (item=dic2) => {
"msg": "create directory /opt/dic2-1"
}
ok: [localhost] => (item=dic3) => {
"msg": "create directory /opt/dic3-1"
}
TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
"msg": "create directory /opt/dic1-2"
}
ok: [localhost] => (item=dic2) => {
"msg": "create directory /opt/dic2-2"
}
ok: [localhost] => (item=dic3) => {
"msg": "create directory /opt/dic3-2"
}
TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
"msg": "create directory /opt/dic1-3"
}
ok: [localhost] => (item=dic2) => {
"msg": "create directory /opt/dic2-3"
}
ok: [localhost] => (item=dic3) => {
"msg": "create directory /opt/dic3-3"
}
TASK [debug] *******************************************************************************************************
ok: [localhost] => (item=dic1) => {
"msg": "create directory /opt/dic1-4"
}
ok: [localhost] => (item=dic2) => {
"msg": "create directory /opt/dic2-4"
}
ok: [localhost] => (item=dic3) => {
"msg": "create directory /opt/dic3-4"
}Quellen :
Ansible Documentation - Loops
Ansible Documentation - Complex Loops