繁体   English   中英

为 EC2 配置 Fabric

[英]Configuring Fabric For 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

我看到以下 output:

[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'] 

无效,需要使用实际的URL

env.hosts = ['mywebsite.com'] 

这解决了我的问题

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

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

GitHub 上的 Vagrant 问题中,您可能需要使用如下命令从known_hosts文件中删除主机:

ssh-keygen -R 111.111.111.111

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM