python - 如何正确分发基于 python-fabric 的 python 应用程序

标签 python deployment distributed fabric

我的应用程序有一个 python 脚本,用于控制 Linux 主机群。更准确地说,我有一个集群数据库管理系统。该脚本实现了控制集群的例行任务——启动节点、停止节点、获取节点状态等。

现在,脚本是用 python 编写的,仅使用标准 python 库。它使用 paramiko 通过 ssh 访问远程主机。它非常丑陋,对于脚本的开发人员和维护人员来说毫无用处。

我想切换到python-fabric .

我的问题是:如何正确编写脚本并将其打包到发行版(包、tar.gz 等)中?

主要的应用程序构建系统是 CMake,并使用 configure_file 语句从模板生成我的脚本,并替换 C++ 应用程序、库等的完整路径。

我希望构建脚本能够:

  1. 使用 virtualenv 创建单独的环境
  2. 在单独的环境中安装 pip
  3. 在单独的环境中安装结构
  4. 运行 virtualenv 生成的“activate”脚本并从中调用内容

该解决方案有哪些缺点?您还能提出哪些其他解决方案?

最佳答案

我认为您没有得到任何答复,因为您的问题太模糊了。

Fabric 是一个简化 ssh 命令自动化的工具。您可以执行列出的任何操作,其方式与通过 Fabric 中的 run() 从命令行执行的方式基本相同。这是一个很棒的工具。

例如,

virtualenv new_env 变为 run('virtualenv new_env')。 就打包而言,您可以像打包任何 python 包(使用 setup.py 文件)一样打包它。

如果您热衷于简化构建/部署,请开始使用 Fabric,如果遇到任何问题请返回此处 the documentation不包括在内。

关于python - 如何正确分发基于 python-fabric 的 python 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354028/

相关文章:

python - 从 python 返回代码 256

python - 为什么我的代码无法访问 ENTER 或 STRAIGHT 文件夹或 .png 文件

javascript - Razzle - 在构建文件夹中运行 server.js 时未找到 React 错误

database - 有没有好用的分布式关系数据库?

time - 分布式时间同步和Web应用程序

language-agnostic - 分布式程序员缺少哪些工具?

python - Kivy - 动态文本标记?

python - Elastic Beanstalk 无法识别文件的绝对路径,返回 FileNotFoundError

ruby-on-rails - 安装sqlite3时出现push rails app to Heroku错误,Bundler无法继续

asp.net-mvc - 将我的 ASP.NET MVC 应用程序部署到我的 Web 主机时,由于配置锁定导致内部服务器错误