##### 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
```

self._attributes[target_name] = ds[name]
        
        self.validate()
        
        return self
    def get_ds(self):
        try:
            return getattr(self, '_ds')
        except AttributeError:
            return None
    def get_loader(self):
        return self._loader
    def get_variable_manager(self):
        return self._variable_manager
    def _post_validate_debugger(self, attr, value, templar):
        value = templar.template(value)
        valid_values = frozenset(('always', 'on_failed', 'on_unreachable', 'on_skipped', 'never'))
        if value and isinstance(value, string_types) and value not in valid_values:
            raise AnsibleParserError("'%s' is not a valid value for debugger. Must be one of %s" % (value, ', '.join(valid_values)), obj=self.get_ds())
        return value
    def _validate_attributes(self, ds):
        '''
        Ensures that there are no keys in the datastructure which do
        not map to attributes for this object.
        '''
        valid_attrs = frozenset(self._valid_attrs.keys())
        for key in ds:
            if key not in valid_attrs:
                raise AnsibleParserError("'%s' is not a valid attribute for a %s" % (key, self.__class__.__name__), obj=ds)
    def validate(self, all_vars=None):