我有一个自定义SSH配置文件,我通常使用如下
ssh -F ~/.ssh/client_1_config amazon-server-01
是否可以指定Ansible将此配置用于某些组?它已经设置了密钥和端口以及用户。我有多个客户端的这种配置,并希望尽可能保持配置分开。
答案 0 :(得分:17)
不完全可能。您可以在ansible.cfg
:
[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