Ansible Windows

I am trying to setup windows remoting for ansible.

I have Ansible version 1.7.2, ee-bryan is Windows 8.1, ee-csg is Windows Server 2012. Both have Powershell 4.

under /etc/ansible I have created hosts as
[windows]
ee-bryan
ee-csg

and I have created /etc/ansible/group_vars/windows.yml with

#It is suggested that these be encrypted with ansible-vault:

ansible-vault edit group_vars/windows.yml

Have you prepared your Windows nodes as per documentation? Basically, yuu need to enable WinRM connections over HTTPS, and enable Baisc auth for your WinRm endpoint. Look at the documentation, there’s a script that will do those things for you. I’ve uploaded a newer version of that script here: https://gist.github.com/trondhindenes/2cd162d4b17c2c28ec40

_Trond

This is probably a good error to file upstream with winrm, such that on this error it can present something better to the user.

We could catch it, but an IndexError is the wrong sort of exception to be catching here.

That IndexError has been fixed in ansible devel. It's not really a pywinrm
issue, but an ansible issue in trying to handle the HTTPError from pywinrm.

It happens when the HTTPError from urllib2 isn't a file-like object
(despite what the docs say in
https://docs.python.org/2/library/urllib2.html#urllib2.HTTPError).

I get exactly the same…

|staging:e38026ddcaae ✗| → ansible -i ./provisioning/hosts windows -m win_ping

54.67.74.52 | FAILED => Traceback (most recent call last):

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/init.py”, line 561, in _executor

exec_rc = self._executor_internal(host, new_stdin)

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/init.py”, line 666, in _executor_internal

return self._executor_internal_inner(host, self.module_name, self.module_args, inject, port, complex_args=complex_args)

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/init.py”, line 837, in _executor_internal_inner

conn = self.connector.connect(actual_host, actual_port, actual_user, actual_pass, actual_transport, actual_private_key_file)

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/connection.py”, line 34, in connect

self.active = conn.connect()

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/connection_plugins/winrm.py”, line 132, in connect

self.protocol = self._winrm_connect()

File “/usr/local/lib/python2.7/site-packages/ansible-1.7.2-py2.7.egg/ansible/runner/connection_plugins/winrm.py”, line 90, in _winrm_connect

err_msg = str(exc.args[0])

IndexError: tuple index out of range

I installed ansible on my Macbook Pro via homebrew. What’s the best/quickest/easiest way to get the fix for this?

Thanks.

P.

I installed ansible from source, and it now works a treat!

|staging:e38026ddcaae ✗| → ansible -i ./provisioning/hosts production -m win_ping

54.67.74.52 | success >> {

“changed”: false,

“ping”: “pong”

}

Thanks for ansible, and for great resources to fix issues.

cheers

P.

Are there plans on supporting the kerbros authentication so this works in domain environments?

Yes, there is a thread on the Ansible Development list detailing progress on this.