配置EC2的结构

问题描述

| 我正在尝试创建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
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...