Ansible динамически добавляет прокси-хост, а затем использует прокси-хост для входа на машину за ним без ssh_config

Итак, я хотел бы предоставить прокси-хост (я могу это сделать), добавить его в динамический доступный инвентарь через add_host (сделано),

Затем в следующем воспроизведении запустите задачи на этом прокси-хосте, чтобы найти за ним другую машину, обновите что-то недоступное, чтобы узнать местоположение этого нового хоста, и что он должен быть проксирован через этот текущий прокси-хост,

Затем в следующей игре нацельтесь на эту новую машину за прокси-хостом.

Я здесь в замешательстве, я надеялся сделать это без всех этих изменений ssh_config ... возможно ли это, кто-нибудь делал это, мысли?


person Ruwd    schedule 31.10.2019    source источник
comment
Можно проксировать соединения с помощью --ssh-common-args='-o ProxyCommand ssh -q bastion.example.com -W "[%h]:%p"', но не уверен в динамическом аспекте. Вы можете установить конфигурацию прокси в своем ~/.ssh/config для хостов за сервером-бастионом, это, вероятно, сработает (т.е. Host *.internal\n\tProxyCommand ssh -q bastion.example.com -W "[%h]:%p") - например. все соединения ssh с *.internal должны быть проксированы через сервер-бастион. Я не понимаю, как вы могли бы настроить прокси-соединения ssh без настройки ssh.   -  person masseyb    schedule 01.11.2019
comment
Заголовок вопроса точно говорит без ssh_config. Спасибо за помощь, masseyb Также я получаю down_votes за то, что ... Если у вас есть ответ, это будет намного больше помощи, чем просто голосование против. Потому что я все еще изучаю...   -  person Ruwd    schedule 02.11.2019


Ответы (1)


У меня есть ответ на мой вопрос. Я думаю, что это совершенно правильный вопрос, и много документации от Ansible частично отвечает на этот вопрос, он не помещается в контекст динамизма и не утверждается, что это можно сделать полностью динамически.

Предлог: Использование terraform внутри ansible для генерации хостов со следующей конфигурацией: control_box (запускается ansible/terraform from)----> динамически созданный Bastion/proxy/jump_host ---> some_server(за бастионом)

Плейбук:

#Make the bastion host, and add it to the just_created group
- hosts: 127.0.0.1
  roles:
  - terraform_logic_add_host_logic 

- hosts: just_created #aka bastion
  tasks:
  - name: Include task list in play
    include: "get_the_private_ip_and_add_to_behind_bastion_group.yml"

  # Login into behind_bastion group.....
  - hosts: behind_bastion_group
  vars:
  - ansible_connection: ssh
  - ansible_ssh_common_args: '-o ProxyCommand="ssh -i {{ some_pem_key }} -o StrictHostKeyChecking=no -W %h:%p -q ec2-user@{{ the_bastion_ip }}"'
  tasks:
    - name: Include task list in play
      include: "do_stuff_finally.yml"

Я также провел свое исследование. К вашему сведению: подобные сообщения не показывают полное решение End2End для динамического выполнения всего этого...

https://blog.scottlowe.org/2015/12/24/running-ansible-through-ssh-bastion-host/

Ansible с хостом-бастионом/коробкой перехода?

https://selivan.github.io/2018/01/29/ansible-ssh-bastion-host.html

person Ruwd    schedule 10.11.2019