Это очень конкретный вопрос Матрицы, но более опытные хакеры 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'],
}
Спасибо!
Для всех остальных, кто когда-либо сталкивался с этим вопросом, вот мое решение:
Ключом было найти 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)
наслаждайтесь!