【问题标题】:Is it possible to run fabfile as global script是否可以将 fabfile 作为全局脚本运行
【发布时间】:2014-07-21 17:48:07
【问题描述】:

本周我为我们的开发人员编写了一个 fabfile,以帮助将数据库和文件部署到远程登台和生产环境。它是一个相当复杂的 fabfile,它使用配置的 json 文件来帮助设置生产/暂存环境变量。

我的问题是我能否以某种方式将我的 fabfile 添加到 /usr/bin 以全局运行 fabfile。能够运行命令而无需将 fabfile 复制并传递到每个 webroot(设计机构问题)。

理想情况下我可以这样做:

fab deploy

在 Sites/site.dev/ 或 Sites/site2.dev/ 内,无需将 fabfile 复制到这些目录中。我认为必须有一种方法可以使用别名来完成此任务,但我在这里的知识太薄弱,无法完成这项工作。

我的系统是osx。

【问题讨论】:

  • 小心 fab,因为它正在搜索要从当前目录相对运行的文件。如果您要编写“全局脚本”,请确保您位于正确的目录中。
  • 所有命令都使用相对路径。如果我在当前站点的 webroot 中运行 fab deploy,它将在当前工作目录中查找 fabric_config.json 文件。我已检查以确保存在运行前需要存在的文件。

标签: python shell system fabric


【解决方案1】:

我想我解决了我的困境。事实证明,您可以使用 -f 标志指定 fabfile 位置。从这里为像

这样的命令创建别名非常简单
alias deployfiles='fab -f ../devops/fabfile.py syncfiles'

$ deployfiles

很明显,很惊讶没有人给出这个解决方案。

【讨论】:

    【解决方案2】:

    在 Mac 上,另一种选择是将以下内容添加到您的 fab 文件的顶部:

    #!/usr/bin/env fab -f
    
    def boo():
        print 'x'
    

    然后就可以这样运行了:

    (venv)machine:soft kane$ ./test.py -l
    Available commands:
    
        boo
    (venv)machine:soft kane$ ./test.py boo
    x
    
    Done.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2013-06-29
      • 2018-01-30
      • 2018-08-25
      • 1970-01-01
      • 2010-11-28
      • 2016-02-21
      相关资源
      最近更新 更多