gpt4 book ai didi

python - 如何发现 Python Fabric 中的当前角色

转载 作者:IT老高 更新时间:2023-10-28 20:26:17 25 4
gpt4 key购买 nike

这是一个非常Fabric具体问题,但更有经验的 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'],
}

谢谢!

最佳答案

对于曾经有这个问题的其他人,这是我的解决方案:

关键是找到 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)

享受吧!

关于python - 如何发现 Python Fabric 中的当前角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3098912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com