- hosts: testhost vars: - test1: key1: val1 environment: PATH: '{{ansible_env.PATH + ":/lola"}}' lola: 'ido' tasks: - name: ensure special case with ansible_env is skipped but others still work assert: that: - lookup('env', 'PATH') == ansible_env.PATH - "'/lola' not in ansible_env.PATH" - ansible_env.lola == 'ido' - name: check that envvar does not exist shell: echo $key1 register: test_env - name: assert no val in stdout assert: that: - '"val1" not in test_env.stdout_lines' - name: check that envvar does exist shell: echo $key1 environment: "{{test1}}" register: test_env2 - name: assert val1 in stdout assert: that: - '"val1" in test_env2.stdout_lines' - hosts: testhost vars: - test1: key1: val1 - test2: key1: not1 other1: val2 environment: "{{test1}}" tasks: - name: check that play envvar does exist shell: echo $key1 register: test_env3 - name: assert val1 in stdout assert: that: - '"val1" in test_env3.stdout_lines' - name: check that task envvar does exist shell: echo $key1; echo $other1 register: test_env4 environment: "{{test2}}" - name: assert all vars appear as expected assert: that: - '"val1" not in test_env4.stdout_lines' - '"not1" in test_env4.stdout_lines' - '"val2" in test_env4.stdout_lines' - block: - name: check that task envvar does exist in block shell: echo $key1; echo $other1 register: test_env5 - name: assert all vars appear as expected in block assert: that: - '"val1" not in test_env5.stdout_lines' - '"not1" in test_env5.stdout_lines' - '"val2" in test_env5.stdout_lines' environment: "{{test2}}"