On Tue, 8 Sep 2020 12:49:07 -0700 (PDT)
Sven <
gebir...@gmail.com> wrote:
> ... role "x" that uses two default vars:
> (roles/x/defaults/main.yml)
> server1var: server1
> server2var: server2
>
> ... playbook ...
> vars:
> server1var: server3
> server2var: server4
> tasks:
> - include_role:
> name: x
> Is it possible that the tasks executed by "include_role" take the vars from
> the current playbook?
Yes. It's possible. For example
shell> cat roles/role_x/defaults/main.yml
server1var: server1
server2var: server2
shell> cat roles/role_x/tasks/main.yml
- debug:
var: server1var
shell> cat playbook.yml
- hosts: localhost
tasks:
- include_role:
name: role_x
- include_role:
name: role_x
vars:
server1var: server3
shell> ansible-playbook playbook.yml
TASK [include_role : role_x] ****
TASK [role_x : debug] ****
ok: [localhost] => { "server1var": "server1" }
TASK [include_role : role_x] ****
TASK [role_x : debug] ****
ok: [localhost] => { "server1var": "server3" }
> Can anyone tell me how i can do that?
> is it just like this maybe?
>
> - include_role:
> name: x
> vars:
> server1var: server3
> server2var: server4
Yes. This is the best way. FWIW, there are issues. See:
Modified "vars:" not visible inside include_role. #69799
https://github.com/ansible/ansible/issues/69799
--
Vladimir Botka