Ansible Pilot

Read a JSON file into a variable - Ansible lookup plugin file

How to automate the reading of example.json file on Ansible host, assign to a variable and use in your Ansible Playbook code.

October 9, 2022
Access the Complete Video Course and Learn Quick Ansible by 200+ Practical Lessons

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

The JSON (JavaScript Object Notation) is an open standard file format used a lot for data interchange. I’m going to show you a live demo with some simple Ansible code. I’m Luca Berton, and welcome to today’s episode of Ansible Pilot.

Ansible reads a JSON file into a variable

Let’s dive deep 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. The “from_json” is an Ansible-specific filter to convert the input to JSON. Let’s combine the result of the file lookup plugin with the from_json filter for our use case.

The Best Resources For Ansible

Certifications

Video Course

Printed Book

eBooks

demo

How to read the example.json JSON file, assign it to a variable and use it in your Ansible Playbook code.

code

{
  "name": "John",
  "age": 30
}
---
- name: json read demo
  hosts: localhost
  vars:
    jsondata: "{{ lookup('file', 'example.json') | from_json }}"
  tasks:
    - name: Print variable
      ansible.builtin.debug:
        var: jsondata

execution

$ ansible-playbook read_json.yml 
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the
implicit localhost does not match 'all'
PLAY [json read demo] *******************************************************************
TASK [Gathering Facts] ******************************************************************
ok: [localhost]
TASK [Print variable] *******************************************************************
ok: [localhost] => {
    "jsondata": {
        "age": 30,
        "name": "John"
    }
}
PLAY RECAP ******************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

idempotency

$ ansible-playbook read_json.yml 
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the
implicit localhost does not match 'all'
PLAY [json read demo] *******************************************************************
TASK [Gathering Facts] ******************************************************************
ok: [localhost]
TASK [Print variable] *******************************************************************
ok: [localhost] => {
    "jsondata": {
        "age": 30,
        "name": "John"
    }
}
PLAY RECAP ******************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

code with ❤️ in GitHub

Recap

Now you know how to read a JSON file into a variable on the 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

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

Access the Complete Video Course and Learn Quick Ansible by 200+ Practical Lessons
Follow me

Subscribe not to miss any new releases