Python Deployment Tool
Project description
Purpose
If you have python based application, need to deploy to a fleet of machines and need to constantly update these application, mordor is the right tool for you. You can
- Deploy your python application to the host fleet
- Start and stop your python application on the fleet
- Update your python application on the fleet.
config
You need to have a local config file placed in ~/.mordor/config.json
. Here is an example:
{
"hosts": {
"localhost": {
"ssh_host" : "localhost",
"home_dir" : "/Users/shizhong/mordor",
"virtualenv": "/usr/local/bin/virtualenv",
"python3" : "/usr/local/bin/python3"
},
"mylinux": {
"ssh_host" : "mylinux",
"home_dir" : "/home/SHIZHONG/mordor",
"virtualenv": "/usr/bin/virtualenv",
"python3" : "/usr/bin/python3"
}
},
"applications": {
"sample": {
"home_dir" : "/Users/shizhong/projects/sample",
"deploy_to" : [ "mylinux", "localhost" ],
"use_python3" : true,
"config" : {
"config" : "convert",
"oci_api_key.pem": "copy"
}
}
}
}
Host Config
- In "hosts", key is host name, value is host config
ssh_host
You should be able to ssh to the target host using their ssh_host attribute as host name without entering password.
You may need to use ssh-add
command and config your ~/.ssh/config
home_dir
This specify the home directory for mordor.
virtualenv
This specify the full path for virtualenv command
python3
This specify the full path for python3. You do not need to have this attribute if you do not plan to use python3.
Application configs
- In applications. key is application name, value is application config
home_dir
This specify where is the application's home directory.
deploy_to
This is an array, tells list of host the application will deploy to.
use_python3
If true, then this application uses python3. Default is false
Host
Before a host become usable for mordor, you need to
- Add host config to your
~/.mordor/config.json
- Run
mordor -a init_host --host_name <hostname>
to initialize your host
Before initialization
On host of your fleet,
- You need to make sure python 2.x is installed. For most of the Linux dist and mac, this is true.
- If you need to deploy application that uses python3 on this host, you need to install python3
- And set python3 in host config
- You need to install virtualenv and pip.
- You need to add entry in hosts sections for every machine you managed.
Initialization
Run mordor.py -a init_host --host_name <hostname>
to initialize your host. The host only need to be initialized once normally.
Here is a layout of your host directory structure:
<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
|
+-- temp Temporary directory
Stage Your Application
You can run command mordor.py -a stage --app_name <application_name>
to stage application to all the host the app is suppose to deploy
- In
config.json
, thedeploy_to
tells the list of host it will deploy to - In application's home directory, there is a file
manifest.json
, it looks like below
{
"version": "0.0.1"
}
The version tells the version of the app,
- On each deployable host, app's code will be copied over to
apps/<application_name>/<version>
directory- A sym link will be crate, so you can use
app/<application_name>/current/
as the current version
- A sym link will be crate, so you can use
- On each deployable host, virtualenv will be created, all required package will be installed.
- it looks for
requirements.txt
in your application directory for packages to install - on host, virtual env is a
venvs/<application_name>-<version>
- a symlink will be created in
venvs/<application_name>
- it looks for
- All the config file will also be copied over
- config file should be stored at
~/.mordor/configs/<application_name>
- the
config
section of application inconfig.json
will tell what file need to be copied over copy
means simply copy over,convert
means you can use variable likehome_dir
andapp_name
in your config file.
- config file should be stored at
run
You can run mordor.py -a run --app_name <application_name>
to run the application, all host deployed will run your application
Application Requirement
- You need to put a file
requirements.txt
to tell your applications dependency - You need to provide a
run.sh
command, this command will be called to launch your program
To see an example, see sample
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mordor2-0.0.11.tar.gz
.
File metadata
- Download URL: mordor2-0.0.11.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b1bf2b0c530f59f84ea4e1c6cdc53f51286eb89c6dc62462a114ffec1d00f58 |
|
MD5 | 709747bf9e5923cb86c55dee55c6d8f2 |
|
BLAKE2b-256 | bd147a2677cb6600254163a848593b4af65ab5d92055514473df3c817cc448b0 |
Provenance
File details
Details for the file mordor2-0.0.11-py3-none-any.whl
.
File metadata
- Download URL: mordor2-0.0.11-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.5.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 176af27c7d8317d4bb38b3f77ec15a33a1ea0e4f7defc61e9ef75b853d551eae |
|
MD5 | e893cabaff8df80de3c8ca8bd6e9fb71 |
|
BLAKE2b-256 | f907d4d6688ed889780e1ddfba954b986ab971044ff98122f93d566823bc4587 |