Just tried pywinrm 0.2rc6. Both ansible_winrm_transport=ntlm 
and ansible_winrm_transport=kerberos work fine. Thanks!

On Tuesday, June 7, 2016 at 7:31:23 PM UTC+2, Matt Davis wrote:
>
> Depending on what you're doing, NTLM might be a better fit for you 
> (install pywinrm>=0.2.0, set ansible_winrm_transport=ntlm and specify 
> ansible_user/ansible_password). 
>
> Automatic ticket management in pywinrm/our connection plugin is definitely 
> on my list of "things I wish we could do", but it's tentatively slated for 
> 2.3 (2 releases out). 
>
> Docs are forthcoming for all that stuff- I wanted to wait until the new 
> pywinrm bits were actually released before publishing doc updates on NTLM; 
> they released a couple days ago.
>
> On Tuesday, June 7, 2016 at 8:59:49 AM UTC-7, Willem Bos wrote:
>>
>> For people running into the same problem, this is (more or less) the 
>> playbook I use :
>>
>> - hosts: all
>>
>>   tasks:
>>
>>     - name: Install prerequisite software (using yum)
>>       yum:
>>         enablerepo: epel
>>         update_cache: yes
>>         name: "{{ item }}"
>>         state: present
>>       with_items:
>>         - python-pip
>>         - python-ptyprocess
>>       delegate_to: localhost
>>
>>     - name: Uninstall old pexpect package (using yum)
>>       yum:
>>         name: pexpect
>>         state: absent
>>       delegate_to: localhost
>>
>>     - name: Install prerequisite software (using pip)
>>       pip:
>>         name: pexpect
>>         version: 3.3
>>         state: present
>>       delegate_to: localhost
>>
>>     - name: Check for precense of Kerberos ticket
>>       command: /usr/bin/klist
>>       register: klist_result
>>       changed_when: no
>>       ignore_errors: yes
>>       delegate_to: localhost
>>
>>     - name: Request Kerberos ticket if none present
>>       expect:
>>         command: /usr/bin/kinit domain-user@AD-DOMAIN
>>         responses:
>>           '(?i)password': domain-user-password
>>       changed_when: no
>>       when: klist_result.rc != 0
>>       delegate_to: localhost
>>
>>
>> The first task installs prerequisite software for the expect module using 
>> rpm's from EPEL <https://fedoraproject.org/wiki/EPEL>. The version of 
>> pexpect (another prerequisite) that the Red Hat and CentOS rpm's provide is 
>> too old for Ansible, so we uninstall this in the second task. The third 
>> task installs the required version of pexpect using pip. The third and 
>> fourth tasks actually deal with requesting a Kerberos ticket granting 
>> ticket when it is not present.
>>
>> Regards,
>> Willem.
>>
>>
>>
>> On Tuesday, June 7, 2016 at 1:51:25 PM UTC+2, Willem Bos wrote:
>>>
>>> Hi all,
>>>
>>> I'm trying to use winrm to execute tasks on a windows server (after 
>>> following the steps in 
>>> http://docs.ansible.com/ansible/intro_windows.html). As a test I use 
>>> the win_ping module. This works only when a Kerberos ticket present 
>>> beforehand.
>>>
>>> Is it a requirement to have the Linux server be member of the AD 
>>> infrastructure? If so, then the only way to make this work from a controle 
>>> machine - without joining the domain - would be to run a kinit from my 
>>> playbook first, right? I found several similar cases but none mention if AD 
>>> membership is a 'hard' requirement.
>>>
>>>
>>> *** INFO ***
>>> rpm -qa | grep -E 
>>> "ansible|python-devel|krb5-devel|krb5-libs|krb5-workstation|python-kerberos"
>>>  
>>> | sort
>>> ansible-2.0.2.0-1.el7.noarch
>>> krb5-devel-1.13.2-12.el7_2.x86_64
>>> krb5-libs-1.13.2-12.el7_2.x86_64
>>> krb5-workstation-1.13.2-12.el7_2.x86_64
>>> python-devel-2.7.5-34.el7.x86_64
>>> python-kerberos-1.1-15.el7.x86_64
>>>
>>> pip list | grep winrm
>>> pywinrm (0.1.1)
>>>
>>>
>>> *** WORKS ***
>>> kinit domain-user@AD-DOMAIN
>>> ...
>>>
>>> klist
>>> Ticket cache: KEYRING:persistent:0:0
>>> Default principal: domain-user@AD-DOMAIN
>>>
>>> Valid starting       Expires              Service principal
>>> 06/07/2016 11:26:20  06/07/2016 21:26:20  krbtgt/AD-DOMAIN@AD-DOMAIN
>>>         renew until 06/14/2016 11:26:20
>>>
>>> ansible -m win_ping windows-server.ad-domain
>>> windows-server.ad-domain | SUCCESS => {
>>>     "changed": false,
>>>     "ping": "pong"
>>> }
>>>
>>>
>>> *** DOESN'T WORK ***
>>> kdestroy -A
>>>
>>> ansible -m win_ping windows-server.ad-domain -vvvvv
>>> Using /etc/ansible/ansible.cfg as config file
>>> Loaded callback minimal of type stdout, v2.0
>>> <windows-server.ad-domain> ESTABLISH WINRM CONNECTION FOR USER: 
>>> domain-user@AD-DOMAIN on PORT 5986 TO windows-server.ad-domain
>>> <windows-server.ad-domain> WINRM CONNECT: transport=kerberos endpoint=
>>> https://windows-server.ad-domain:5986/wsman
>>> <windows-server.ad-domain> WINRM CONNECTION ERROR: (('Unspecified GSS 
>>> failure.  Minor code may provide more information', 851968), ('No Kerberos 
>>> credentials available', -1765328243))
>>> Traceback (most recent call last):
>>>   File 
>>> "/usr/lib/python2.7/site-packages/ansible/plugins/connection/winrm.py", 
>>> line 134, in _winrm_connect
>>>     protocol.send_message('')
>>>   File "/usr/lib/python2.7/site-packages/winrm/protocol.py", line 193, 
>>> in send_message
>>>     return self.transport.send_message(message)
>>>   File "/usr/lib/python2.7/site-packages/winrm/transport.py", line 269, 
>>> in send_message
>>>     krb_ticket = KerberosTicket(self.krb_service)
>>>   File "/usr/lib/python2.7/site-packages/winrm/transport.py", line 205, 
>>> in __init__
>>>     kerberos.authGSSClientStep(krb_context, '')
>>> GSSError: (('Unspecified GSS failure.  Minor code may provide more 
>>> information', 851968), ('No Kerberos credentials available', -1765328243))
>>>
>>> windows-server.ad-domain | FAILED! => {
>>>     "failed": true,
>>>     "msg": "kerberos: (('Unspecified GSS failure.  Minor code may 
>>> provide more information', 851968), ('No Kerberos credentials available', 
>>> -1765328243))"
>>> }
>>>
>>> Regards,
>>> Willem
>>>
>>

-- 
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/87987b9d-bee2-4fa5-a3da-b94ab26e7918%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to