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: cli.py [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 Authentication using SSO provider or AWS IAM user.
idp Manage the IDP configuration in your local.
init Create config file for CLI in current directory.
terraform Group of terraform commands wrapped inside docker.
update Update CLI moving to latest stable version.
workspace Manage workspaces.
Configuration Example
one.yaml
images:
terraform: dnxsolutions/terraform:0.12.24-dnx1
gsuite: dnxsolutions/aws-google-auth:latest
azure: dnxsolutions/docker-aws-azure-ad:latest
aws: dnxsolutions/aws:1.18.44-dnx2
ecs-deploy: dnxsolutions/ecs-deploy:1.2.0
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
workspaces:
mgmt-app:
type: ecs
aws-account-id: <redact>
aws-role: <redact>
aws-assume-role: true|false
aws-region: ap-southeast-2
ecs-cluster-name: cluster-01
mgmt:
aws-account-id:
aws-role:
nonprod:
aws-account-id:
aws-role:
prod:
aws-account-id:
aws-role:
default:
aws-account-id:
aws-role:
aws-assume-role: true|false
Setup
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 .
Manualy generate binary
pyinstaller --clean --hidden-import one.__main__ cli.py --onefile --noconsole -n one
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!
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.5.1.tar.gz
.
File metadata
- Download URL: one-cli-0.5.1.tar.gz
- Upload date:
- Size: 16.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3e372fa7b74b0551feff0bc0fdd0d7d1f7965931feac295d554dd3b4bb05579 |
|
MD5 | e7d1658156ace3908e5470371262153e |
|
BLAKE2b-256 | e6955be67ca69f75a744a01cb6be55688cf5dc554c0fa8f360c2152dafc18ba0 |
File details
Details for the file one_cli-0.5.1-py3-none-any.whl
.
File metadata
- Download URL: one_cli-0.5.1-py3-none-any.whl
- Upload date:
- Size: 27.5 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/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50544bfb9648479a265dc8ac44f1aeabac758cfeb44b632dfd1c3b5751613473 |
|
MD5 | bd98f1b7877fa8a475f9024319e4c8a0 |
|
BLAKE2b-256 | 5a34b1432e890498b358eaaaeaed2e864f02fcfd37ea2f1dd6556235bc514d76 |