Ansible include_vars Module — Load Variables from Files Dynamically

Introduction

The ansible.builtin.include_vars module load YAML/JSON variable files dynamically based on conditions, OS, or environment. This guide covers installation, parameters, practical examples, and troubleshooting for production use.

Quick Reference

- name: Basic include_vars usage
  ansible.builtin.include_vars:
    state: present

Parameters

ParameterRequiredDefaultDescription
stateNopresentDesired state (present/absent)
nameYes—Target resource name

Installation

# Install the collection
ansible-galaxy collection install ansible.builtin

# Verify installation
ansible-doc ansible.builtin.include_vars

Basic Example

---
- name: Load Variables from Files Dynamically
  hosts: all
  become: true
  tasks:
    - name: Ensure resource is configured
      ansible.builtin.include_vars:
        name: example
        state: present

Advanced Examples

Idempotent Configuration

- name: Configure with all options
  ansible.builtin.include_vars:
    name: production
    state: present
  register: result

- name: Show result
  ansible.builtin.debug:
    var: result

Conditional Execution

- name: Only on specific OS
  ansible.builtin.include_vars:
    name: example
    state: present
  when: ansible_os_family == "Debian"

Loop Over Multiple Items

- name: Configure multiple resources
  ansible.builtin.include_vars:
    name: "{{ item }}"
    state: present
  loop:
    - resource1
    - resource2
    - resource3

Error Handling

- name: Handle failures gracefully
  block:
    - name: Attempt configuration
      ansible.builtin.include_vars:
        name: example
        state: present
  rescue:
    - name: Log failure
      ansible.builtin.debug:
        msg: "Failed to configure include_vars: {{ ansible_failed_result.msg }}"

Troubleshooting

ErrorCauseFix
Module not foundCollection not installedansible-galaxy collection install ansible.builtin
Permission deniedInsufficient privilegesAdd become: true
TimeoutNetwork/resource unavailableIncrease timeout, check connectivity
Idempotency issueModule reports changed every runCheck parameter values match desired state

Best Practices

  1. Use FQCN — always use ansible.builtin.include_vars instead of short name
  2. Register results — capture output for conditional logic
  3. Handle errors — use block/rescue for graceful failure handling
  4. Test in check mode — run with --check before applying
  5. Pin collection version — specify version in requirements.yml
  • ansible.builtin.debug — Display variable values
  • ansible.builtin.assert — Validate conditions
  • ansible.builtin.set_fact — Set variables from task results

Conclusion

The ansible.builtin.include_vars module provides idempotent load YAML/JSON variable files dynamically based on conditions, OS, or environment Always use the FQCN, handle errors with block/rescue, and test with --check mode before production deployment.