Ansible Template Module Tutorial - Complete Beginner's Guide

In this tutorial video I give you a complete beginner’s guide to the super useful Ansible Template Module. You can use the Ansible Template Module to write files to a remote host using the Jinja2 templating language. The Jinja2 templating language lets you write files with dynamic content either based on global variables or host-specific variables. I’ve split this video into sections to make it easier to navigate:

– 0:27 — Template a Single File (onto a remote host)
– 3:46 — Set Permissions on Templated Files (includes ownership)
– 5:53 — Template Multiple Files (onto a remote host)


Thanks for watching and hope it’s entertaining/useful for you! Hit me up in the comments if you have any questions or feedback 💪.

Related & Channel
▶️ == Playlist of all Ansible videos
⭐️ == Subscribe to our YouTube Channel

Our Site & Socials
🌐 ==
🐦 == @TopTechSkills on Twitter
🐦 == @PercyGrunwald on Twitter
😃 == @TopTechSkills on Facebook
🕹 == @PercyGrunwald on Twitch


27 thoughts on “Ansible Template Module Tutorial – Complete Beginner's Guide”
  1. Great content, thank you. I have a use case that's slightly more complex, wondering if the template module can help. I'd like to manage the content within a specific section of a configuration file on my Linux servers. Is it possible to search for a specific location within an existing text file and inject a few lines?

  2. i tired to use in dest: {{ ssh_config_file }} , though no errors, it does not copy file
    defaults/main.yml as ssh_config_file: /etc/ssh/ssh_config
    templates/ssh_config.j2 file exists

  3. Thanks for the video!
    I have one question on what is difference between blockinfile and template in Ansible ?
    I have parameters defined in Jenkins to store some user information from Jenkins and store in meta file – Is there any better way to capture data from user in Ansible other than block file??

  4. Hi, great video quality. June 2021 I try to follow your steps, on Ubuntu 20.04, and I had fail. After changing ansible_user to ansible_user_id. I achieved the goal

  5. Could you please let me know about PsExec module

    I tried with some .exe file.
    But the playbook sticks in the middle.
    Will not proceed further at all.
    I waited for 30+ mins.
    Still the same

  6. so basically using jinja templates have use only if you have different types of host otherwise it is of no use as one can just copy the conf files.
    does sourcing a conf file in the terminal containing password considered a bad security practice or is it alright in production?

  7. Hi..Could you create one on how to sudo to root or some other user ..

    Im getting
    Sorry, user test is not allowed to execute '/bin/sh c echo BECOME-SUCCESS* /usr/bin/python /home/test/.ansible/tmp/ansible-tmp-1597731916.1-91350856264363/' as root on server.rn

  8. Thanks for the video! Amazing content! I've a question – not related to template module. I've a use case of using Ansible to call a REST Api render it in JSON and then extract data from one much needed object out of the data rendered. Just getting started with Ansible. I was thinking I could use the shell module to curl the api in JSON and extract that one object from JSON using JSON parsor. What do you think? Your comment would be appreciated.

  9. If you have the time. I get one error stating: "fatal: [dnsserver]: FAILED! => {"changed": false, "msg": "AnsibleUndefinedVariable: 'dnsserver' is undefined"}" my dnsserver is the variable of my machine. The weird part is that the rest of my playbook is running smoothly (the playbook itself doesn't contain vars either). Now i did this for replacing an nginx configuration file. I'm not including the code because it's almost identical to yours. Do you know where I should look for this problem. Never engaged this before. Thanks beforehand and great video 🙂

Leave a Reply

Your email address will not be published.

Captcha loading...