2016-07-22 3 views
2

Я задал много вопросов, связанных с этой темой.Как указать путь файла pem при использовании шлюза в Fabric

Мой сценарий:

Локальный хост -> Шлюз -> Удаленный хост

Я использую env.gateway переменную для указания шлюза хоста.

образец кода

env.user = "ec2-user" 

env.key_filename = ["/home/ec2-user/.ssh/internal.pem","/home/roshan.r/test.pem","/home/ec2-user/.ssh/test2.pem"] 

env.hosts = ['x.x.x.244', 'x.x.x.132']  
env.gateway = 'x.x.x.189' 

def getdate(): 
    content = run('date') 

Моя проблема с PEM ключом пути.

/home/roshan.r/test.pem находится в текущей директории. который используется для входа в сервер шлюза.

Другие два упомянутых файла pem расположены на сервере шлюза.

Когда я запускаю эту программу, я получаю файл, не найденный.

Спасибо за помощь!

ответ

0

Я havn't должен был сделать это еще, но как насчет функции, которая влияет на эти файлы pem? что-то вроде:

@'x.x.x.189' 
def get_pem(): 
    env.key_filename.append(get("/home/ec2-user/.ssh/internal.pem") 
    env.key_filename.append(get("/home/ec2-user/.ssh/test2.pem") 

Кроме того, я мог бы попробовать что-нибудь? я думаю, у вас есть фиал, который не найден, потому что ткань ищет /home/ec2-user/.ssh/internal.pem на вашем компьютере. Он не знает, что это на удаленном хосте. Что делать, если вы попытаетесь: x.x.x.189:/home/ec2-user/.ssh/internal.pem

0

Я только что изменил путь файла .pem и работает. См. Ниже предложение:

Храните файл .pem сервера шлюза и приложения на локальном компьютере и пытайтесь его выполнить. См. Ниже мой код.

from fabric.api import * 

env.user = "ubuntu" 

env.key_filename = ["~/folder/sub_folder/gate_way_instance.pem", "~/folder/sub_folder/test_server_ssh-key.pem"] 

env.hosts = ['XX.XX.XX.XXX'] 
env.gateway = 'XX.XX.XX.XXX' 


def uptime(): 
    content = run('cat /proc/uptime') 
    print content 
    content = run('ls -la') 
    print content