Python CLI to manage stacks from DNX.
Project description
one-cli
CLI to manage all stacks from DNX.
Quick start
- Download the latest release with the command.
curl -sSL https://raw.githubusercontent.com/DNXLabs/one-cli/master/get_one.sh | bash
- Test to ensure the version you installed is up-to-date.
one --version
- Install shell completion (Optional)
curl -sSL https://raw.githubusercontent.com/DNXLabs/one-cli/master/shell_completion.py | python3
Install specific version
export ONE_VERSION=<version>
# Linux
sudo curl -L https://github.com/DNXLabs/one-cli/releases/download/$ONE_VERSION/one_linux_amd64 -o /usr/local/bin/one
# Macos
sudo curl -L https://github.com/DNXLabs/one-cli/releases/download/$ONE_VERSION/one_macos_amd64 -o /usr/local/bin/one
sudo chmod +x /usr/local/bin/one
Install with PyPi
pip3 install one-cli
# or setting a version
pip3 install one-cli==<version>
CI/CD pipelines with Docker
To use the CLI within any CI/CD pipeline we encourage to use our docker image:
WARNING: This docker image should only be used inside CI/CD pipelines and it can generate error if used as an alias.
Usage
Usage: one [OPTIONS] COMMAND [ARGS]...
CLI to manage all stacks from DNX.
Options:
--version Show the version and exit.
--help Show this message and exit.
Commands:
app Group of app commands wrapped inside docker.
auth Group of auth commands.
aws AWS CLI alias.
aws-v2 AWS v2 CLI alias.
init Create config file for CLI in current directory.
terraform Group of terraform commands wrapped inside docker.
workspace Manage workspaces.
Configuration Example
one.yaml
images:
terraform: dnxsolutions/terraform:0.13.0-dnx1
gsuite: dnxsolutions/aws-google-auth:latest
azure: dnxsolutions/docker-aws-azure-ad:latest
aws: dnxsolutions/aws:1.18.44-dnx2
aws_2: dnxsolutions/aws:2.0.37-dnx1
ecs_deploy: dnxsolutions/ecs-deploy:1.2.0
required_version: ">= 0.5.0, <= 0.7.0"
# ECS App
app:
name: copacabana
port: 80
docker:
file: Dockerfile
image_name: copacabana
registry_type: ecr
registry_options:
ecr_aws_account_id: <redact>
ecr_aws_region: ap-southeast-2
ecr_aws_assume_role: true
ecr_aws_role: <redact>
ecs_task_definition_file: task-definition.tpl.json
# Static App
app:
type: static
src: ./build
s3_bucket_name: <redact>
distribution_id: <redact>
workspaces:
# ECS App example:
mgmt_ecs_app:
type: ecs
aws:
account_id: <redact>
role: <redact>
assume_role: true|false (default to false)
region: ap-southeast-2
ecs_cluster_name: cluster-01
# Static App example:
mgmt_static_app:
aws:
account_id: <redact>
role: <redact>
region: ap-southeast-2
assume_role: true
# Override the template static app
app:
src: ./build
s3_bucket_name: <redact>
distribution_id: <redact>
# Terraform example
mgmt:
aws:
account_id: <redact>
role: <redact>
nonprod:
aws:
account_id: <redact>
role: <redact>
prod:
aws:
account_id: <redact>
role: <redact>
default:
aws:
account_id: <redact>
role: <redact>
assume_role: true|false (default to false)
Plugin System
To give better support for customization inside the CLI we created a plugin system
that you can extend code, creating new commands and groups and even modify the existing ones.
All plugins need to be created inside ~/.one/plugins/*
Folder Structure
└── plugins
├── __init__.py (empty file)
└── my_plugin.py
Plugin Example
~/.one/plugins/my_plugin.py
import click
from one.one import cli
def __init__():
cli.add_command(my_plugin)
@click.command(name='my_plugin', help='My plugin command')
def my_plugin():
click.echo('It works!')
Running
$ one my_plugin
It works!
Manualy generate binary
pip install pyinstaller
pyinstaller --clean --hidden-import one.__main__ cli.py --onefile --noconsole -n one
Development
Dependencies
- Python 3
Python Virtual Environment
# Create environment
python3 -m venv env
# To activate the environment
source env/bin/activate
# When you finish you can exit typing
deactivate
Install dependencies
pip3 install --editable .
Author
Managed by DNX Solutions.
License
Apache 2 Licensed. See LICENSE for full details.
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 one-cli-0.6.5.tar.gz
.
File metadata
- Download URL: one-cli-0.6.5.tar.gz
- Upload date:
- Size: 20.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18262330e3c0b50221c6cc5556f74e1444eafbf1bf5545203b6e0f9c46d04fa5 |
|
MD5 | eb156ec8ab6f17f1475be14a92853f36 |
|
BLAKE2b-256 | 066d570b299309ba66b6447b86b0d5aeceaec8e569928d1d4d9a2840b16bf8b0 |
File details
Details for the file one_cli-0.6.5-py3-none-any.whl
.
File metadata
- Download URL: one_cli-0.6.5-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.1 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.9.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2fd7477d3f9bf8ce2bf5ca3b8d5acf55d62e60ca0241ae67d9ca825c9db3c2d |
|
MD5 | 702b08c4459ea41b21290d57a0468b5d |
|
BLAKE2b-256 | 6e3d9bb44372a427a6606695dcd888d2cd420ba4c1db4db5c83804ed03c73b88 |