ansible.builtin.include_vars (v2.16.5) — module

Load variables from files, dynamically within a task

| "added in version" 1.4 of ansible.builtin"

Authors: Allen Sanabria (@linuxdynasty)

This plugin has a corresponding action plugin.

Install Ansible via pip

Install with pip install ansible-core==2.16.5

Description

Loads YAML/JSON variables dynamically from a file or directory, recursively, during task runtime.

If loading a directory, the files are sorted alphabetically before being loaded.

This module is also supported for Windows targets.

To assign included variables to a different host than C(inventory_hostname), use C(delegate_to) and set C(delegate_facts=yes).

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include vars of stuff.yaml into the 'stuff' variable (2.2).
  ansible.builtin.include_vars:
    file: stuff.yaml
    name: stuff
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Conditionally decide to load in variables into 'plans' when x is 0, otherwise do not. (2.2)
  ansible.builtin.include_vars:
    file: contingency_plan.yaml
    name: plans
  when: x == 0
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Load a variable file based on the OS type, or a default if not found. Using free-form to specify the file.
  ansible.builtin.include_vars: "{{ lookup('ansible.builtin.first_found', params) }}"
  vars:
    params:
      files:
        - '{{ansible_distribution}}.yaml'
        - '{{ansible_os_family}}.yaml'
        - default.yaml
      paths:
        - 'vars'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Bare include (free-form)
  ansible.builtin.include_vars: myvars.yaml
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include all .json and .jsn files in vars/all and all nested directories (2.3)
  ansible.builtin.include_vars:
    dir: vars/all
    extensions:
      - 'json'
      - 'jsn'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include all default extension files in vars/all and all nested directories and save the output in test. (2.2)
  ansible.builtin.include_vars:
    dir: vars/all
    name: test
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include default extension files in vars/services (2.2)
  ansible.builtin.include_vars:
    dir: vars/services
    depth: 1
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include only files matching bastion.yaml (2.2)
  ansible.builtin.include_vars:
    dir: vars
    files_matching: bastion.yaml
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Include all .yaml files except bastion.yaml (2.3)
  ansible.builtin.include_vars:
    dir: vars
    ignore_files:
      - 'bastion.yaml'
    extensions:
      - 'yaml'
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
- name: Ignore warnings raised for files with unknown extensions while loading (2.7)
  ansible.builtin.include_vars:
    dir: vars
    ignore_unknown_extensions: True
    extensions:
      - ''
      - 'yaml'
      - 'yml'
      - 'json'

Inputs

    
dir:
    description:
    - The directory name from which the variables should be loaded.
    - If the path is relative and the task is inside a role, it will look inside the role's
      vars/ subdirectory.
    - If the path is relative and not inside a role, it will be parsed relative to the
      playbook.
    type: path
    version_added: '2.2'
    version_added_collection: ansible.builtin

file:
    description:
    - The file name from which variables should be loaded.
    - If the path is relative, it will look for the file in vars/ subdirectory of a role
      or relative to playbook.
    type: path
    version_added: '2.2'
    version_added_collection: ansible.builtin

name:
    description:
    - The name of a variable into which assign the included vars.
    - If omitted (null) they will be made top level vars.
    type: str
    version_added: '2.2'
    version_added_collection: ansible.builtin

depth:
    default: 0
    description:
    - When using O(dir), this module will, by default, recursively go through each sub
      directory and load up the variables. By explicitly setting the depth, this module
      will only go as deep as the depth.
    type: int
    version_added: '2.2'
    version_added_collection: ansible.builtin

free-form:
    description:
    - This module allows you to specify the 'file' option directly without any other options.
    - There is no 'free-form' option, this is just an indicator, see example below.

extensions:
    default:
    - json
    - yaml
    - yml
    description:
    - List of file extensions to read when using O(dir).
    elements: str
    type: list
    version_added: '2.3'
    version_added_collection: ansible.builtin

ignore_files:
    description:
    - List of file names to ignore.
    elements: str
    type: list
    version_added: '2.2'
    version_added_collection: ansible.builtin

files_matching:
    description:
    - Limit the files that are loaded within any directory to this regular expression.
    type: str
    version_added: '2.2'
    version_added_collection: ansible.builtin

hash_behaviour:
    choices:
    - replace
    - merge
    default: null
    description:
    - If set to V(merge), merges existing hash variables instead of overwriting them.
    - If omitted (V(null)), the behavior falls back to the global C(hash_behaviour) configuration.
    - This option is self-contained and does not apply to individual files in O(dir).
      You can use a loop to apply O(hash_behaviour) per file.
    type: str
    version_added: '2.12'
    version_added_collection: ansible.builtin

ignore_unknown_extensions:
    default: false
    description:
    - Ignore unknown file extensions within the directory.
    - This allows users to specify a directory containing vars files that are intermingled
      with non-vars files extension types (e.g. a directory with a README in it and vars
      files).
    type: bool
    version_added: '2.7'
    version_added_collection: ansible.builtin

Outputs

ansible_facts:
  description: Variables that were included and their values
  returned: success
  sample:
    variable: value
  type: dict
ansible_included_var_files:
  description: A list of files that were successfully included
  returned: success
  sample:
  - /path/to/file.json
  - /path/to/file.yaml
  type: list
  version_added: '2.4'
  version_added_collection: ansible.builtin

See also