在fabri中使用任务之间的变量

2024-03-28 11:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我对fabfile有问题。我有下一个剧本

temp = []

    rolesdef = { server1: [user@server.com],
server2: [user@server2.com, user@server3.com]
}

@task
@roles('server1')
def first():
  ...do something...
  temp = something

@task
@roles('server2')
@parallel
def second():
  ...do something...
  run(temp)

如何在second()中使用在first()中定义的“temp”? 另外,我想在一次fabfile执行期间在server1上执行first(),在server2上执行second()。在

我应该使用execute(),但如何在“hosts”行中设置auth的密码?在

谢谢你的帮助。在


Tags: comtaskdefdotempsomethingfabfilefirst
1条回答
网友
1楼 · 发布于 2024-03-28 11:35:29

您可以使用env共享temp,并使用with_setting decorator更改密码和用户-

from fabric.api import env
from fabric.decorators import with_settings, roles, task

rolesdef = { "server1": ["server.com"],
"server2": ["server2.com", "server3.com"]
}
connection = { "server1": {"user": "user1", "password": "123"},
"server2": {"user": "user2", "password": "456"}
}

@task
@roles('server1')
@with_settings(**connection["server1"])
def first():
  ...do something...
  env.temp = something

@task
@roles('server2')
@with_settings(**connection["server2"])
@parallel
def second():
  ...do something...
  run(env.temp)

相关问题 更多 >