La connexion à un hôte répertoriés dans ~/.ssh/config lors de l'utilisation de Tissu
Je vais avoir des ennuis avec Tissu
de ne pas reconnaître les hôtes que j'ai dans ~/.ssh/config
.
Mon fabfile.py
est comme suit:
from fabric.api import run, env
env.hosts = ['lulu']
def whoami():
run('whoami')
De course $ fab whoami
donne:
[lulu] exécuter: whoami
Erreur fatale: recherche de Nom a échoué pour
lulu
Le nom lulu
est dans mon ~/.ssh/config
, comme ceci:
Host lulu
hostname 192.168.100.100
port 2100
IdentityFile ~/.ssh/lulu-key
Ma première pensée à la résolution c'est d'ajouter quelque chose comme lulu.lulu
à /etc/hosts
(je suis sur Mac), mais ensuite, je dois aussi passer à la fiche d'identité de Tissu - et je préfère garder mes d'authentification (c'est à dire ~/.ssh/config
) séparée de mon déploiement (c'est à dire fabfile.py
).
Ainsi, soit dit en passant, si vous essayez de vous connecter à un hôte dans le fichier hosts, fabric.contrib.projects.rsync_project
ne semble pas prendre en compte "les ports" dans le hosts.env
(par exemple, si vous utilisez hosts.env = [lulu:2100]
un appel à rsync_project
semble essayer de se connecter à lulu:21
).
Est-il une raison de Tissu ne reconnaît pas cette lulu
nom?
Vous devez vous connecter pour publier un commentaire.
Depuis la version 1.4.0, Tissu utilise ssh config (en partie). Cependant, vous devez activer explicitement, avec
quelque part près du haut de votre fabfile. Une fois que vous faites cela, le Tissu doit lire votre ssh config (à partir de
~/.ssh/config
par défaut, ou deenv.ssh_config_path
).Un avertissement: si vous utilisez une version antérieure à la version 1.5.4, un arrêt se produit si
env.use_ssh_config
est fixé, mais il n'y a pas de fichier de config actuelle. Dans ce cas, vous pouvez utiliser une solution de contournement comme:Noter que c'est également le cas lorsque le nom n'est pas dans
/etc/hosts
. J'ai eu le même problème et a dû ajouter le nom d'hôte à la fois ce fichier et~/.ssh/config
.mise à jour: Cette Réponse est maintenant obsolète.
Tissu n'est pas prise en charge actuellement de la .ssh/config fichier. Vous pouvez les définir dans une fonction à appeler ensuite sur la cli, par exemple: fab tâche de production; où la production définit le nom d'utilisateur, nom d'hôte, le port, et ssh identité.
Comme pour rsync projet, qui devrait maintenant avoir le port de réglage de capacité, si pas, vous pouvez toujours exécuter le local("rsync ..."), comme c'est essentiellement ce qui a contribué fonction n'.
On peut utiliser le code suivant pour lire le fichier de configuration (code original tiré de: http://markpasc.typepad.com/blog/2010/04/loading-ssh-config-settings-for-fabric.html):
ssh
bibliothèque (paramiko
de fourche):try: \n from ssh.config import SSHConfig \n except ImportError: \n from paramiko.config import SSHConfig
from paramiko.config import SSHConfig