##### SUMMARY
It seems that no_log works only with bare boolean values and attempts to use jinja conditions will silently evaluate it as false, producing undesired results.

##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->
lib/ansible/plugins/callback

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
2.10 (devel)
```

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
#!/usr/bin/env ansible-playbook -vv
- hosts: localhost
  tasks:

    - shell: seq 10
      register: result
      no_log: result is success
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
`no_log` should respect the condition mentioned there. 

If the evaluation happens before the task is executed it should give an error complaining that the result is not defined. 

Either way putting a condition that is silently ignored produce confusion to the users, with undesired outcomes. 

I think it is a common desired to have commands that are silent when succesful and verbose when failing, so you can debug them. Current implementation of no_log makes this impossible.


##### ACTUAL RESULTS

<!--- Paste verbatim command output between quotes -->
```paste below
TASK [shell] ************************************************************************************************************************************************************************
task path: /Users/ssbarnea/c/opendev/me/demo-no_log.yml:5
Monday 10 February 2020  12:34:28 +0000 (0:00:00.626)       0:00:00.737 *******
changed: [localhost] => {
    "changed": true,
    "cmd": "seq 10",
    "delta": "0:00:00.009089",
    "end": "2020-02-10 12:34:29.124658",
    "rc": 0,
    "start": "2020-02-10 12:34:29.115569"
}

STDOUT:

1
2
3
4
5
6
7
8
9
10
META: ran handlers
META: ran handlers
```

'''
        Evaluates all attributes and sets them to the evaluated version,
        so that all future accesses of attributes do not need to evaluate
        parent attributes.
        '''
        if not self._squashed:
            for name in self._valid_attrs.keys():
                self._attributes[name] = getattr(self, name)
            self._squashed = True
    def copy(self):
        '''
        Create a copy of this object and return it.
        '''
        new_me = self.__class__()
        for name in self._valid_attrs.keys():
            if name in self._alias_attrs:
                continue
            new_me._attributes[name] = shallowcopy(self._attributes[name])
            new_me._attr_defaults[name] = shallowcopy(self._attr_defaults[name])
        new_me._loader = self._loader
        new_me._variable_manager = self._variable_manager
        new_me._validated = self._validated
        new_me._finalized = self._finalized
        new_me._uuid = self._uuid
        
        if hasattr(self, '_ds'):
            new_me._ds = self._ds
        return new_me
    def get_validated_value(self, name, attribute, value, templar):