这是一个非常Fabric http://docs.fabfile.org具体问题,但更有经验的 python 黑客可能能够回答这个问题,即使他们不了解 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'],
}
Thanks!
对于其他有此问题的人,这是我的解决方案:
关键是找到 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)
enjoy!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)