2016-06-02 5 views
0

Ich möchte meine env.host manually.I Dateiliste von diff env.host.something wie dies mit haben einzufügen:python-Stoff-manuell eingestellt Host-Parameter

Mein host.py:

@task 
def v2bg(): 
env.hosts = ["12.12.11.132","13.10.18.22"] 

@task 
def api(): 
env.hosts = ["4.3.81.27:2201", "4.3.1.7:2202", "20.3.18.07:2203", "60.83.581.27:2204"] 

@task 
def emailapi(): 
env.hosts = ["30.40.50.56:2201", "40.40.36.56:2202"] 

@task 
def v2emailapi(): 
env.hosts = ["20.18.148.30:2201", "20.18.48.3:2202"] 

Mein emailapi.py

import host 
from fabric.api import * 
from fabric.context_managers import * 
from fabric.contrib import * 

env.user = "ubuntu" 
env.key_filename = "~/Documents/Pem/sec" 
env.parallel = True 
env.warn_only = True 

ich möchte meine emailapi.py manuell diese IP-abholen durch host.py Datei importieren. Wie kann ich tun, dass ich immer noch in Verwirrung bin? Bitte helfen Sie mir aus.

"networks": { 
    "v4": [ 
    { 
     "ip_address": "104.131.186.241", 
     "netmask": "255.255.240.0", 
     "gateway": "104.131.176.1", 
     "type": "public" 
    } 
    ], 

ich noch etwas, wenn ich meine ip-adresse abgerufen werden soll und setzen env.host automatisch wie kann ich es acheive.

+0

Ich lese diese 3 Tim Es und ich verstehe immer noch nicht, was du verlangst, bitte umformuliere alles. –

+0

sorry, ich will in jedem variable.And mein ip_adresse Feld speichern, diese Variable automatisch ip in env.host holen. Angenommen, ich habe 5 diff Ip und ich habe 5 diff vm Ich möchte diff-Arbeit für diff Ip durchführen und möchte automatisch diff env.host diff Ip aufnehmen und dort die Aufgabe ausführen. –

+0

Ok, ich denke, Sie sind mit dem Code beschäftigt, was versuchen Sie mit dem Skript zu erreichen. Erklären Sie es einfacher. –

Antwort

0

Ich glaube, Sie dies tun wollen. Lass mich wissen ob es funktioniert.

my_roles.json

{ "ip": [ "[email protected]", "[email protected]" ], "ip1": [ "[email protected]", "[email protected]" ] } fabfile.py

from fabric.api import env, run, task 
import json 

def load_roles(): 
    with open('my_roles.json') as f: 
     env.roledefs = json.load(f) 

load_roles() 

@task 
def my_task(): 
    run("hostname") 

CLI

fab -R ip my_task

Ausgabe von "my_task" für jeden von web1 und web2 läuft hier