setting up new control from source - getting 'FAILED => winrm is not installed' targeting existing Win clients

I have a current Linux control machine that can talk to many Windows clients.

I’m running from source on it (calling . hacking/env-setup).

I’m now trying to bring a new Linux control host (Ubuntu 12.04) online, calling the same Windows clients and it’s failing.

Both control hosts have Python 2.7.3.

I took the same steps setting up this control machine; the pip installs of the dependencies went fine.

But, I’m attempting to win_ping any of the existing clients on the new control, and getting the error:

FAILED => winrm is not installed

This control machine is in the same domain as the other control machine, and the firewall rules on the Win clients are set to allow Domain (and I can ping them successfully).

So, that makes me think, my new Linux control machine must be missing winrm;

But, on both control machines:

  1. which winrm returns nothing
  2. pip install winrm fails to find the package
  3. easy_install winrm also fails “…”
  4. apt-get install winrm: E: Unable to locate package winrm
  5. find -name "winrm" returns nothing

And ansible windows -m win_ping -vvvv doesn’t provide any additional errors or info.

So that makes me think it’s complaining about the Win clients, but, I have them working correctly with the old control already, which is why I was looking at the control machine.

So next, just in case it is an issue where the clients were caching their hosts credentials, I set up a new Win client, and tried connecting to it from the new host first.

I still get the winrm is not installed error.

So… I tested adding a new Win client, and tried connecting to it from the new host; no luck, same error.
I then attempted to connect to it from my old host, and it succeeded; ping pong.

That tells me that there is something wrong with my new control host, but I have no idea what else to test or try to install… Any thoughts?

Here’s the code I ran:

`

# Copy configs, host files, group_vars from current host to new host;
# /etc/ansible has been created on new host, with appropriate permissions for my user
cd /etc/ansible
scp -r * newhost:/etc/ansible
ssh newhost

# On new host, prep the tools, pull & launch the source

sudo pip install paramiko PyYAML jinja2 httplib2

git clone git://github.com/ansible/ansible.git
cd ./ansible
source ./hacking/env-setup

# test it, with the error on the next comment
ansible windows -m win_ping
# clone1 | FAILED => winrm is not installed

`

OK it is a python problem on my new host, I just don’t know / remember what I did the first time around (if anything) to get winrm.

Python still pukes when I tell it to install it, but on my current host, I ran:

`
find / -name “winrm”

/usr/local/lib/python2.7/dist-packages/winrm

`

Checking on my new host, that directory is missing, so… I’m obviously missing a dependency.

For now, I’m going to try copying that directory over and see how much havoc I can wreak on that server.

Found it:

`
sudo pip install pywinrm

ansible windows -m win_ping

clone1 | success >> {

“changed”: false,
“ping”: “pong”
}

`

I somewhat remember doing that too, now, but I don’t see it in the documentation.

I’m supposed to patch something else in the Windows docs, so I’ll add this to that patch.

Installing pywinrm is included in the documentation at http://docs.ansible.com/intro_windows.html#installing-on-the-control-machine

Right in front of my face. I saw that line and assumed that was the full installation for the Control machine, I just hurried through it this time.

Thanks!

I am still unable to execute the win_ping module:


$ ansible windows -i ansible_hosts -m win_ping -vvvv
windows.example.com | FAILED => winrm is not installed

My group_vars is set to connect using a local Admin on the box. I ran the powershell scripts to make sure WinRM is all set up. This is on Win2012. Any thoughts?

Thanks,
–John Jelinek IV

I upgraded to the dev branch of ansible and it works now.

What version of ansible are you using? I’m running 1.9.2 stable, pywinrm installed, same error.

I encountered this too. “pip list” showed “pywinrm” installed and “/usr/local/lib/python3.4/dist-packages/winrm/” existed on my filesystem, however Ansible kept giving me the error, as well as…

eric.herrmann@ubuntu-VirtualBox:~$ python
Python 2.7.9 (default, Apr 2 2015, 15:33:21)
[GCC 4.9.2] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

import winrm
Traceback (most recent call last):
File “”, line 1, in
ImportError: No module named winrm

The “/usr/local/lib/python3.4/dist-packages/winrm/” was the clue. You can see in the interactive python above it is “Python 2.7.9”, but the package is installed under the “3.4” directory. I had several versions of python installed. When that’s the case, you should also have several pip versions installed…

eric.herrmann@ubuntu-VirtualBox:~$ ls -la /usr/local/bin/pip*
-rwxr-xr-x 1 root root 205 Oct 2 12:41 /usr/local/bin/pip
-rwxr-xr-x 1 root root 283 Jul 1 11:34 /usr/local/bin/pip2
-rwxr-xr-x 1 root root 287 Jul 1 11:34 /usr/local/bin/pip2.7
-rwxr-xr-x 1 root root 205 Oct 2 12:41 /usr/local/bin/pip3
-rwxr-xr-x 1 root root 205 Oct 2 12:41 /usr/local/bin/pip3.4

I ran “sudo pip2.7 install https://github.com/diyan/pywinrm/archive/master.zip#egg=pywinrm” and it now works correctly.

Hi Damon,

Exactly i am facing the same issue; Could you please let me know how to copy the below package to which location?

Regards,
Kavin

Just adding that I was also getting the “winrm is not installed” message, but it was because of a problem with requests (see python shell output bellow).

When I installed requests (using pip) I got an error because of missing gcc, and it ended up broken somehow. I removed it and reinstalled it with pip install requests --no-cache-dir and winrm worked fine again.

python

Python 2.7.5 (default, Sep 15 2016, 22:37:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.

import winrm
Traceback (most recent call last):
File “”, line 1, in
File “/usr/lib/python2.7/site-packages/winrm/init.py”, line 6, in
from winrm.protocol import Protocol
File “/usr/lib/python2.7/site-packages/winrm/protocol.py”, line 11, in
from winrm.transport import Transport
File “/usr/lib/python2.7/site-packages/winrm/transport.py”, line 19, in
import requests
ImportError: No module named requests