2014-01-20 3 views
0

여러 원격 호스트에서 Python 스크립트를 통해 병렬로 메소드를 실행하려고합니다. 나는 그들의 신임장을 가지고있다. (ip, usr, pass). 이렇게하려면 @parallel으로 메소드를 꾸미고 모든 호스트에 부여한 execute()을 통해 호출했습니다. 내 질문은 각 작업에 대해 env.usr, env.password을 어떻게 설정합니까? 여기 내 코드의 예는 다음과 같습니다패브릭 파이썬에서 병렬 실행

class deployment() 

    __init__(): 
     self.hosts = read_ips_from_csv 

    def do_something(self) 
     run(remote_command) 

    def run_remote(self,func): 
     execute(func,hosts = self.hosts) 

    def deploy(self): 
     run_remote(self.do_something) 

main(): 

my_deploy = deployment() 
my_deploy.deploy() 

질문이 답을 do_something()

덕분에 많은 각 호스트에 대한 env 매개 변수를 설정하는 방법입니다!

답변

0
  • 적어도 로그인의 경우에는 How to set target hosts in Fabric file에서 설명한대로 호스트 이름과 함께 전송할 수 있습니다.
  • 비밀번호에 대한 간단한 방법을 찾지 못했습니다. 확실히 원숭이 패치 가능합니다. 선호하는 방법이 할 수있는 것을

참고하면 아주 간단한 방법으로 모든이의

+0

이렇게하는 것이 가장 좋은 방법은 SSH 키를 사용하여이 모든 것을 매우 간단하게 제거하는 것입니다. 분명히 해줄 수 있니? – Nuvi

+0

SSH 키를 사용하면 사용자가 결정한 것과 동일한 암호를 사용하여 여러 암호로 보호 된 ssh 계정에 로그온 할 수 있습니다. ssh 키의 사용법은 ssh 키를 생성하고 각 공개 버전을 각 서버에 넣고 fabfile에'env.key_filename = "~/.ssh/id_rsa"'를 추가하는 것으로 귀결됩니다. ssh 키에 대한 자세한 내용은 Google이 귀하의 친구입니다 (이 상자는 토론과 관련하여 너무 작다고 느낍니다.)) ... – Oct

+0

감사합니다! 나는 이번에 그것을 풀었지만 당신의 제안을 확실히 볼 것이다. – Nuvi

2

확인을 제거 도움으로 SSH 키를 사용하는 것입니다, 그래서 이것은 내가 그것을 (다른에 발견 해결 방법입니다 질문 https://stackoverflow.com/a/5568219/3216763) : 내가는이 같은 실행 호출하기 전에 env.hosts 및 ENV 암호를 추가 :

def run_remote(self,func): 
    env.hosts = ['[email protected]:port1', '[email protected]'] 
    env.passwords = {'[email protected]:port1': 'password1', '[email protected]': 'password2'} 
    execute(func) 

그래서 어쩌면 다른 사람을 도움이 될 것입니다 그것을 꽤 시간을 보냈다.

+0

다른 stackoverflow 질문에서 솔루션을 발견하면 링크를 포함해야합니다. –