Ich habe Probleme damit Fabric
, Hosts, in denen ich mich befinde, nicht zu erkennen ~/.ssh/config
.
Mein fabfile.py
ist wie folgt:
from fabric.api import run, env
env.hosts = ['lulu']
def whoami():
run('whoami')
Laufen $ fab whoami
gibt:
[lulu] rennen: whoami
Schwerwiegender Fehler: Namenssuche für Lulu fehlgeschlagen
Der Name lulu
ist in meinem ~/.ssh/config
, so:
Host lulu
hostname 192.168.100.100
port 2100
IdentityFile ~/.ssh/lulu-key
Mein erster Gedanke, um dies zu lösen, ist das Hinzufügen lulu.lulu
von /etc/hosts
(ich bin auf einem Mac), aber dann muss ich auch die Identitätsdatei an Fabric übergeben - und ich möchte lieber meine Authentifizierung (dh ~/.ssh/config
) von meiner Bereitstellung trennen ( dh fabfile.py
).
Übrigens, wenn Sie versuchen, eine Verbindung zu einem Host in der Hosts-Datei herzustellen, werden fabric.contrib.projects.rsync_project
'Ports' in der Datei übrigens nicht bestätigt hosts.env
(dh wenn Sie hosts.env = [lulu:2100]
einen Anruf verwenden, um rsync_project
zu versuchen, eine Verbindung herzustellen lulu:21
).
Gibt es einen Grund, warum Fabric diesen lulu
Namen nicht erkennt ?
Beachten Sie, dass dies auch passiert, wenn der Name nicht vorhanden ist
/etc/hosts
. Ich hatte das gleiche Problem und musste den Hostnamen sowohl zu dieser Datei als auch zu dieser Datei hinzufügen~/.ssh/config
.quelle
Update : Diese Antwort ist jetzt veraltet .
Fabric unterstützt die .ssh / config-Datei derzeit nicht. Sie können diese in einer Funktion einrichten, um dann die CLI aufzurufen, z. B.: Fab Production Task; Dabei legt die Produktion den Benutzernamen, den Hostnamen, den Port und die SSH-Identität fest.
Was das rsync-Projekt betrifft, sollte es jetzt über die Fähigkeit zur Porteinstellung verfügen. Wenn nicht, können Sie immer lokal ("rsync ...") ausführen, da dies im Wesentlichen die Funktion dieser beitragenden Funktion ist.
quelle
Zum Lesen der Konfiguration kann folgender Code verwendet werden (Originalcode aus: http://markpasc.typepad.com/blog/2010/04/loading-ssh-config-settings-for-fabric.html ):
quelle
ssh
Bibliothek (paramiko
Gabel):try: \n from ssh.config import SSHConfig \n except ImportError: \n from paramiko.config import SSHConfig
from paramiko.config import SSHConfig