
Security News
NVD Quietly Sweeps 100K+ CVEs Into a “Deferred” Black Hole
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Mordor is a tool helps you to deploy your python application.
export SCP_OPTIONS="-O"
This is for developers who want to adding features or fix bugs for mordor. Please see For Developers
Here is an example to install mordor from github
mkdir ~/.mordor_venv
python3 -m venv ~/.mordor_venv
source ~/.mordor_venv/bin/activate
python -m pip install pip setuptools --upgrade
python -m pip install wheel
python -m pip install git+https://github.com/stonezhong/mordor.git@master
# You can also do "python -m pip install mordor2"
Mordor deploys your application using configurations, and configurations are located in a directory.
Mordor locates the configuration directory with the following order:
-c
option in command line.MORDOR_CONFIG_DIR
~/.mordor
Here is an example config.json
:
{
"hosts": {
"mordortest": {
"ssh_host" : "mordortest",
"env_home" : "/root/mordor",
"python3" : "/usr/bin/python3"
}
},
"deployments": {
"sample_beta": {
"name" : "sample",
"stage" : "beta",
"home_dir" : "/home/stonezhong/DATA_DISK/projects/mordor/sample",
"deploy_to" : [ "mordortest" ],
"use_python3" : true,
"config" : {
"foo.json": "copy"
},
"requirements": "requirements.txt",
}
}
}
or in yaml format config.yaml
:
hosts:
mordortest:
ssh_host: mordortest
env_home: /root/mordor
python3: /usr/bin/python3
deployments:
sample_beta:
name: sample
stage: beta
home_dir: /home/stonezhong/DATA_DISK/projects/mordor/sample
deploy_to:
- mordortest
use_python3: Yes
requirements: requirements.txt
config:
- foo.json: copy
hosts
section, you need to list all your hosts which you want to deploy to. The key is the host id, value is the configuration for the host, here are fields for value:
python3
: Optional, please set python3 interrupter location, if you do not specify, mordor will assume it is /usr/bin/python3
env_home
: Please set your mordor home directory.ssh_host
Optional, set your ssh hostname, if you do not specify, it will be the host id. Normally it should match what you have in your ~/.ssh/config
file, You need to make sure you can ssh to each machine without entering password, you can config your ~/.ssh/config
if neededdeployments
section, you need to list all the deployments you have, key is the deployment id, value is the configuration for the deployment, here are the fields for value:
name
is the name of the application, if missing, then the deployment id becomes the application namestage
is the name of the stage, usually it is something like beta
, prod
, etc, but it can be anything, if missing, default to empty string
deploy_to
is a list of the host idsuse_python3
: Must be true, otherwise, mordor will not deploy your application, default value is True
.requirements
: filename for requirements, which specify the python package dependency, default to requirements.txt
config
section list all the config file you need to deploy to hostWhen mordor looks for a config whose name is config_name
to deploy on a host, it looks for it in the following order:
{base_config_dir}/configs/{app_name}/{stage}/{host_name}/{config_name}
{base_config_dir}/configs/{app_name}/{stage}/{config_name}
{base_config_dir}/configs/{app_name}/{config_name}
This allows you to override config at stage level or host level.
Mordor supports 3 types of config files:
config_dir: the application config directory on the host for the application
env_home : the mordor home directory on the host
app_name : the name of the application
host_name : the host id
config_dir : the application config directory on the host for the application
log_dir : the log directory on the host for the application
data_dir : the data directory on the host for the application
env_home : the mordor home directory on the host
app_name : the name of the application
Please visit here for a working examples.
Every host need to be initialized for mordor before you can stage application to it. Here is an example on how to initialize a host:
# initialize mordor on host mordortest, using config file from samples/simple/config
mordor init-host -c samples/simple/config -o mordortest
mordor allows you to stage application to all host belongs to a stage, or you can cherry pick host with -o options. Here is an example to stage an application and setup the python virtual environment for the application on all the host for a given stage:
# stage application "sample" to "beta" stage
# On all the host machine belongs to the "beta" stage
# the application will be copied to
# configuration will be copied to
# python virtual environment will be created
mordor stage -c samples/simple/config -p sample -s beta --update-venv
--update-venv
once, unless you update the requirements.txt, or first time you stage the application.on_stage
option, check the sample heremordor allows you to run a commnad for an application, either on all host belongs to a stage or you can cherry pick host, your command is handled by dispatch.py in your application root directory.
# run command
# application is "sample", stage is "beta", command line is "foo xyz abc"
mordor run -c samples/simple/config -p sample -s beta --cmd "foo xyz abc"
You can look at the Samples
dispatch.py
. When you run mordor run ...
, dispatch.py
owns the execution of the command. For details, see dispatch.py as example.mordor \
<action> \
-c <mordor_config_base> \
-o <host_id> \
-p <app_name> \
-s <stage> \
[--update-venv] \
[--config-only] \
--cmd="<your command here>"
# action, could be `init-host`, `stage` or `run`
# -c, optional, you can specify the mordir configration directory location
# -o, specify the the host id.
# for init-host, you must specify this
# for stage or run, if missing, then the scope is all the host for the stage
# -p, the application name
# -s, the stage name, if missing, the stage name is empty string
# --cmd, the command you want to run when your action is "run"
# --update-venv, optional, when specified, mordor will update python virtual environment for the app
# --config-only, optional, when specified, mordor only update the application config.
After modor is initialized on target, target will have a environment variable ENV_HOME
, set to the env_home
setting from your host setting of your mordor config file.
$ENV_HOME
|
+-- 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
| |
| +-- config1 depends on your deployment's `config` settings
| |
| +-- config2
|
+-- logs Home directory for logs for all applications
| |
| +-- <application name> Logs for an application
|
+-- pids Directory for pid for each application
| |
| +-- <application name> pid directory for the application
| |
| +-- main.pid An application may have many pid files.
|
+-- venvs Home for virtual envs for all application
| |
| +-- <application name>_<version> Virtual env for a given application with given version
| |
| +-- <application_name> A symlink points to the current version
|
+-- data
| |
| +-- <application name>
|
+-- temp Temporary directory
Note, stage
action does not touch the data directory, it only update code and config. So data is kept the same after your stage
action.
FAQs
Python Deployment Tool
We found that mordor2 demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
NVD now marks all pre-2018 CVEs as "Deferred," signaling it will no longer enrich older vulnerabilities, further eroding trust in its data.
Research
Security News
Lazarus-linked threat actors expand their npm malware campaign with new RAT loaders, hex obfuscation, and over 5,600 downloads across 11 packages.
Security News
Safari 18.4 adds support for Iterator Helpers and two other TC39 JavaScript features, bringing full cross-browser coverage to key parts of the ECMAScript spec.