如果未提供角色/主机,则为任务指定默认主机

时间:2017-03-29 16:57:39

标签: fabric

如果没有从命令行显式提供角色或主机,我想为特定任务定义默认主机。 我可以使用env.all_hosts检查当前主机列表是否为空,但我不知道如何将其设置为某个主机。

我还考虑使用@hosts(),但它似乎覆盖了命令行的输入,这是不可取的。

1 个答案:

答案 0 :(得分:0)

您可以使用命令行主机列表从命令行覆盖@hosts装饰器,如Fabric's Order of Precedence的第一点所述:

  

优先顺序

     

我们一直在指出哪些设置主机列表的方法胜过其他方法,因为我们已经过去了。然而,为了使事情更清楚,这里有一个快速细分:

     
      
  • 每个任务,命令行主机列表(fab mytask:host = host1)都会覆盖其他所有内容。
  •   
  • 每个任务,装饰器指定的主机列表(@hosts(' host1'))覆盖env变量。
  •   
  • 在fabfile中设置的全局指定的主机列表(env.hosts = [' host1'])可以覆盖在命令行上设置的此类列表,但前提是您不小心(或者需要它们)到。)
  •   
  • 在命令行上设置的全局指定的主机列表(--hosts = host1)将初始化env变量,但就是这样。
  •   

尝试第一个选项,如果您有任何其他问题,请告诉我们。