Hi Sharwari,
This is the key fix, changing from colon syntax to equal sign syntax:
- name: Create an instance
ec2: >
state=present
image="{{ ami_base_image_id }}"
instance_type=t1.micro
group="{{ instance_security_groups }}"
key_name="{{ environment_public_ssh_key_name }}"
vpc_subnet_id="{{ environment_vpc_public_subnet_az1_id }}"
user_data="{{ lookup('template', '../templates/user_data.json') }}"
assign_public_ip=yes
wait=yes
wait_timeout=600
region="{{ vpc_region }}"
aws_access_key="{{ aws_access_key }}"
aws_secret_key="{{ aws_secret_key }}"
register: new_instance
when: environment_instance is not defined
On Thursday, October 15, 2015 at 5:59:41 AM UTC-4, Sharwari Phadnis wrote:
>
> HI, I am facing the same problem. I went through the link which you've
> posted but couldn't find the exact solution. Could you please post the
> solution which you've tried?
>
> On Saturday, October 3, 2015 at 1:15:51 AM UTC+5:30,
> [email protected] wrote:
>>
>> I solved the problem after a lot of digging. In case it's of use to
>> anyone else: https://github.com/ansible/ansible/issues/7005
>>
>> On Thursday, October 1, 2015 at 4:02:29 PM UTC-4,
>> [email protected] wrote:
>>>
>>> Hi all,
>>>
>>> Similar to
>>> https://groups.google.com/forum/#!topic/ansible-project/ba5PPAgYGXc but
>>> slightly different.
>>>
>>> I am trying to use variable substitution like so, putting the variable
>>> my_var in the body parameter, which should be a json string:
>>>
>>> vars:
>>> my_var: hello_world
>>>
>>> tasks:
>>> - uri:
>>> url: https://localhost/api/v1/
>>> method: POST
>>> body: '{ "name": "test", "var": "{{ my_var }}", "location":
>>> "usa" }'
>>> HEADER_Content-Type: "application/json"
>>> status_code: 201
>>> validate_certs: no
>>> user: admin
>>> password: password
>>>
>>> I get this error (stacktrace with a TypeError: unhashable type):
>>>
>>> TASK: [uri ]
>>> ******************************************************************
>>> failed: [localhost] => {"failed": true, "parsed": false}
>>> Traceback (most recent call last):
>>> File
>>> "/Users/mzb/.ansible/tmp/ansible-tmp-1443729077.78-98124067847188/uri",
>>> line 2067, in <module>
>>> main()
>>> File
>>> "/Users/mzb/.ansible/tmp/ansible-tmp-1443729077.78-98124067847188/uri",
>>> line 419, in main
>>> resp, content, dest = uri(module, url, dest, user, password, body,
>>> method, dict_headers, redirects, socket_timeout, validate_certs)
>>> File
>>> "/Users/mzb/.ansible/tmp/ansible-tmp-1443729077.78-98124067847188/uri",
>>> line 312, in uri
>>> resp, content = h.request(url, method=method, body=body,
>>> headers=headers)
>>> File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line
>>> 1609, in request
>>> (response, content) = self._request(conn, authority, uri,
>>> request_uri, method, body, headers, redirections, cachekey)
>>> File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line
>>> 1351, in _request
>>> (response, content) = self._conn_request(conn, request_uri, method,
>>> body, headers)
>>> File "/Library/Python/2.7/site-packages/httplib2/__init__.py", line
>>> 1273, in _conn_request
>>> conn.request(method, request_uri, body, headers)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py",
>>>
>>> line 973, in request
>>> self._send_request(method, url, body, headers)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py",
>>>
>>> line 1007, in _send_request
>>> self.endheaders(body)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py",
>>>
>>> line 969, in endheaders
>>> self._send_output(message_body)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py",
>>>
>>> line 833, in _send_output
>>> self.send(message_body)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py",
>>>
>>> line 805, in send
>>> self.sock.sendall(data)
>>> File
>>> "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py",
>>>
>>> line 229, in sendall
>>> v = self.send(data[count:])
>>> TypeError: unhashable type
>>>
>>> If I don't use quotes around the variable substition, like this:
>>>
>>> vars:
>>> my_var: hello_world
>>>
>>> tasks:
>>> - uri:
>>> url: https://localhost/api/v1/
>>> method: POST
>>> body: '{ "name": "test", "var": {{ my_var }}, "location":
>>> "usa" }'
>>> HEADER_Content-Type: "application/json"
>>> status_code: 201
>>> validate_certs: no
>>> user: admin
>>> password: password
>>>
>>> then, I get this error (No JSON type could be decoded):
>>>
>>> failed: [localhost] => {"allow": "GET, POST, HEAD, OPTIONS",
>>> "connection": "close", "content": "{\"detail\": \"JSON parse error - No
>>> JSON object could be decoded\"}", "content_type": "application/json",
>>> "date": "Thu, 01 Oct 2015 19:50:56 GMT", "failed": true, "json": {"detail":
>>> "JSON parse error - No JSON object could be decoded"}, "redirected": false,
>>> "server": "Apache/2.4.7 (Ubuntu)", "status": 400, "transfer_encoding":
>>> "chunked", "vary": "Accept,Cookie", "x_api_time": "0.001s"}
>>> msg: Status code was not [201]
>>>
>>> Any ideas? Thanks in advance!
>>>
>>
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/13581e28-9d98-464e-9abd-24f74612f4d9%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.