如果没有从命令行显式提供角色或主机,我想为特定任务定义默认主机。
我可以使用env.all_hosts
检查当前主机列表是否为空,但我不知道如何将其设置为某个主机。
我还考虑使用@hosts()
,但它似乎覆盖了命令行的输入,这是不可取的。
答案 0 :(得分:0)
您可以使用命令行主机列表从命令行覆盖@hosts
装饰器,如Fabric's Order of Precedence的第一点所述:
优先顺序
我们一直在指出哪些设置主机列表的方法胜过其他方法,因为我们已经过去了。然而,为了使事情更清楚,这里有一个快速细分:
- 每个任务,命令行主机列表(fab mytask:host = host1)都会覆盖其他所有内容。
- 每个任务,装饰器指定的主机列表(@hosts(' host1'))覆盖env变量。
- 在fabfile中设置的全局指定的主机列表(env.hosts = [' host1'])可以覆盖在命令行上设置的此类列表,但前提是您不小心(或者需要它们)到。)
- 在命令行上设置的全局指定的主机列表(--hosts = host1)将初始化env变量,但就是这样。
尝试第一个选项,如果您有任何其他问题,请告诉我们。