Print Ansible debug output without quotes/escapes

ansible

I need to know if there is a way to print information from an ansible playbook that doesn't cause ansible to automatically quote and escape the string. For instance, I'm using ansible to build a command that should be run separately from a different machine (ironic, i know, but necessary anyhow). Currently the output looks something like…

"command" = "run_me.sh \"with this argument\""

What I need is something like…

"command" = run_me.sh "with this argument"

or just…

run_me.sh "with this argument" 

if possible, but I'm guessing that's asking too much.

I'm currently using set_fact to build the command and debug to print it.

Best Answer

You can either write your own stdout callback plugin or use some of this tricks:

---
- hosts: localhost
  gather_facts: no
  tasks:

    # Print as loop item
    - name: Print command as loop item
      set_fact:
        dummy: value # Just to make some task without output
      with_items:
        - 'Execute this: run_me.sh "with this argument"'

    # Print as task title
    # Not suitable for different commands per host, because task title is common for all hosts
    - name: 'Execute this: run_me.sh "with this argument"'
      debug:
        msg: Execute command from task title

    # Print as pause statement
    # Not suitable for different commands per host, because pause task skips host loop (forced run_once:yes)
    - name: Print command as pause statment
      pause:
        prompt: 'Execute this and press enter: run_me.sh "with this argument"'

Output:

TASK [Print command as loop item] **********************************************
ok: [localhost] => (item=Execute this: run_me.sh "with this argument")

TASK [Execute this: run_me.sh "with this argument"] ****************************
ok: [localhost] => {
    "msg": "Execute command from task title"
}

TASK [Print command as pause statment] *****************************************
[Print command as pause statment]
Execute this and press enter: run_me.sh "with this argument":
ok: [localhost]