workshops

Training Course for Ansible Automation Platform

This project is maintained by ericzji

Exercise 1.6 - Templates

Read this in other languages: uk English, japan 日本語.

Ansible uses Jinja2 templating to modify files before they are distributed to managed hosts. Jinja2 is one of the most used template engines for Python (http://jinja.pocoo.org/).

Step 6.1 - Using Templates in Playbooks

When a template for a file has been created, it can be deployed to the managed hosts using the template module, which supports the transfer of a local file from the control node to the managed hosts.

As an example of using templates you will change the motd file to contain host-specific data.

First in the ~/ansible-files/ directory create the template file motd-facts.j2:

Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture.

The template file contains the basic text that will later be copied over. It also contains variables which will be replaced on the target machines individually.

Next we need a playbook to use this template. In the ~/ansible-files/ directory create the Playbook motd-facts.yml:

---
- name: Fill motd file with host data
  hosts: node1
  become: yes
  tasks:
    - template:
        src: motd-facts.j2
        dest: /etc/motd
        owner: root
        group: root
        mode: 0644

You have done this a couple of times by now:

You should see how Ansible replaces the variables with the facts it discovered from the system.

Step 6.2 - Challenge Lab

Add a line to the template to list the current kernel of the managed node.

Tip

Do a grep -i for kernel

Warning

Solution below!

[student<X>@ansible ansible-files]$ ansible node1 -m setup|grep -i kernel
       "ansible_kernel": "3.10.0-693.el7.x86_64",
Welcome to {{ ansible_hostname }}.
{{ ansible_distribution }} {{ ansible_distribution_version}}
deployed on {{ ansible_architecture }} architecture
running kernel {{ ansible_kernel }}.

Click here to return to the Ansible for Red Hat Enterprise Linux Workshop