How to read a file into a variable on the host with Ansible?

I’m going to show you a live Playbook with some simple Ansible code. I’m Luca Berton and welcome to today’s episode of Ansible Pilot.

Ansible read a file into a variable

  • ansible.builtin.file
  • read file contents

Let’s deep dive into the Ansible lookup plugin file. Plugins are a way to expand the Ansible functionality. With lookup plugins specifically, you can load variables or templates with information from external sources. The full name is ansible.builtin.file, it’s part of ansible-core and is included in all Ansible installations. The purpose of the file lookup plugin is to read file contents.

Parameters and Return Values

Parameters

  • _terms string - path(s) of files to read

Return Values

  • _raw list - content of file(s)

The parameters of the lookup plugin file. The only required parameter is the default “_terms”, with the path(s) of files to read. The normal usage is to assign the lookup plugin to a variable name that you could use in your playbook.

Playbook

Read a file into a variable on the host with Ansible Playbook.

code

---
- name: read file on host
  hosts: all
  vars:
   contents: "{{ lookup('file','example.txt') }}"
  tasks:
   - name: print file
     ansible.builtin.debug:
      msg: "the content of file is {{ contents }}"

execution

ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory variables/read-file.yml
PLAY [read file on host] **************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [print file] *********************************************************************************
ok: [demo.example.com] => {
    "msg": "the content of file is example contents"
}
PLAY RECAP ****************************************************************************************
demo.example.com           : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

idempotency

ansible-pilot $ ansible-playbook -i virtualmachines/demo/inventory variables/read-file.yml
PLAY [read file on host] **************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [demo.example.com]
TASK [print file] *********************************************************************************
ok: [demo.example.com] => {
    "msg": "the content of file is example contents"
}
PLAY RECAP ****************************************************************************************
demo.example.com           : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
ansible-pilot $

code with ❤️ in GitHub

Conclusion

Now you know how to read a file into a variable on host with Ansible. Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.

Academy

Learn the Ansible automation technology with some real-life examples in my Udemy 300+ Lessons Video Course.

BUY the Complete Udemy 300+ Lessons Video Course

My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps

BUY the Complete PDF BOOK to easily Copy and Paste the 250+ Ansible code

Want to keep this project going? Please donate

Patreon Buy me a Pizza