簡體   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