I have managed to accomplish this, the answers by @daniel-ashton helped me a lot.
You must have/create library
and filter_plugins
folders in your playbook folder or into the role folder.
Create library/noop.py
:
#!/usr/bin/python
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from ansible.module_utils.basic import AnsibleModule
def run_module():
module_args = dict(
noop=dict(type='list', required=True)
)
result = dict(
changed=False
)
module = AnsibleModule(
argument_spec=module_args,
supports_check_mode=True
)
module.exit_json(**result)
def main():
run_module()
if __name__ == '__main__':
main()
and create filter_plugins/warn_me.py
:
#!/usr/bin/python
from ansible.utils.display import Display
class FilterModule(object):
def filters(self): return {'warn_me': self.warn_filter}
def warn_filter(self, message, **kwargs):
Display().warning(message)
return message
Set a var or fact named eg. bypass_folder_warn
, such as:
bypass_folder_warn: Folder check bypass enabled, make sure you know what you are doing
.
Then add a task in you playbook or role task file like this:
- noop:
noop: '{{ bypass_folder_warn | warn_me()}}'
delegate_to: localhost
when: bypass_folder_check
Result is:
TASK [myrole : noop] ********************************************************
[WARNING]: Folder check bypass enabled, make sure you know what you are doing
ok: [localhost]
The WARNING message is printed in standard Ansible purple color as desired.