You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible中配置双跳板主机的Inventory连接?

Ansible双跳板主机Inventory配置方案

直接用Ansible Inventory结合SSH的ProxyJump(或嵌套ProxyCommand)就能实现双跳,还能在Inventory里单独配置三层的用户、密码(支持Vault加密),完全避开你提到的那些局限。

核心配置示例(INI格式Inventory)

# 目标主机
[targets]
my_target ansible_host=target_host.addr ansible_user=user3 ansible_ssh_pass={{ vault_target_pass }}

# 两台跳板主机
[jumps]
jump1 ansible_host=jump.host.ip ansible_user=user1 ansible_ssh_pass={{ vault_jump1_pass }}
jump2 ansible_host=jump.host2.ip ansible_user=user2 ansible_ssh_pass={{ vault_jump2_pass }}

# 给目标主机配置双跳参数
[targets:vars]
# 方式1:用SSH 7.3+支持的ProxyJump链式语法(更简洁)
ansible_ssh_common_args='-o ProxyJump="user1@jump.host.ip:22 user2@jump.host2.ip"'

# 方式2:兼容旧版SSH的嵌套ProxyCommand写法
# ansible_ssh_common_args='-o ProxyCommand="ssh -W %h:%p user2@jump.host2.ip -o ProxyCommand=\"ssh -W %h:%p user1@jump.host.ip -p 22\""'

关键细节说明

  1. 三层用户/密码独立配置:
    目标主机和两台跳板的用户、密码都单独定义,敏感密码用Ansible Vault加密。加密密码的命令:

    ansible-vault encrypt_string '你的密码' --name 'vault_jump1_pass'
    

    把生成的加密内容直接贴到Inventory或者对应项目的vars文件里,跑Playbook时加--ask-vault-pass就行。

  2. 双跳参数的两种写法:

    • ProxyJump是新版SSH的简化语法,直接链式写两个跳板,格式为用户@跳板IP:端口,多个跳板用空格分隔
    • 旧版SSH不支持ProxyJump就用嵌套的ProxyCommand,注意转义引号,确保内层命令能正确解析
  3. 避开原有方案的局限:

    • 不用依赖全局SSH config,所有配置都在当前项目的Inventory里,项目之间互不干扰
    • 不需要修改ansible.cfg,每个项目单独维护自己的Inventory即可
    • 完全在Inventory中实现双跳配置,不需要额外的SSH隧道操作

内容的提问来源于stack exchange,提问作者morgan_chester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:15:26