20 ansible
我很确定我已经在ansible文档中看到了一个功能,你可以告诉它要连接到某些主机,它首先需要通过DMZ主机.但是,我似乎无法在邮件列表的某些辩论之外找到任何文档.
我知道用这个页面上的ssh配置进行黑客攻击http://alexbilbie.com/2014/07/using-ansible-with-a-bastion-host/但是这是一个过于复杂的kludge,用于极其常见的要求在任何一种温和的环境中.
有没有办法在不使用自定义ssh配置包含和voodoo netcat巫术的情况下执行此操作?
psw*_*han 23
使用Ansible 2,这是一个内置选项:
如何配置跳转主机以访问我无法直接访问的服务器?
使用Ansible 2,您可以在ansible_ssh_common_args库存变量中设置ProxyCommand.当连接到相关主机时,此变量中指定的任何参数都将添加到sftp/scp/ssh命令行.请考虑以下库存组:
Run Code Online (Sandbox Code Playgroud)[gatewayed] foo ansible_host=192.0.2.1 bar ansible_host=192.0.2.2您可以使用以下内容创建group_vars/gatewayed.yml:
Run Code Online (Sandbox Code Playgroud)ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user@gateway.example.com"'在尝试连接到网关组中的任何主机时,Ansible会将这些参数附加到命令行.(这些参数,除了使用任何ssh_args从ansible.cfg,这样你就不需要再重复全局ControlPersist在设置ansible_ssh_common_args.)
请注意,ssh -W仅适用于OpenSSH 5.4或更高版本.对于旧版本,必须在堡垒主机上执行nc%h:%p或一些等效命令.
如果您的跳转框需要私钥文件进行连接(即使它与用于私有子网实例的密钥相同),请改用:
ansible_ssh_common_args: '-o ProxyCommand="ssh -i <path-to-pem-file> -W %h:%p -q user@gateway.example.com"'
Run Code Online (Sandbox Code Playgroud)
我花了几个小时试图修复一个现在看似简单而明显的解决方案的问题.
小智 2
由于 Ansible 使用 SSH,您可以通过标准 SSH 配置方式指定堡垒主机:
例如,通过堡垒主机连接名称类似于“*.amazonaws.com”的所有服务器:
Host *.amazonaws.com
ProxyCommand ssh -W %h:%p my_bastion_host.example.org
Run Code Online (Sandbox Code Playgroud)
当ansible或ansible-playbook运行时,它将读取您的 SSH 配置文件并将其应用于连接。您还可以通过环境变量或调用命令时ANSIBLE_SSH_ARGS使用标志来指定读取哪个SSH配置文件。-F
您还可以在ansible.cfg中指定更多 SSH 参数。
| 归档时间: |
|
| 查看次数: |
24738 次 |
| 最近记录: |