Ansible使用自定义ssh配置文件

Luk*_*ton 17 ansible

我有一个自定义SSH配置文件,我通常使用如下

ssh -F ~/.ssh/client_1_config amazon-server-01
Run Code Online (Sandbox Code Playgroud)

是否可以指定Ansible将此配置用于某些组?它已经设置了密钥和端口以及用户.我有多个客户端的这种配置,并希望尽可能保持配置分开.

udo*_*dan 19

不完全可能.您可以在以下位置设置ssh参数ansible.cfg:

[ssh_connection]
ssh_args = -F ~/.ssh/client_1_config amazon-server-01
Run Code Online (Sandbox Code Playgroud)

不幸的是,不可能为每个组,库存或其他任何特定的东西定义.


slm*_*slm 15

我相信你可以在你的库存中实现你想要的:

[group1]
server1

[group2]
server2

[group1:vars]
ansible_ssh_user=vagrant
ansible_ssh_common_args='-F ssh1.cfg'

[group2:vars]
ansible_ssh_user=vagrant
ansible_ssh_common_args='-F ssh2.cfg'
Run Code Online (Sandbox Code Playgroud)

然后,您可以随心所欲地构建 SSH 配置文件,例如:

$ cat ssh1.cfg
Host server1
     HostName 192.168.1.1
     User someuser
     Port 22
     IdentityFile /path/to/id_rsa
Run Code Online (Sandbox Code Playgroud)

参考


小智 14

使用Ansible 2,您可以在ansible_ssh_common_args库存变量中设置ProxyCommand.当连接到相关主机时,此变量中指定的任何参数都将添加到sftp/scp/ssh命令行.请考虑以下库存组:

[gatewayed]
foo ansible_host=192.0.2.1
bar ansible_host=192.0.2.2
Run Code Online (Sandbox Code Playgroud)

您可以使用以下内容创建group_vars/gatewayed.yml:

ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user@gateway.example.com"'
Run Code Online (Sandbox Code Playgroud)

并做到这一点......

您可以在http://docs.ansible.com/ansible/faq.html中找到更多信息