Ansible多跳设计

gae*_*ano 6 ssh ansible

我想在通过多个主机的目标主机上运行一个ansible playbook.该场景看起来类似于图中所示的场景:

在此输入图像描述

部分解决了ssh_config在Ansible项目目录中创建文件的问题:

Host IP_HostN
        HostName IP_HOST_N
        ProxyJump Username1@IP_HOST_2:22,Username2@IP_HOST_2:22
        User UsernameN
Run Code Online (Sandbox Code Playgroud)

并在ansible.cfgAnsible项目目录中定义:

[ssh_connection]
ssh_args= -F "ssh_config"
Run Code Online (Sandbox Code Playgroud)

问题是我需要为每个瞬态主机和目标主机ssh 用户名密码自动插入,我不知道如何自动执行此任务.而且,python可能不会安装在每个瞬态节点上.

gae*_*ano 3

我找到了一个相当好的解决方法。根据以下场景:

在此输入图像描述

我们创建一个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
Run Code Online (Sandbox Code Playgroud)

然后我们可以使用本地绑定直接进入Target Host:

ssh user_target_host@localhost -p LOCAL_PORT
Run Code Online (Sandbox Code Playgroud)

这样,我们就可以在本地主机上运行ansible playbook并相应地配置ansible变量:

ansible_host: localhost
ansible_user: user_target_host
ansible_port: LOCAL_PORT
ansible_password: password_target_host
Run Code Online (Sandbox Code Playgroud)