【发布时间】:2015-02-13 03:21:04
【问题描述】:
我是 Fabric 的新手,因此由于搜索术语错误,我可能错过了一个简单的答案。
我正在尝试在 AWS 中启动一个新的 ubuntu EC2 实例,然后使用 Fabric 连接到它并让它执行几个命令。但是,Fabric 的 SSH 连接似乎有问题,也许我定义了一些环境变量错误?
@task //starts new EC2 instance and sets env variables
def prep_deploy():
//code to start new EC2 instance, named buildhost
env.hosts=[buildhost.public_dns_name]
env.user = "ubuntu"
env.key_filename = ".../keypair.pem"
env.port = 22
@task
def deploy():
run("echo $HOME") //code fails here
....
我运行fab prep_deploy deploy,因为我读到您需要一个新任务才能使新的环境变量生效。
我明白了
Fatal error: Timed out trying to connect to ...amazonaws.com (tried 1 time)
Underlying exception: timed out
实例的安全组对 SSH 开放:我可以通过 Putty 连接。事实上,如果我在 deploy() 开始时清空 `env.host_string' 变量,当它提示我手动输入主机时,我可以在“ubuntu@...amazonaws.com:22”中写入主机名与任务开始时的输出完全相同,它将连接到实例。但我不知道如何操作环境变量以便它理解主机名。
【问题讨论】: