Ansible - Acesso através do Bastion w / MFA

9

No meu ambiente atual, tenho todos os meus servidores Linux acessíveis apenas por meio de um host bastion, que tem o MFA ativado.

Eu consegui fazer o Ansible conversar com sucesso com servidores através do bastião, o único problema é que ele estabelece uma nova conexão com o bastião para cada host, o que significa que eu tenho que inserir tantas chaves MFA quanto eu tenho servidores. Tempos ruins. : (

Eu tentei mexer com coisas como essa na minha configuração ssh para tentar fazer a multiplexação funcionar:

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

Infelizmente, não parece fazer isso. Alguém tem algumas dicas de como eu posso parar o Ansible restabelecendo sua conexão através do meu host bastion para cada host que ele toca?

Obrigado!

    
por Paul Kirby 29.02.2016 / 18:10

1 resposta

2

Eu apenas tropecei neste post do post sobre a execução do Ansible com um host de bastiões .

Aparentemente, você precisa adicionar o host bastion ao host de controle 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

Edite o ssh_args em ansible.cfg :

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

Isso deve cobrir a parte bastion da configuração. Para MFA parte, algum usuário neste problema github afirma que é possível usar uma sessão ssh no Ansible open fora do Ansible.

I open up the initial connection to the host which has 2FA, then in another window run something like:

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

Eu não tenho uma configuração de host de bastiões à mão, mas acho que vale a pena tentar essa estratégia.

    
por 14.03.2017 / 14:07