在结构脚本中切换环境

时间:2016-02-02 22:06:55

标签: python fabric

我想尝试执行此

env.host_string = "server1.com"
with cd("/tmp"):
    run("some command)

#switch servers
env.host_string = "server2.com"

with cd("/home"):
    run("some other command")

问题是命令需要按顺序执行而不是在parrelel中执行。我无法想办法在面料中做到这一点。我已经尝试了with env("hostname"):,但这不起作用。

2 个答案:

答案 0 :(得分:1)

使用@serial装饰器来避免并行执行任务。您还可以尝试使用@hosts装饰器(请参阅同一页面)将每个任务限制为主机的子集,并在调用Fabric时对所有主机进行争论。

答案 1 :(得分:1)

您可以使用fabric的execute()

来完成此操作
task_a():
  with cd("/tmp"):
    run("some command")

task_b():
  with cd("/home"):
    run("some other command")

task_c():
  execute(task_a,hosts=["server1.com"])
  execute(task_b,hosts=["server2.com"])