2016-07-05 11 views
1

sind meine Anforderungen wie folgtSSH-Konfigurationsdatei Setup mit Wildcards und DRY

  1. Alle unsere Cloud-Maschinen müssen die gleiche Konfiguration (Benutzer, Port, Identity)
  2. Ich brauche diese Einstellungen auf sie angewendet werden basierend auf Domain (* .xyz.com)
  3. ich brauche auch diese Einstellungen angewendet werden, wenn ich kurz Hosts Setup (siehe unten)

Mein aktueller SSH config ist

Host shortname1? 
    Hostname %h.prod.xyz.com 

Host test-myname 
    Hostname combo.test-myname.xyz.com 

Host *.xyz.com 
    Hostname %h 

Hostname *.xyz.com 
    User myuser 
    Port 12345 
    IdentityFile ~/.ssh/id_rsa 

Die genauen Anwendungsfälle sind ssh shortname1a; ssh shortname1b; ssh test-myname; ssh combo.test-myname.xyz.com

Host *.xyz.com war seit kurzem auch nach dem Debuggen für den letzten Anwendungsfall, und das scheint irgendwie die erste 2.

Ist dies der richtige Weg zu brechen oder ist gibt es einen besseren Weg?

+0

Ich glaube, das "Brechen" ist passiert, weil der 'Hostname' nicht so verwendet werden kann, wie ich annehme. Nur der Host kann als Block verwendet werden, und sobald ich einen anderen Host zwischen dem ersten und dem allgemeinen hinzugefügt habe, wurden sie deaktiviert. –

Antwort

3

Zusätzlich zu herauszufinden, warum die Config "brechen" war, entdeckte ich eine neue Direktive Match. Dies lässt mich tun, was ich

Host shortname1? 
    Hostname %h.prod.xyz.com 

Host test-myname 
    Hostname combo.test-myname.xyz.com 

Host *.xyz.com 
    Hostname %h 

Match Host *.xyz.com 
    User myuser 
    Port 12345 
    IdentityFile ~/.ssh/id_rsa 

Diese Config die Absicht hat, genau das, was ich brauche. Ich musste Host anstelle von Hostname im Spiel verwenden, weil es schien nicht zu akzeptieren Hostname aber Host scheint genau das zu sein, was ich brauche.

Ich hatte willkürliches Verhalten, weil ich missverstanden habe, dass Hostname nicht verwendet werden konnte, wie ich vorher verwendete, als Filter oder Übereinstimmung wie Aussage. Es kann nur innerhalb einer Host oder Match verwendet werden und lag damit implizit unter der letzten Host Aussage.