Inoltra l'authentication Kerberos su Ansible

Ho una macchina di controllo adatta (host-A) che deve parlare con host-C, una macchina Windows che non dispone di utenti locali (è un Active Directory).

host-A non dispone dell'accesso alla networking host-C, ma la comunicazione è ansible utilizzando host-B.

host-B è una macchina Linux.

host-Un host di accesso-B attraverso ssh.

Seguendo questo articolo ho creato un server nginx per indirizzare il traffico WinRM su host-B

server { listen 5986 default ssl; server_name localhost; ssl_certificate ssl/nginx.crt; ssl_certificate_key ssl/nginx.key; location /host-c { proxy_pass https://host-c-address:5986/wsman; } } 

Il mio inventario per l'host-C è come:

 [windows] host-c ansible_host=host-b ansible_winrm_path=host-c 

E group_vars per le windows è:

 ansible_user: myuser ansible_pass: andmypass ansible_port: 5986 ansible_connection: winrm ansible_winrm_realm: HOSTCDOMAIN.LOCAL ansible_winrm_scheme: https ansible_winrm_transport: kerberos ansible_winrm_server_cert_validation: ignore 

Cose che ho testato finora

1 Test senza Kerberos

Modificato questa linea: ansible_winrm_transport: ssl

Questo non è ansible perché gli host-c non possono avere utenti locali.

 fatal: [host-c]: FAILED! => {"failed": true, "msg": "ssl: 401 Unauthorized."} 

2 Creare un NAT per indirizzare la port kerberos 88 all'host-C

Con questo ho potuto autenticare il mio utente utilizzando il client Kerberos, ma non dentro l'intelligenza

krb5.conf:

 [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = HOSTCDOMAIN.LOCAL dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = false [realms] HOSTCDOMAIN.LOCAL = { kdc = host-b } [domain_realm] .hostcdomain.local = HOSTCDOMAIN.LOCAL 

Uso dei kerberos locali

 # kinit myuser@HOSTCDOMAIN.LOCAL Password for myuser@HOSTCDOMAIN.LOCAL: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: myuser@HOSTCDOMAIN.LOCAL Valid starting Expires Service principal 03/12/2016 20:23:35 03/13/2016 06:23:35 krbtgt/HOSTCDOMAIN.LOCAL@HOSTCDOMAIN.LOCAL renew until 03/19/2016 20:23:31 

Prova ansible_winrm_transport: kerberos con ansible_winrm_transport: kerberos

 e# ansible-playbook test_win.yml -vvv Using /etc/ansible/ansible.cfg as config file 1 plays in test_win.yml PLAY [Ping windows] ************************************************************ TASK [ping] ******************************************************************** task path: /etc/ansible/test_win.yml:5 <host-b> ESTABLISH WINRM CONNECTION FOR USER: myuser on PORT 5986 TO host-b fatal: [host-c]: FAILED! => {"failed": true, "msg": "kerberos: (('Unspecified GSS failure. Minor code may provide more information', 851968), ('Server not found in Kerberos database', -1765328377))"} 

Qualcuno può aiutarmi a capire come superare questo problema? Penso che mi manchi qualcosa.

È ansible che host-a utilizzi host-b per autenticarsi su host-c?

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.