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'

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.