Это очень важный вопрос Fabric, но более опытные хакеры на питоне могут ответить на это, даже если они не знают Ткань.
Я пытаюсь указать другое поведение в команде в зависимости от того, для какой роли она выполняется, т.е.:
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'],
}
Спасибо!