Voici la méthode que j’utilise pour redémarrer convenablement un hôte avec Fabric en lieu et place de la méthode reboot fournie par l’API :

from fabric.state import *

def mytask:
    sudo("shutdown -r +1")
    time.sleep(120)
    connections[env.host_string].get_transport().close()
    run("uptime")

Cette méthode est fonctionnelle sur une instance EC2 sous systemd. Le délai d’attente peut être adaptée si besoin, mais la déconnexion à l’hôte est forcée pour que Fabric réétablisse le tunnel SSH dans tous les cas.