Here’s my setup:
Ansible Tower 3.1.1, Basic License, using the vagrant box, with some post provisioning steps to setup krb5 and join the box to my domain.
Kerberos configuration is good. I can kinit, klist, etc. etc. from command line.
python winrm is good:
`
vagrant@ansible-tower ~]$ sudo su - awx
Last login: Sat Apr 1 23:12:18 JST 2017 on pts/1
Welcome to Ansible Tower!
Log into the web interface here: etc…
-bash-4.2$ cat test.py
import sys
from winrm.protocol import Protocol
HYPERV_SERVER = ‘https://louis.home.cartewright.com:5986/wsman’
class RM():
def init(self):
self.win_connect = Protocol(endpoint=HYPERV_SERVER, transport=‘kerberos’, server_cert_validation=‘ignore’)
def test(self):
shell_id = self.win_connect.open_shell()
cmd = “dir”
command_id = self.win_connect.run_command(shell_id, cmd)
output,error_value,exit_status = self.win_connect.get_command_output(shell_id, command_id)
self.win_connect.cleanup_command(shell_id, command_id)
self.win_connect.close_shell(shell_id)
print output
def main():
rm = RM()
rm.test()
if name == ‘main’:
main()
sys.exit()
-bash-4.2$ python test.py
Volume in drive C is SAMSUNG 512GB SSD
Volume Serial Number is 2C8F-7BFA
Directory of C:\Users\ansible
03/31/2017 11:04 AM .
03/31/2017 11:04 AM …
07/16/2016 06:47 AM Desktop
03/31/2017 11:04 AM Documents
07/16/2016 06:47 AM Downloads
07/16/2016 06:47 AM Favorites
07/16/2016 06:47 AM Links
07/16/2016 06:47 AM Music
07/16/2016 06:47 AM Pictures
07/16/2016 06:47 AM Saved Games
07/16/2016 06:47 AM Videos
0 File(s) 0 bytes
11 Dir(s) 291,787,771,904 bytes free
-bash-4.2$
`
So now, I manually create some inventory in the default directories/files for ansible (not Tower). Works perfectly:
-bash-4.2$ cat /etc/ansible/group_vars/windows.yml
ansible_connection: winrm
ansible_user: ansible@HOME.CARTEWRIGHT.COM
ansible_password: R1pflash
ansible_winrm_server_cert_validation: ignore
-bash-4.2$
-bash-4.2$ ansible windows -m win_ping -v
Using /etc/ansible/ansible.cfg as config file
louis.home.cartewright.com | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
Now, I create the exact same inventory in tower, exact same credentials (ansible@HOME.CARTEWRIGHT.COM) and now matter how I tweak it, always the same thing:
Using /etc/ansible/ansible.cfg as config file SSH password: Using module file /usr/lib/python2.7/site-packages/ansible/modules/core/windows/win_ping.ps1 <louis.home.cartewright.com> ESTABLISH WINRM CONNECTION FOR USER: ansible@HOME.CARTEWRIGHT.COM on PORT 5986 TO louis.home.cartewright.com <louis.home.cartewright.com> WINRM CONNECT: transport=kerberos endpoint=https://louis.home.cartewright.com:5986/wsman <louis.home.cartewright.com> WINRM CONNECTION ERROR: authGSSClientInit() failed: ((‘Unspecified GSS failure. Minor code may provide more information’, 851968), (“Can’t find client principal ansible@HOME.CARTEWRIGHT.COM in cache collection”, -1765328243)) Traceback (most recent call last): File “/usr/lib/python2.7/site-packages/ansible/plugins/connection/winrm.py”, line 154, in winrm_connect self.shell_id = protocol.open_shell(codepage=65001) # UTF-8 File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/protocol.py”, line 132, in open_shell res = self.send_message(xmltodict.unparse(req)) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/protocol.py”, line 207, in send_message return self.transport.send_message(message) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/transport.py”, line 181, in send_message prepared_request = self.session.prepare_request(request) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests/sessions.py”, line 394, in prepare_request hooks=merge_hooks(request.hooks, self.hooks), File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests/models.py”, line 298, in prepare self.prepare_auth(auth, url) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests/models.py”, line 500, in prepare_auth r = auth(self) File "/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests_kerberos/kerberos.py", line 308, in call auth_header = self.generate_request_header(None, host, is_preemptive=True) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/requests_kerberos/kerberos_.py”, line 148, in generate_request_header raise KerberosExchangeError(“%s failed: %s” % (kerb_stage, str(error.args))) KerberosExchangeError: authGSSClientInit() failed: ((‘Unspecified GSS failure. Minor code may provide more information’, 851968), (“Can’t find client principal ansible@HOME.CARTEWRIGHT.COM in cache collection”, -1765328243)) <louis.home.cartewright.com> WINRM CONNECT: transport=ssl endpoint=https://louis.home.cartewright.com:5986/wsman <louis.home.cartewright.com> WINRM CONNECTION ERROR: the specified credentials were rejected by the server Traceback (most recent call last): File “/usr/lib/python2.7/site-packages/ansible/plugins/connection/winrm.py”, line 154, in _winrm_connect self.shell_id = protocol.open_shell(codepage=65001) # UTF-8 File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/protocol.py”, line 132, in open_shell res = self.send_message(xmltodict.unparse(req)) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/protocol.py”, line 207, in send_message return self.transport.send_message(message) File “/var/lib/awx/venv/ansible/lib/python2.7/site-packages/winrm/transport.py”, line 190, in send_message raise InvalidCredentialsError(“the specified credentials were rejected by the server”) InvalidCredentialsError: the specified credentials were rejected by the server louis.home.cartewright.com | UNREACHABLE! => { “changed”: false, “msg”: “kerberos: authGSSClientInit() failed: ((‘Unspecified GSS failure. Minor code may provide more information’, 851968), ("Can’t find client principal ansible@HOME.CARTEWRIGHT.COM in cache collection", -1765328243)), ssl: the specified credentials were rejected by the server”, “unreachable”: true }
Just completely unable to find the credentials in the cache, no matter how I do it. I’ve put the password in the tower credentials, in the inventory, using ASK, no matter what I do, it cannot find credentials.
What am I missing?
~Bill