Hi all,

im trying to use a 'complex' expression to evaluate if a task should run as 
root or not.

Here is what i have defined:

```
debian_based_system: ansible_os_family == 'Debian' or ansible_os_family == 
'Linuxmint'
```

My tasks look like this

```
- debug: var=ansible_os_family
- debug: var={{ debian_based_system }}
- debug: var=debian_based_system

- shell: echo $EUID
  args:
    executable: /bin/bash
  become: "{{ debian_based_system }}"

- shell: echo $EUID
  args:
    executable: /bin/bash
  become: true

- shell: echo $EUID
  args:
    executable: /bin/bash
  become: debian_based_system
```

and when i run them, i get


```
TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "ansible_os_family": "Linuxmint"
}

TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "ansible_os_family == 'Debian' or ansible_os_family == 'Linuxmint'": 
true
}

TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "debian_based_system": "ansible_os_family == 'Debian' or 
ansible_os_family == 'Linuxmint'"
}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.003180", "end": "2017-12-13 11:48:16.830302", "rc": 0, "start": 
"2017-12-13 11:48:16.827122", "stderr": "", "stderr_lines": [], "stdout": 
"1000", "stdout_lines": ["1000"]}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.002833", "end": "2017-12-13 11:48:16.988274", "rc": 0, "start": 
"2017-12-13 11:48:16.985441", "stderr": "", "stderr_lines": [], "stdout": 
"0", "stdout_lines": ["0"]}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.002869", "end": "2017-12-13 11:48:17.143074", "rc": 0, "start": 
"2017-12-13 11:48:17.140205", "stderr": "", "stderr_lines": [], "stdout": 
"1000", "stdout_lines": ["1000"]}
```

which means that only `become: true` gave my task sudo access (and not any 
of the other two).

If i change the definition to `debian_based_system: '{{ ansible_os_family 
== "Debian" or ansible_os_family == "Linuxmint" }}'`, then i get correct 
results for the first two shell tasks but i also get a warning about using 
{{ }} in when statements.

```
TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

ok: [localhost] => {
    "ansible_os_family": "Linuxmint"
}

TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

ok: [localhost] => {
    "true": "VARIABLE IS NOT DEFINED!"
}

TASK [test : debug] 
*********************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

ok: [localhost] => {
    "debian_based_system": true
}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.002737", "end": "2017-12-13 11:51:29.057079", "rc": 0, "start": 
"2017-12-13 11:51:29.054342", "stderr": "", "stderr_lines": [], "stdout": 
"0", "stdout_lines": ["0"]}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.003077", "end": "2017-12-13 11:51:29.227123", "rc": 0, "start": 
"2017-12-13 11:51:29.224046", "stderr": "", "stderr_lines": [], "stdout": 
"0", "stdout_lines": ["0"]}

TASK [test : command] 
*******************************************************************************************************************************************************************************************************************************************************
 [WARNING]: when statements should not include jinja2 templating delimiters 
such as {{ }} or {% %}. Found: {{ ansible_os_family == "Debian" or 
ansible_os_family == "Linuxmint" }}

changed: [localhost] => {"changed": true, "cmd": "echo $EUID", "delta": 
"0:00:00.003351", "end": "2017-12-13 11:51:29.386325", "rc": 0, "start": 
"2017-12-13 11:51:29.382974", "stderr": "", "stderr_lines": [], "stdout": 
"1000", "stdout_lines": ["1000"]}
```

What is the correct way to define this so that it works and i dont get the 
warning ?

Cheers,
Mike

```
$ ansible --version
ansible 2.3.1.0
  config file =
  configured module search path = Default w/o overrides
  python version = 2.7.12 (default, Nov 20 2017, 18:23:56) [GCC 5.4.0 
20160609]
```

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/8bdc5b98-4405-408a-b552-e8b3729a7016%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to