Included yml task fails

89 views
Skip to first unread message

Glenn Barnard

unread,
Jan 11, 2016, 3:32:28 PM1/11/16
to Ansible Project
Am using a current copy of Ansible and am in learning stage by writing playbooks that call Ansible's API's via the uri module. Am getting an error from the included yml that is trying to authenticate the user. Note that it's working fine when I put the task into the main yml. The error is a stack trace (below) followed with

   TypeError: unhashable type

Here's the main yml:

---
- name: Connect to Ansible API
  hosts: localhost
  connection: local
  gather_facts: no
  tasks:
  - include: authenticate.yml
      url="10.0.0.4"
      username="<username>"
      password="<password"

  - debug: msg='{{ authentication.json }}'

  - uri:
      url:  https://10.0.0.4/api/v1/users/
      method: GET
      HEADER_Authorization: TOKEN {{ authentication.json.token }}
      validate_certs: no
      return_content: yes


Here's the included yml:

---

  - debug: msg="Connecting to Ansible host with {{ username }}/{{ password }}"

  - name: Connect to ansible with creds provided
    uri:
      url: https://{{ url }}/api/v1/authtoken/
      method: POST
      HEADER_Content-Type: application/json 
      body: '{ "username" : "{{ username }}", "password" : "{{ password }}" }'
      validate_certs: no
      return_content: yes
    register: authentication


The stack trace is:

TASK: [Connect to ansible with creds provided] ********************************
failed: [localhost] => {"failed": true, "parsed": false}
Traceback (most recent call last):
  File "/home/gbarnard/.ansible/tmp/ansible-tmp-1452538099.69-278641758230235/uri", line 2081, in <module>
    main()
  File "/home/gbarnard/.ansible/tmp/ansible-tmp-1452538099.69-278641758230235/uri", line 416, in main
    resp, content, dest = uri(module, url, dest, user, password, body, method, dict_headers, redirects, socket_timeut, validate_certs)
  File "/home/gbarnard/.ansible/tmp/ansible-tmp-1452538099.69-278641758230235/uri", line 312, in uri
    resp, content = h.request(url, method=method, body=body, headers=headers)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1605, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cacekey)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1353, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/usr/lib/python2.7/site-packages/httplib2/__init__.py", line 1290, in _conn_request
    conn.request(method, request_uri, body, headers)
  File "/usr/lib64/python2.7/httplib.py", line 979, in request
    self._send_request(method, url, body, headers)
  File "/usr/lib64/python2.7/httplib.py", line 1013, in _send_request
    self.endheaders(body)
  File "/usr/lib64/python2.7/httplib.py", line 975, in endheaders
    self._send_output(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 839, in _send_output
    self.send(message_body)
  File "/usr/lib64/python2.7/httplib.py", line 811, in send
    self.sock.sendall(data)
  File "/usr/lib64/python2.7/ssl.py", line 723, in sendall
    v = self.send(data[count:])
TypeError: unhashable type


FATAL: all hosts have already failed -- aborting

Glenn Barnard

unread,
Jan 13, 2016, 5:06:09 PM1/13/16
to Ansible Project
I cloned my playbook and turned the authentication into a role, and it behaved exactly the same.

I really could use some help with this!

Glenn Barnard

unread,
Jan 15, 2016, 8:26:49 AM1/15/16
to Ansible Project
The underlying problem is this line in the include playbook:


     body: '{ "username" : "{{ username }}", "password" : "{{ password }}" }'

If I hardcode the username and password it works. So, this looks like an issue with uri, or I've not formatted this correctly.

Suggestions anyone?


On Monday, January 11, 2016 at 3:32:28 PM UTC-5, Glenn Barnard wrote:

James Cammarata

unread,
Jan 15, 2016, 10:19:47 AM1/15/16
to ansible...@googlegroups.com
Hi Glenn, could you please open an issue on Github so we can keep track of this? 

Thanks!

James Cammarata
Director, Ansible Core Engineering
github: jimi-c

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/23329c83-f554-400c-ad01-a86c612a0222%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages