WORKSHOP 6: Templates
In deze oefening behandelen we Jinja2 templates. Ansible gebruikt deze Jinja2 templating om bestanden aan te passen "vooraleer" ze naar de beheerde hosts doorgestuurd worden.
Jinja2 is één van de meest gebruikte template engines voor oa. Python (zie Jinja2 templates)
Doelstelling
In deze workshop leer je:
- Jinja2 als templating instrument te gebruiken.
- templates gebruiken om aangepaste bestanden door te geven met Ansible.
Workshop
Stap 1 - Templates gebruiken in Playbooks
Wanneer een template voor een bepaald bestand werd aangemaakt, dan kan het resultaat uitgerold worden naar de beheerde hosts met de Ansible module template. Via deze module kunnen lokale bestanden dus aangepast én gekopieerd worden naar de beheerde hosts.
Als voorbleeld gaan we de inhoud van het motd-bestand aanpassen met telkens "host-specifieke" data.
-
Creëer een nieuwe "map" met de naam
templatesin de projectmap:[student@ControlHost ansible-files]$ mkdir templates -
Maak in deze subfolder een template-bestand aan met de naam
motd-facts.j2:motd-facts.j2=========================================================================Welcome to {{ ansible_hostname }}.Distributie: {{ ansible_distribution }} {{ ansible_distribution_version}}Deployed on {{ ansible_architecture }} architecture.=========================================================================Bovenstaande template maakt gebruik van de
Ansible facts(verzameld via de eerste impliciete taak in een playbookGathering Facts). De specifieke waardes van deze variabelen worden dan per host vervangen en de file naar de host gestuurd. -
Maak een
Playbookaan met de naammotd-facts.ymldie de module template gebruikt:motd-facts.yml---- name: Fill motd file with host datahosts: node1become: truetasks:- name: Update motd from templateansible.builtin.template:src: motd-facts.j2dest: /etc/motdowner: rootgroup: rootmode: 0644 -
Voer de playbook uit en controleer of, na het inloggen via SSH op
node1demotdaangepast werd.
Stap 2 - Uitbreiding
- Voeg een lijn toe die de huidige kernel versie toevoegt aan de
template en dus aan de
motd.
Zoek de correcte Ansible Fact op die je kan gebruiken in je template.
Oplossing hieronder....
-
Zoek de
Ansible Fact-variabele:[student@ControlHost ansible-files]$ ansible node1 -m setup | grep -i kernel"ansible_kernel": "5.19.0-38-generic","ansible_kernel_version": "#39~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 17 21:16:15 UTC 2", -
Pas de template
motd-facts.j2aan:Welcome to {{ ansible_hostname }}.Distributie: {{ ansible_distribution }} {{ ansible_distribution_version}}Deployed on {{ ansible_architecture }} architecture.Running kernel {{ ansible_kernel }}. -
Laat je playbook nog eens lopen en controleer het resultaat via SSH:
[student@ControlHost ansible-files]$ ssh ubuntu@X.X.X.Xubuntu@X.X.X.Xs password:Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.4.0-70-generic x86_64)Welcome to iac-Managed-Host-1.Distributie: Ubuntu 22.04Deployed on x86_64 architecture.Running kernel 5.15.0-27-generic.Last login: Sun May 1 16:54:57 2022 from A.A.A.Aubuntu@IaC-Managed-Host-1:~$
© Deze workshop werd gebaseerd op de informatie van Red Hat Ansible Automation Platform