Fabric env.hosts and run in the same method => No hosts found
为什么?
1 2 3 4 5 | from fabric.api import env, run def update(): env.hosts = ['apycat'] run('cd /var/www/menu; svn up') |
不工作时,我
1 2 3 4 5 6 | from fabric.api import env, run env.hosts = ['apycat'] def update(): run('cd /var/www/menu; svn up') |
号
做?
在文档中没有找到任何关于这个的信息。
在fab命令生成fab任务的主机列表后指定主机列表将不起作用。因此,对于第一个示例,您的更新任务没有主机列表集,因此允许下面的run()操作。文档中有一个很好的部分。
但也要注意的是,您可以通过两种方式中的一种来获得类似于第一种方式的用例。首先使用settings()上下文管理器:
1 2 3 | def foo(): with settings(host_string='apycat'): run(...) |
另一个使用更新的api函数execute():
1 2 3 4 5 | def bar(): run(...) def foo(): execute(bar, hosts=['apycat']) |
号