I have defined a variable var_for_all in group_vars/all.yml and another one variables_role_var1 in roles/../vars/main.yml. Overriding them in playbook using import_role and include_role seems to follow different precedence rules and results different values.
I was under the assumption that first role block will output below debug message:
"msg": "var_for_all = From group_vars/all.yml, variables_role_var1 = from role vars/ dir"
But getting output as:
"msg": "var_for_all = From playbook import_role_test2, variables_role_var1 = from role vars/ dir"
Could anyone please explain the behavior or point me if I am missing something? Have gone thorough variable precedence, Dynamic vs Static and Roles.
my_playbook.yml
- hosts: localhost
gather_facts: no
tasks:
- name: import_role_test1
import_role:
name: variables
tasks_from: precedence
- name: import_role_test2
import_role:
name: variables
tasks_from: precedence
vars:
var_for_all: From playbook import_role_test2
variables_role_var1: From playbook import_role_test2
- name: include_role_test3
include_role:
name: variables
tasks_from: precedence
vars:
var_for_all: From playbook import_role_test3
variables_role_var1: From playbook import_role_test3