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
| Parameter | Required | Default | Description |
|---|---|---|---|
state | No | present | Desired state (present/absent) |
name | Yes | — | 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
| Error | Cause | Fix |
|---|---|---|
| Module not found | Collection not installed | ansible-galaxy collection install ansible.builtin |
| Permission denied | Insufficient privileges | Add become: true |
| Timeout | Network/resource unavailable | Increase timeout, check connectivity |
| Idempotency issue | Module reports changed every run | Check parameter values match desired state |
Best Practices
- Use FQCN — always use
ansible.builtin.include_varsinstead of short name - Register results — capture output for conditional logic
- Handle errors — use
block/rescuefor graceful failure handling - Test in check mode — run with
--checkbefore applying - Pin collection version — specify version in
requirements.yml
Related Modules
ansible.builtin.debug— Display variable valuesansible.builtin.assert— Validate conditionsansible.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.