2014-10-08 61 views
28

我是Ansible的新手。我能夠測試它,並且能夠滿足我的測試要求。爲了在管理節點和客戶機節點之間建立連接,我使用了已經創建的ssh密鑰對。我怎樣才能使用不同的SSH密鑰對的另一個節點?作爲參考,我正在考慮使用不同密鑰對的3 ec2實例。Ansible與多個SSH密鑰對

回答

34

好消息 - 在基本用例中,這很容易。只需在Ansible inventory中使用ansible_ssh_private_key_file參數即可。

下面是我個人的文件盜取一些例子:

$ cat hosts.ini 

[server1] 
54.1.2.3 ansible_ssh_private_key_file=~/.ssh/server1.pem 

[testservers] 
ec2-54-2-3-4.compute-1.amazonaws.com ansible_ssh_private_key_file=~/.ssh/aws-testserver.pem ansible_ssh_user=ubuntu 
ec2-54-2-3-5.compute-1.amazonaws.com ansible_ssh_private_key_file=~/.ssh/aws-testserver.pem ansible_ssh_user=ubuntu 

[piwall] 
10.0.0.88 ansible_ssh_private_key_file=~/.ssh/raspberrypi.pem ansible_ssh_user=pi 
+1

感謝泰德對我的工作很好。是否可以爲同一組的所有服務器使用相同的密鑰?我的意思是說,根據上面的例子,如果我對10臺測試服務器有相同的密鑰,那麼我必須分別爲所有測試服務器指定關鍵細節。任何解決方案都在那裏,以便我可以爲同一組的所有服務器傳遞相同的密鑰。謝謝 – 2014-10-09 07:39:23

+0

@sumitkumar據我所知,你不能將hosts.ini中的變量分組。但是,您可以使用[ssh_config](http://linux.die.net/man/5/ssh_config)文件,這可能會有所幫助。 – tedder42 2014-10-09 15:18:18

+7

你當然可以:http://docs.ansible.com/intro_inventory.html#group-variables [testservers:瓦爾] ansible_ssh_private_key_file =的〜/ .ssh/AWS-testserver.pem – oley 2015-03-24 17:48:36

21

tedder42是正確的,然而,有這樣做的更好的方法。

請參閱ansible_ssh_private_key_filehere

我在我的主機文件中的以下

# SSH Keys configuration 

[all_servers:vars] 
ansible_ssh_private_key_file = <YOUR PRIVATE KEY LOCATION> 


# Server configuration 
[all_servers:children] 
elastic_servers 
nginx_servers 

[elastic_servers] 
44.22.11.22 
44.55.66.77 
22.11.22.33 

[nginx_servers] 
22.24.123.123 
233.111.222.11 

如果你有多個按鍵的配置,你可以這樣做以下

[nginx:vars] 
ansible_ssh_private_key_file = <YOUR PRIVATE KEY LOCATION> 
[app:vars] 
ansible_ssh_private_key_file = <YOUR 2nd PRIVATE KEY LOCATION> 

[nginx:children] 
nginx_servers 

[app:children] 
app_servers 

[nginx_servers] 
1.2.3.4 
[app_servers] 
5.5.5.5 
6.6.6.6 

這比tedder42答案的方式清潔。如果您有多個服務器的密鑰,這很有用。

否則,您可以將您的密鑰包含在ansible.cfg文件中。

+2

如果你只有一個,你可以把它作爲'private_key_file'放在ansible.cfg中。 – tedder42 2016-03-27 19:41:41

+0

目前,我有多個我管理的服務器的私鑰。 – Ahmed 2016-03-27 22:28:30