पाठ 11 / 26

Jinja2 Templates

Variables, defaults और loops के साथ templates से configuration files बनाएँ।

एक template, कई files

template module हर host के लिए Jinja2 फ़ाइल render करता है और नतीजा कॉपी करता है। Templates के भीतर {{ var }} मान छापता है, {{ var | default(80) }} filter से विकल्प देता है, और {% for %} loops चलाता है। जो configs host या environment के अनुसार अलग हैं उनके लिए templates उपयोग करें, और static files files/ में copy module के लिए रखें। "managed by Ansible" जैसा header comment लोगों को फ़ाइल हाथ से न बदलने की चेतावनी देता है।

Template

http_port inventory के [web:vars] group से और users play के vars से आता है।

# managed by Ansible - do not edit
server_name={{ inventory_hostname }}
port={{ http_port | default(80) }}
{% for u in users %}
user={{ u }}
{% endfor %}

Render हुई फ़ाइल, चलाकर

यह पहले run से बनी असली out/web1.conf है: hostname, group variable से पोर्ट 8080, और हर user के लिए एक पंक्ति।

# managed by Ansible - do not edit
server_name=web1
port=8080
user=asha
user=ravi

त्वरित जाँच: `{{ http_port | default(80) }}` क्या करता है?

  • परिभाषित हो तो error देता है
  • हमेशा 80 छापता है
  • http_port हटाता है
  • http_port परिभाषित हो तो वही, वरना 80
Answer

http_port परिभाषित हो तो वही, वरना 80 — default filter तभी विकल्प देता है जब variable अपरिभाषित हो।