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.

  • Memcache / Elasticache contenente molte password utente in memory invece di DB
  • IPA contro LDAP solo per le scatole Linux - alla ricerca di un confronto
  • Cosa significa questo errore "riscrittura o ciclo di reindirizzamento interno"?
  • nginx httpMapModule variables regex
  • Come dire a mod_auth_kerb di fare il suo lavoro nonostante "non richieda l'utente valido"
  • Inoltrare tutte le richieste del TLD ad un altro server
  • 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?

  • Leggenda playbook per caricare ed eseguire uno script python
  • Evitate di ripetere 'con_items' nel ruolo anonimo
  • Perché non è ansible avere un module di archiviazione?
  • Ottimizzare i playbook di Ansible per eseguire contro molti host
  • Utilizzare la variabile solo se definita in Ansible
  • Installare RVM con le possibili
  • Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.