2014-10-08 12 views
28

Ich bin neu bei Ansible. Ich kann es testen und es funktioniert gut mit meiner Testanforderung. Um eine Verbindung zwischen dem Verwaltungsknoten und dem Client-Knoten herzustellen, verwende ich bereits erstelltes ssh-Schlüsselpaar. Wie kann ich einen anderen Knoten mit einem anderen SSH-Schlüsselpaar verwenden? Als Referenz betrachte ich 3 ec2-instance mit verschiedenen Schlüsselpaaren.Ansible mit mehreren SSH-Schlüsselpaar

Antwort

34

Gute Nachrichten - in einem einfachen Anwendungsfall ist das ziemlich einfach. Verwenden Sie einfach den ansible_ssh_private_key_file Parameter in Ihrem Ansible inventory.

Hier sind einige Beispiele aus meiner Personalakte entwendet:

$ 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

Dank Teddd funktioniert es gut für mich. Ist es möglich, denselben Schlüssel für alle Server derselben Gruppe zu verwenden? Ich meine zu sagen, wenn ich den gleichen Schlüssel für 10 Test-Server habe, wie oben beschrieben, muss ich die Schlüsseldetails für alle Test-Server separat angeben. Irgendeine Lösung ist da, damit ich den gleichen Schlüssel für alle Server derselben Gruppe weitergeben kann. Danke –

+0

@sumitkumar, soweit ich weiß, können Sie die Variablen in hosts.ini nicht gruppieren. Sie können jedoch eine [ssh_config] (http://linux.die.net/man/5/ssh_config) Datei verwenden, die Ihnen helfen kann. – tedder42

+7

Sie können sicher: http://docs.ansible.com/intro_inventory.html#group-variables [Testserver: vars] ansible_ssh_private_key_file = ~/.ssh/aws-testserver.pem – oley

21

tedder42 korrekt ist, jedoch gibt es einen besseren Weg, es zu tun.

Siehe ansible_ssh_private_key_filehere.

ich in meinem Host-Dateien die folgenden

# 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 

Wenn Sie mehrere Tasten Konfiguration haben, können Sie so etwas wie die folgenden

[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 

tun Das ist viel sauberer als tedder42 Antwort. Dies ist nützlich, wenn Sie mehrere Schlüssel für mehrere Server haben.

Andernfalls können Sie den Schlüssel stattdessen in die Datei ansible.cfg aufnehmen.

+2

Wenn Sie nur einen haben, können Sie ihn in ansible.cfg als 'private_key_file' setzen. – tedder42

+0

Derzeit habe ich mehrere private Schlüssel für die Server, die ich verwalte. – Ahmed