配置EC2的Fabric

时间:2011-06-11 16:09:29

标签: python deployment ubuntu amazon-ec2 fabric

我正在尝试创建一个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'] 

解决了我的问题

3 个答案:

答案 0 :(得分:8)

您还可以使用'--disable-known-hosts'开关忽略此错误。

答案 1 :(得分:7)

确保您的弹性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'],
})

答案 2 :(得分:4)

a Vagrant issue on GitHub开始,您可能需要使用以下命令从known_hosts文件中删除主机:

ssh-keygen -R 111.111.111.111