我有一个看起来像这样的环境:
env.roledefs = {
'cisco-collectors': ['hosta', 'hostb', 'hostc'],
'brocade-collectors': ['hosta', 'hostd']
}
我有一些特定的文件需要发送到特定角色的主机:
files = {
'cisco-collectors': ['/path/to/filea', '/path/to/fileb'],
'brocade-collectors': ['/path/to/filec', '/path/to/filed']
}
如何编写我的 sendFiles() 函数,以便在命令行上指定角色时,甚至使用@roles()
装饰器时,我将能够获得正确的文件列表?
这个问题显示了一种确定主机是否属于某个角色的方法,但我需要获取当前正在执行的角色,以便我知道要发送哪个文件列表。
理想情况下,它看起来像这样:
@roles('cisco-collectors', 'brocade-collectors')
def sendFiles():
for file in files[env.current_role]:
put(file)