Ansible - Accesso tramite Bastione con AMF


9

Nel mio ambiente attuale, ho tutti i miei server Linux accessibili solo attraverso un host bastione, che ha abilitato MFA.

Sono riuscito a ottenere Ansible per comunicare con successo con i server attraverso il bastione, l'unico problema è che stabilisce una nuova connessione al bastione per ciascun host, il che significa che devo inserire tutte le chiavi MFA quante sono i server. Tempi difficili. :(

Ho provato a scherzare con cose come queste nella mia configurazione SSH per provare a far funzionare il multiplexing:

Host bastion
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Sfortunatamente non sembra farlo. Qualcuno ha ricevuto alcuni suggerimenti su come posso impedire ad Ansible di ristabilire la connessione tramite il mio host bastione per ogni host che tocca?

Grazie!


Probabilmente ti è già successo, ma ... Se l'host del tuo bastione consente l'accesso regolare al login piuttosto che solo l'inoltro di pacchetti e la tua configurazione ansible non contiene un enorme volume di file, potresti provare a eseguire la tua configurazione direttamente dal bastione .
Parthian Shot

Non necessariamente dall'host del bastione, ma potrebbe essere qualsiasi host nello stesso ambiente. Abbiamo host di controllo Ansible dedicati. Questo assicura che gli utenti non abbiano strane configurazioni Ansible o versioni Ansible non supportate in esecuzione. Anche questo migliora di molto la velocità del playbook.
udondan

(Non so cosa sia l'AMF) Hai abilitato ForwardAgentnella configurazione SSH della tua workstation (non il bastione)
Baptiste Mille-Mathias

Risposte:


1

Mi sono appena imbattuto in questo post sul blog su come eseguire Ansible con un host bastione .

Apparentemente è necessario aggiungere l'host bastion all'host di controllo ssh_config:

Host 10.10.10.*
  ProxyCommand ssh -W %h:%p bastion.example.com
  IdentityFile ~/.ssh/private_key.pem

Host bastion.example.com
  Hostname bastion.example.com
  User ubuntu
  IdentityFile ~/.ssh/private_key.pem
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 5m

Modifica ssh_argsin in ansible.cfg:

[ssh_connection]
ssh_args = -F ./ssh.cfg -o ControlMaster=auto -o ControlPersist=30m control_path = ~/.ssh/ansible-%%r@%%h:%%p

Ciò dovrebbe coprire la bastionparte della configurazione. Per MFAparte alcuni utenti di questo problema github sostengono che è possibile utilizzare una sessione ssh in Ansible aperta al di fuori di Ansible.

Apro la connessione iniziale all'host che ha 2FA, quindi in un'altra finestra eseguo qualcosa del tipo:

ansible-playbook thing.yml --ssh-common-args='-o ControlPath=~/.ssh/connshare'

Non ho a portata di mano una configurazione host di bastioni ma penso che questa strategia valga la pena provare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.