2016-06-02 2 views
0

Я хочу, чтобы вставить мои env.host manually.I есть файл, имеющий список различий env.host.something как это:питона-тканевый вручную установить параметр хоста

Моего 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"] 

моего 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 

Я хочу, чтобы мой emailapi.py вручную подобрать этот Ip путем импорта файла host.py. Как я могу это сделать, я все еще в замешательстве? Пожалуйста, помогите мне.

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

Я еще кое-что, если я хочу, чтобы получить мой ip_address и устанавливается автоматически env.host, как я могу его получения идеальной.

+0

Я прочитал этот 3-й и я до сих пор не понимаю, что вы просите, пожалуйста, перефразируйте ... все. –

+0

Извините, я хочу сохранить поле ip_address в любой переменной. И эта переменная автоматически выбирает ip в env.host. Предположим, у меня есть 5 diff Ip, и у меня есть 5 diff vm. Я хочу выполнить работу diff для diff. Ip & want автоматически выбирает diff env.host diff Ip и выполняет там уважаемую задачу. –

+0

Хорошо, я думаю, вы увязли с кодом, что вы пытаетесь выполнить со сценарием. Объясните это проще. –

ответ

0

Я думаю, вы хотите это сделать. Дайте мне знать, если это сработает.

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

выход из работы "my_task" для каждого из web1 и web2 здесь