我想在通过多个主机的目标主机上运行一个ansible playbook。该场景看起来类似于图中所示的场景:
我部分解决了在Ansible项目目录中创建ssh_config
文件的问题:
Host IP_HostN
HostName IP_HOST_N
ProxyJump Username1@IP_HOST_2:22,Username2@IP_HOST_2:22
User UsernameN
并在Ansible项目目录的ansible.cfg
中定义:
[ssh_connection]
ssh_args= -F "ssh_config"
问题是我需要为每个瞬态主机和目标主机ssh 用户名和密码自动插入,我不知道如何自动执行此任务。此外,可能无法在每个瞬态节点上安装 python 。
答案 0 :(得分:1)
我找到了一个相当不错的解决方法。根据以下情况:
我们创建一个ssh隧道,直到可以直接到达目标主机的瞬态主机。我们还使用 -L 标志创建一个本地端口绑定:
ssh -J user_1@transient_host1:port_1 -p port_2 user_2@transient_host2 -L LOCAL_PORT:TARGET_HOST_IP:TARGET_HOST_PORT
然后我们可以使用本地绑定直接进入目标主机:
ssh user_target_host@localhost -p LOCAL_PORT
通过这种方式,我们可以在本地主机上运行 ansible playbooks,相应地配置ansible变量:
ansible_host: localhost
ansible_user: user_target_host
ansible_port: LOCAL_PORT
ansible_password: password_target_host