我正在尝试使用部署工具fabric . 我成功地为CentOS和Ubuntu EC2实例的主机执行fab命令 . 但是,我假装执行Amazon Linux EC2实例的主机 .
我执行的命令如下:
$ fab -f fab_test.py getHostname
fab_test.py:
$ cat fab_test.py
from fabric.api import run, env
env.hosts = ["*** host ip addr ***"]
env.user = "ec2-user" # clduser for CentOS and ubuntu for UbuntuOS
env.port = "*** port number ***"
env.key_filename = "/path/to/clduser.pem"
def getHostname():
run("hostname")
成功结果:
[*** host ip addr ***] Executing task 'getHostname'
[*** host ip addr ***] run: hostname
[*** host ip addr ***] out: host-name
[*** host ip addr ***] out:
Done.
结果失败:
[*** host ip addr ***] Executing task 'getHostname'
[*** host ip addr ***] run: hostname
[*** host ip addr ***] out: [ec2-user@host-name ~]$
“failed”表示fabric等待输入,不执行“hostname”命令 . 当我输入一些命令来提示时,该命令在远程主机中正确执行 . 所以我认为 Build ssh连接是可以的 . 刚刚创建了Amazon Linux的实例,并且没有安装任何内容 . 来宾机也是亚马逊Linux的EC2实例 .
有谁能解决这个问题?我在谷歌搜索找不到任何解决方案 . 谢谢 .