Esta es una pregunta muy muy Fabric, pero los hackers python más experimentados podrían ser capaces de responder a esto, incluso si no conocen Fabric.Cómo descubrir el rol actual en Python Fabric
Estoy tratando de especificar el comportamiento diferente en un comando en función del papel que se está ejecutando para, es decir:
def restart():
if (SERVERTYPE == "APACHE"):
sudo("apache2ctl graceful",pty=True)
elif (SERVERTYPE == "APE"):
sudo("supervisorctl reload",pty=True)
estaba hackeando esto con funciones como ésta:
def apache():
global SERVERTYPE
SERVERTYPE = "APACHE"
env.hosts = ['xxx.xxx.com']
Pero eso obviamente no es muy elegante y acabo de descubrir roles, entonces mi pregunta es:
¿Cómo puedo averiguar a qué rol pertenece una instancia actual?
env.roledefs = {
'apache': ['xxx.xxx.com'],
'APE': ['yyy.xxx.com'],
}
Gracias!
gracias por esta actualización. mi respuesta anterior está muy desactualizada/irrelevante en estos días. – rdrey
Esto tampoco funciona con el formato de línea de comando 'fab testrole: roles =" staging, prod "'. Demasiado limitado para el uso real. – Rockallite
@Rockallite Esa es la sintaxis para pasar en params a las tareas. De hecho, encontré [su ejemplo en los documentos] (http://docs.fabfile.org/en/1.8/usage/fab.html?highlight=roles#roles-and-hosts). Pero no pude usar esa sintaxis para especificar roles (ver [transcripción] (https://gist.github.com/exhuma/8348976)). ¿Por qué no simplemente usar '-R'? ¿Es posible que los documentos de la tela estén desactualizados? – exhuma