Örnegin bir dosyamizda icinde degiskenler olan bir metin olsun yada ayarlar ve bunu her hosta göre kullanmak istiyoruz.
Sistem {{ ansible_facts.hostname }} e giris yaptiniz.
IP : {{ ansible_facts.default_ipv4.address }}
Herhangi bir problem icin sistem yöneticisine EMail ile bilgi verin.
E-Mail : {{ admin_email }}
Bu metin farkedeceginiz gibi her sistem de farkli olmalidir.
- name: Using Jinja2
hosts: linux
become: yes
vars:
admin_email: admin@testing.com
tasks:
- name: Deploy motd
template:
dest: /etc/motd
src: motd.j2
Default deger
Bazen bir degisken her yere uymayabilir, o zaman defualt deger verebiliriz.
{{ admin_email | default ('buyuk_admin@testing.com') }}
Jinja2 comment
Jinja2 icinde de comment yazabiliriz.
{# Your comment here #}
Loop
Istersek looplari da kullanabiliriz.
{% for item in checks %}
{{ loop.index }}: {{ item }}
{% endfor %}
Looplarda görülecegi gibi özel bir syntax var
Örnek olarak yapilacak checkleri text olarak yazalim sistemde.
- name: Using Jinja2
hosts: linux
become: yes
vars:
admin_email: admin@testing.com
checks:
- disk usage
- ram usage
- update status
- firewall rules
tasks:
- name: Deploy checklist
template:
dest: /tmp/checklist.txt
src: checklist.j2
checklist.j2 dosyasi ise :
Please report status to {{ admin_email }}
-------------------------------------------
{# For loop #}
{% for item in checks %}
{{ loop.index }}: {{ item }}
{% endfor %}
-------------------------------------------
END
bu pipeline calisinca ciktisi(/tmp/checklist.txt icerigi) asagida ki gibi olacaktir
Please report status to admin@testing.com
-------------------------------------------
1: disk usage
2: ram usage
3: update status
4: firewall rules
-------------------------------------------
END