- hosts: testhost gather_facts: no tasks: - name: get PATH from target command: echo $PATH register: target_path - 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: - target_path.stdout == 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}}" - name: test setting environment while using loops hosts: testhost environment: foo: outer tasks: - name: verify foo==outer command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==outer assert: that: - "{{ test_foo.results[0].stdout == 'outer' }}" - name: set environment on a task environment: foo: in_task command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==in_task assert: that: - "test_foo.results[0].stdout == 'in_task'" - name: test that the outer env var is set appropriately still command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==outer assert: that: - "{{ test_foo.results[0].stdout == 'outer' }}" - name: set environment on a block environment: foo: in_block block: - name: test the environment is set in the block command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==in_block assert: that: - "test_foo.results[0].stdout == 'in_block'" - name: test setting environment in a task inside a block environment: foo: in_block_in_task command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==in_block_in_task assert: that: - "test_foo.results[0].stdout == 'in_block_in_task'" - name: test the environment var is set to the parent value command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==in_block assert: that: - "test_foo.results[0].stdout == 'in_block'" - name: test the env var foo has the initial value command: /bin/echo $foo loop: - 1 register: test_foo - name: assert foo==outer assert: that: - "{{ test_foo.results[0].stdout == 'outer' }}"