Настройка Fabric для EC2 - PullRequest
10 голосов
/ 11 июня 2011

Я пытаюсь создать файл 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.

Не уверен, что происходит, но я не могу найти какие-то отличные учебники по использованию fabric на ec2, и я не знаю, как это возможно.

Спасибо

Обновление:

выглядит как

env.hosts = ['111.111.111.111'] 

недействительно, вам нужно использовать фактический URL

env.hosts = ['mywebsite.com'] 

которая исправила мою проблему

Ответы [ 3 ]

9 голосов
/ 18 января 2012

Вы также можете использовать ключ '--disable-known-hosts', чтобы игнорировать эту ошибку.

7 голосов
/ 15 июля 2011

Убедитесь, что ваш эластичный 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'],
})
4 голосов
/ 15 мая 2014

Из проблемы Vagrant на GitHub вам может потребоваться удалить хост из файла known_hosts с помощью такой команды:

ssh-keygen -R 111.111.111.111
...