问题描述
|
我正在尝试创建fabfile.py,以便可以在EC2上进行部署。我的fabfile.py中包含以下内容:
from __future__ import with_statement
from fabric.api import *
def ec2():
env.hosts = [\'111.111.111.111\']
env.user = \'ubuntu\'
env.key_filename = \'/path/to/my/pem/key.pem\'
def run_ls():
run(\'ls -alt\')
\'111.111.111.111 \'是我的实例的弹性IP,并且我始终使用ubuntu而非root登录。
当我运行以下命令
fab ec2 run_ls
我看到以下输出:
[111.111.111.111] Executing task \'run_ls\'
[111.111.111.111] run: ls -alt
Fatal error: Host key for 111.111.111.111 did not match pre-existing key! Server\'s key was changed recently,or possible man-in-the-middle attack.
Aborting.
不知道发生了什么,但是我找不到在ec2上使用Fabric的出色教程,而且我不知道这是怎么可能的。
谢谢
更新:
好像
env.hosts = [\'111.111.111.111\']
无效,您需要使用实际的网址
env.hosts = [\'mywebsite.com\']
解决了我的问题
解决方法
确保您的弹性IP已附加到实例。我认为key_filename只接受一个参数,但是当您传入数组时,我的却在工作:
env.user = \"ubuntu\"
env.key_filename = [\"my_key.pem\",]
也许您应该尝试使用实例的公共主机名,例如:
env.roledefs.update({
\'prod\': [\'ec2-52-14-72-225.us-west-1.compute.amazonaws.com\'],})
, 您也可以使用'--disable-known-hosts \'开关忽略此错误。
, 在GitHub上的Vagrant问题中,您可能需要使用以下命令从known_hosts
文件中删除主机:
ssh-keygen -R 111.111.111.111