Ansible - Dostęp przez Bastion z MSZ

9

W moim obecnym środowisku wszystkie moje serwery Linux są dostępne tylko za pośrednictwem hosta bastionu z włączoną funkcją MFA.

Udało mi się uzyskać Ansible, aby pomyślnie rozmawiać z serwerami przez bastion, jedynym problemem jest to, że ustanawia nowe połączenie z bastionem dla każdego hosta, co oznacza, że ​​muszę wprowadzić tyle kluczy MFA, ile mam serwerów. Złe czasy. :(

Próbowałem zadzierać z takimi rzeczami w mojej konfiguracji ssh, aby spróbować uruchomić multipleksowanie:

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

Niestety wydaje się, że tego nie robi. Czy ktoś dostał jakieś wskazówki, jak mogę przestać Ansible ponownie ustanowić połączenie za pośrednictwem mojego hosta bastionu dla każdego hosta, którego dotyka?

Dzięki!

Paul Kirby
źródło
Prawdopodobnie już ci się przydarzyło, ale ... Jeśli twój host bastionu pozwala na regularny dostęp do logowania, a nie tylko na przekazywanie pakietów, a twoja konfiguracja ansible nie zawiera dużej ilości plików, możesz spróbować uruchomić konfigurację bezpośrednio z bastionu .
Parthian Shot
Niekoniecznie z hosta bastionu, ale może to być dowolny host w tym samym środowisku. Dedykowaliśmy hosty Ansible control. Zapewnia to, że użytkownicy nie mają uruchomionej dziwnej konfiguracji Ansible lub nieobsługiwanej wersji Ansible. Również to znacznie poprawia szybkość podręcznika.
udondan
(Nie wiem, co to jest MFA) Czy ForwardAgentwłączyłeś konfigurację ssh swojej stacji roboczej (nie bastionu)
Baptiste Mille-Mathias

Odpowiedzi:

1

Właśnie natknąłem się na ten post na blogu o uruchomieniu Ansible z gospodarzem bastionu .

Najwyraźniej musisz dodać hosta bastionu do hosta kontrolnego 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

Edytuj wejście ssh_argsw ansible.cfg:

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

To powinno zakrywać bastionczęść konfiguracji. Po MFAczęści niektórzy użytkownicy w tym numerze github twierdzą, że możliwe jest użycie sesji ssh w Ansible otwartej poza Ansible.

Otwieram początkowe połączenie z hostem, który ma 2FA, a następnie w innym oknie uruchamiam coś takiego:

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

Nie mam pod ręką konfiguracji hosta bastionu, ale uważam, że warto spróbować tej strategii.

Henrik Pingel
źródło