Issue 1:
Wow, that issue title is a mouthful, but that's the best description I could come up with.

My variable is turned into a string, so when I iterate over it in a template it iterates over the characters (including brackets and quotes).

Here's a Gist with just enough yml to reproduce it

I'm seeing this behavior on ansible 1.3.2.

Issue 2:
ISSUE TYPE

Bug Report

COMPONENT NAME

async

ANSIBLE VERSION

ansible 2.3.0.0

CONFIGURATION

default ansible.cfg file

OS / ENVIRONMENT

N/A

SUMMARY

When a task is executed with 'poll: 0' (fire and forget) and the time specified in 'async' expires, the async cache remains and a following 'async_status' task reports that the task is still running, although the process was killed.

STEPS TO REPRODUCE

---

- hosts: localhost
tasks:
- command: sleep 100
async: 10
poll: 0
register: myJob

- command: sleep 20

- name: wait until playbooks are finished
async_status:
jid: "{{ myJob.ansible_job_id }}"
register: myJob_result

- debug: var=myJob_result

EXPECTED RESULTS

The async_status task should report that the job is not running (like it would be if the job was cleaned up by 'async_status' with 'mode: cleanup'). 'Failed' should not be 0.

ACTUAL RESULTS

PLAY [localhost] ***********************************************************************************************************************************************************************************************************************************************************************************************************************************************

TASK [command] *************************************************************************************************************************************************************************************************************************************************************************************************************************************************
changed: [localhost] => {"ansible_job_id": "964367425822.17508", "changed": true, "finished": 0, "results_file": "/home/stephan/.ansible_async/964367425822.17508", "started": 1}

TASK [command] *************************************************************************************************************************************************************************************************************************************************************************************************************************************************
changed: [localhost] => {"changed": true, "cmd": ["sleep", "20"], "delta": "0:00:20.005145", "end": "2017-06-13 08:26:51.140481", "rc": 0, "start": "2017-06-13 08:26:31.135336", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

TASK [wait until playbooks are finished] ***********************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {"ansible_job_id": "964367425822.17508", "changed": false, "finished": 0, "started": 1}

TASK [debug] ***************************************************************************************************************************************************************************************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"myJob_result": {
"ansible_job_id": "964367425822.17508",
"changed": false,
"finished": 0,
"started": 1
}
}

PLAY RECAP *****************************************************************************************************************************************************************************************************************************************************************************************************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0