Ansible使用自定义ssh配置文件

时间:2015-02-17 01:35:11

标签: ansible

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

ssh -F ~/.ssh/client_1_config amazon-server-01

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

4 个答案:

答案 0 :(得分:17)

不完全可能。您可以在ansible.cfg

中设置ssh参数
[ssh_connection]
ssh_args = -F ~/.ssh/client_1_config amazon-server-01

不幸的是,无法为每个组,广告资源或其他任何特定内容定义此内容。

答案 1 :(得分:12)

使用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

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

ansible_ssh_common_args: '-o ProxyCommand="ssh -W %h:%p -q user@gateway.example.com"'

并做了诀窍......

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

答案 2 :(得分:4)

我相信您可以在库存中实现所需的目标:

[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'

然后,您可以根据需要发挥创造力,并构建如下的SSH配置文件:

$ cat ssh1.cfg
Host server1
     HostName 192.168.1.1
     User someuser
     Port 22
     IdentityFile /path/to/id_rsa

参考文献

答案 3 :(得分:1)

另一种方式,

假设您已在各种服务器的配置分组中关联了ssh密钥标识文件,就像我在〜/ .ssh / config文件中所做的那样。如果您有一堆这样的条目。

const errorInitEvent: ErrorEventInit = {
    error : new Error('AAAHHHH'),
    message : 'A monkey is throwing bananas at me!',
    lineno : 402,
    colno: 123,
    filename : 'closet.html'
};

const CustomErrorEvent = new ErrorEvent('MyErrEventType', errorInitEvent);

它们的工作方式

Host wholewideworld Hostname 204.8.19.16 port 22 User why_me IdentityFile ~/.ssh/id_rsa PubKeyAuthentication yes IdentitiesOnly yes

要运行Ansible Adock命令,请运行

ssh wholewideworld

输出将类似于:

eval $(ssh-agent -s)
ssh-add ~/.ssh/*rsa

现在您应该可以在〜/ ansible-hosts中包含整个世界 从配置文件中放入主机别名后,它就可以运行

Enter passphrase for /home/why-me/.ssh/id_rsa:
Identity added: /home/why-me/.ssh/id_rsa (/home/why-me/.ssh/id_rsa)

输出:

ansible all -ping