Ansible - доступ через бастион с МИД

9

В моей нынешней среде все мои серверы Linux доступны только через хост-бастион, на котором включен MFA.

Мне удалось заставить Ansible успешно общаться с серверами через бастион, единственная проблема в том, что он устанавливает новое соединение с бастионом для каждого хоста, то есть мне нужно ввести столько ключей MFA, сколько у меня есть серверов. Плохие времена. :(

Я попытался возиться с такими вещами в моей конфигурации ssh, чтобы заставить работать мультиплексирование:

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

К сожалению, это не похоже на это. Кто-нибудь получил несколько советов о том, как я могу остановить Ansible, восстановив соединение через мой хост-бастион для каждого хоста, к которому он прикасается?

Спасибо!

Пол Кирби
источник
Возможно, вам это уже приходило в голову, но ... Если ваш хост-бастион обеспечивает обычный вход в систему, а не просто переадресацию пакетов, а ваша конфигурация ANSIBLE не содержит большого объема файлов, вы можете попробовать запустить конфигурацию непосредственно из бастиона. ,
Парфянский выстрел
Не обязательно с хоста бастиона, но это может быть любой хост в той же среде. Мы посвятили хосты управления Ansible. Это гарантирует, что у пользователей не будет работать странная конфигурация Ansible или неподдерживаемая версия Ansible. Также это значительно увеличивает скорость воспроизведения.
Удондан
(Я не знаю, что такое MFA) Вы включили ForwardAgentв своей конфигурации ssh свою рабочую станцию ​​(не бастион)
Батист Милль-Матиас

Ответы:

1

Я только что наткнулся на этот пост в блоге о запуске Ansible с бастионным хостом .

Очевидно, вам нужно добавить хост-бастион к управляющему хосту 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

Редактировать ssh_argsв в ansible.cfg:

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

Это должно покрыть bastionчасть конфигурации. Для MFAчасти некоторых пользователей в этом эмиссионном GitHub утверждает , что можно использовать SSH сессию в анзибле открываемых за пределы анзибля.

Я открываю исходное соединение с хостом, который имеет 2FA, затем в другом окне запускаю что-то вроде:

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

У меня нет под рукой установки бастиона, но я думаю, что эту стратегию стоит попробовать.

Хенрик Пингел
источник