delegate_to and winrm is broken

389 views
Skip to first unread message

Stephen Bunn

unread,
Oct 13, 2016, 8:06:39 PM10/13/16
to Ansible Project
It seems that it is impossible to run a local task when talking to windows hosts.  This is pretty much a show stopper for my current use case of Ansbile.

ansible version:  ansible 2.1.1.0

using any of the following, all result in the same error

- name: deploy some stuff
  hosts: somewindowshosts
  gather_facts: True
  serial: 1
  pre_tasks:
    - name: disable {{ inventory_hostname }} from LB
      delegate_to: localhost
      connection: local
      command: /usr/bin/magic_lb_removal_script
      #local_action: command foo
      #delegate_to: 127.0.0.1
  roles:
     - { role: foo }
     - { role: bar }


<localhost> ESTABLISH WINRM CONNECTION FOR USER: Administrator on PORT 5985 TO localhost
fatal: [172.28.18.158]: UNREACHABLE! => {"changed": false, "msg": "plaintext: HTTPConnectionPool(host='localhost', port=5985): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x21aa610>: Failed to establish a new connection: [Errno 111] Connection refused',))", "unreachable": true}

Matt Davis

unread,
Oct 13, 2016, 8:22:02 PM10/13/16
to Ansible Project
I suspect you may have an inventory or command issue that's reassigning localhost's connection type to winrm (you're not adding -c winrm, are you?) - this sample works fine for me on both 2.1.1 and devel. The connection: local is not necessary, and works fine for me with either local_action or delegate_to: localhost. 

There are definitely some issues with cross-connection delegation with pseudo-connection-var rewriting when going the other way (delegating from Linux hosts to Windows), but this one looks like a busted inventory to me.

Stephen Bunn

unread,
Oct 18, 2016, 1:26:18 PM10/18/16
to Ansible Project
I'm not sure how.  Can you provide a complete working example? My inventory file is pretty straight forward.  My inventory looks like this

[box1]
ip.address

[box2]
another.ip.address

[alpha:children]
ip.address

[beta:children]
another.ip.address

[somewindowshosts]
alpha
beta

Matt Davis

unread,
Oct 18, 2016, 1:39:00 PM10/18/16
to Ansible Project
Where are you setting the connection types to winrm then?

Stephen Bunn

unread,
Oct 18, 2016, 8:54:35 PM10/18/16
to Ansible Project
It is being include in a group_var for the hosts, is there a better way to do this?
Reply all
Reply to author
Forward
0 new messages