Как обнаружить текущую роль в Матрице Python

Это очень конкретный вопрос Матрицы, но более опытные хакеры Python смогли отвечать на это, даже если они не знают Матрицу.

Я пытаюсь указать другое поведение в команде, в зависимости от которой роли оно работает за, т.е.:

def restart():
    if (SERVERTYPE == "APACHE"):
        sudo("apache2ctl graceful",pty=True)
    elif (SERVERTYPE == "APE"):
        sudo("supervisorctl reload",pty=True)

Я взламывал это с функциями как этот:

def apache():
    global SERVERTYPE
    SERVERTYPE = "APACHE"
    env.hosts = ['xxx.xxx.com']

Но это, очевидно, не очень изящно, и я просто обнаружил роли, таким образом, мой вопрос:

Как я выясняю, какой роли текущий экземпляр принадлежит?

env.roledefs = {
    'apache': ['xxx.xxx.com'],
    'APE': ['yyy.xxx.com'],
}

Спасибо!

23
задан rdrey 23 June 2010 в 04:20
поделиться

1 ответ

Для всех остальных, кто когда-либо сталкивался с этим вопросом, вот мое решение:

Ключом было найти env.host_string.

Вот как я перезапускаю разные типы серверов одной командой:

env.roledefs = {
    'apache': ['xxx.xxx.com'],
    'APE': ['yyy.xxx.com']
}

def apache():
    env.roles = ['apache']

...

def restart():
    if env.host_string in env.roledefs['apache']:
        sudo("apache2ctl graceful", pty=True)
    elif env.host_string in env.roledefs['APE']:
        sudo ("supervisorctl reload", pty=True)

наслаждайтесь!

18
ответ дан 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: