Questa è una domanda specifica di Fabric, ma gli hacker più esperti di python potrebbero essere in grado di rispondere a questo, anche se non conoscono Fabric.Come scoprire il ruolo corrente in Fabric Python
Sto cercando di specificare il comportamento diverso in un comando a seconda di quale ruolo è in esecuzione per, vale a dire:
def restart():
if (SERVERTYPE == "APACHE"):
sudo("apache2ctl graceful",pty=True)
elif (SERVERTYPE == "APE"):
sudo("supervisorctl reload",pty=True)
mi era hacking questo con funzioni come questo:
def apache():
global SERVERTYPE
SERVERTYPE = "APACHE"
env.hosts = ['xxx.xxx.com']
Ma Ovviamente non è molto elegante e ho appena scoperto ruoli, quindi la mia domanda è:
Come faccio a capire a quale ruolo appartiene un'istanza corrente?
env.roledefs = {
'apache': ['xxx.xxx.com'],
'APE': ['yyy.xxx.com'],
}
Grazie!
grazie per questo aggiornamento. la mia vecchia risposta è molto antiquata/irrilevante in questi giorni. – rdrey
Anche questo non funziona con il formato a riga di comando 'fab testrole: roles =" staging, prod "'. Troppo limitato per l'uso effettivo. – Rockallite
@Rockallite Questa è la sintassi per passare in param alle attività. Ho effettivamente trovato [il tuo esempio nei documenti] (http://docs.fabfile.org/en/1.8/usage/fab.html?highlight=roles#roles-and-hosts). Ma non ero in grado di usare quella sintassi per specificare i ruoli (vedi [trascrizione] (https://gist.github.com/exhuma/8348976)). Perché non usare semplicemente '-R'? È possibile che i documenti del tessuto non siano aggiornati? – exhuma