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
one-cli-0.6.11.tar.gz
(20.6 kB
view hashes)
Built Distribution
one_cli-0.6.11-py3-none-any.whl
(32.2 kB
view hashes)