python部署工具

mordor2的Python项目详细描述


目的

如果您有基于python的应用程序,需要部署到一组机器上,并且需要不断更新这些应用程序,那么mordor是适合您的工具。您可以

  • 将python应用程序部署到主机舰队
  • 在舰队上启动和停止python应用程序
  • 在舰队上更新python应用程序。

配置

您需要在~/.mordor/config.json中放置一个本地配置文件。下面是一个示例:

{
    "hosts": {
        "localhost": {
            "ssh_host"  : "localhost",
            "env_home"  : "/Users/shizhong/mordor",
            "virtualenv": "/usr/local/bin/virtualenv",
            "python3"   : "/usr/local/bin/python3"
        },
        "mylinux": {
            "ssh_host"  : "mylinux",
            "env_home"  : "/home/SHIZHONG/mordor",
            "virtualenv": "/usr/bin/virtualenv",
            "python3"   : "/usr/bin/python3"
        },
        "test3": {
            "ssh_host": "test3.deepspace.local",
            "env_home": "/root/mordor",
            "virtualenv": "/usr/bin/virtualenv",
            "ssh_key_filename": "~/.runtime/cloudconfig/home",
            "ssh_username": "root",
            "python3": "/usr/bin/python36"
        }
    },
    "applications": {
        "sample": {
            "home_dir"    : "/Users/shizhong/projects/sample",
            "deploy_to"   : [ "mylinux", "localhost" ],
            "use_python3" : true,
            "config"      : {
                "config"         : "convert",
                "oci_api_key.pem": "copy"
            }
        }
    }
}

主机配置

  • 在“hosts”(主机)中,key是主机名,value是主机配置

ssh_主机

您应该能够使用其ssh_host属性作为主机名通过ssh连接到目标主机,而无需输入密码。 您可能需要使用ssh-add命令并配置~/.ssh/config

ssh密钥文件名

如果需要使用私钥连接到ssh服务器,可以在此处指定密钥文件名

ssh_用户名

如果指定ssh\u key\u文件名,则必须提供该文件名。它表示ssh用户名

环境主页

指定mordor的主目录。

virtualenv

这将指定virtualenv命令的完整路径

Python3

这将指定python3的完整路径。如果不打算使用python3,则不需要具有此属性。

应用程序配置

  • 在申请中。键是应用程序名称,值是应用程序配置

主目录

指定应用程序的主目录的位置。

部署到

这是一个数组,告诉应用程序将部署到的主机的列表。

使用_python3

如果为true,则此应用程序使用python3。默认值为false

命令

可选。运行应用程序时指定命令。if可以是bash shell脚本或python脚本。bash shell脚本的文件名必须以.sh结尾,python脚本的文件名必须以.py结尾

主机

在主机对mordor可用之前,您需要

  • 将主机配置添加到~/.mordor/config.json
  • 运行mordor -a init-host --host-name <hostname>初始化主机

初始化前

在舰队的主机上,

  • 您需要确保安装了Python2.x。对于大多数linux dist和mac,这是正确的。
  • 如果需要在此主机上部署使用python3的应用程序,则需要安装python3
    • 在主机配置中设置python3
  • 你需要安装virtualenv和pip。
  • 您需要为管理的每台计算机在主机部分中添加条目。

初始化

运行mordor.py -a init-host --host-name <hostname>初始化主机。主机通常只需要初始化一次。 以下是主机目录结构的布局:

<Mordor Home Directory>
  |
  +-- apps                                  Home directory for all applications
  |     |
  |     <application name>                  Home directory for an application
  |         |
  |         +-- <version 1>                 Directory for version 1 of application
  |         |
  |         +-- <version 2>                 Directory for version 2 of application
  |         |
  |         +-- current                     A symlink to the current version
  |
  +-- bin                                   Some tools used by mordor
  |
  +-- configs                               Home directory for configs for all applications
  |     |
  |     +-- <application name>              Config for an application
  |
  +-- logs                                  Home directory for logs for all applications
  |     |
  |     +-- <application name>              Logs for an application
  |
  +-- pids                                  Directory for pid for each application
  |     |
  |     +-- <application name>.pid          pid for the latest run of an application
  |
  +-- venvs                                 Home for virtual envs for all application
  |     |
  |     +-- <application name>_<version>    Virtual env for a given application with given version
  |
  +-- data
  |     |
  |     +-- <application name>
  |
  +-- temp                                  Temporary directory

准备应用程序

您可以运行命令mordor.py -a stage --app-name <application_name>将应用程序转移到应用程序要部署的所有主机

  • config.json中,deploy_to告诉它将部署到的主机列表
  • 在应用程序的主目录中,有一个文件manifest.json,如下所示
{
    "version": "0.0.1"
}

版本告诉应用程序的版本,

  • 在每个可部署主机上,应用程序的代码将被复制到apps/<application_name>/<version>目录
    • sym链接将被打包,因此您可以使用app/<application_name>/current/作为当前版本
  • 在每个可部署主机上,将创建virtualenv,并安装所有必需的包。
    • 它在应用程序目录中查找要安装的包requirements.txt
      • 上面的文件是可选的。
      • 它还查找^ {CD16}},如果存在,它将安装在^ {CD15}}之前
    • 在主机上,virtual env是一个venvs/<application_name>-<version>
    • 符号链接将在venvs/<application_name>
    • 中创建
  • 所有配置文件也将被复制到
    • 配置文件应存储在~/.mordor/configs/<application_name>
    • config.json中应用程序的config部分将告诉需要复制的文件
    • copy表示简单的复制,convert表示可以在配置文件中使用类似env_homeapp_name的变量。

转换

您的文件必须是python格式的字符串,并提供以下变量

Variable nameDescription
env_homeenvironment home directory on the host
app_nameapplication name
config_dirconfiguration directory for the app on the host

运行

您可以运行mordor.py -a run --app-name <application_name>要运行应用程序,所有部署的主机都将运行您的应用程序。它将调用您在应用程序的cmd配置中指定的命令,如果缺少,则使用“run.sh”。

应用要求

  • 您需要放置一个文件requirements.txt来告诉您的应用程序依赖关系
  • 您需要提供一个run.sh命令,该命令将被调用以启动您的程序

要查看示例,请参见sample

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
在Android应用程序中处理新活动时出现java NullPointerException   从PSV文件读取Java   在JavaSwing中将方法从一个类传递到另一个类   带有MongoDB错误的java Vertx ClassNotFoundException:com。mongodb。联系溪流工厂   在java中替换2D数组中的数字?   java Avro方案空布尔和双整数布尔的写并集   java导入组织。neo4j无法解决?   从另一个获取变量。使用反射的java文件   Java:以格式化字符串的形式返回具有非常不同的条目长度的2D数组   java客户端应用程序正在从IBMMQ接收不同格式的消息体   java在我的主循环中的步骤有问题   java如何正确安装来自sslforfree的证书。tomcat服务器上的com   java RecyclerView变更单永久   java如何获得屏幕的精确中间位置,即使调整了大小