0.1.2 • Published 4 years ago

@flexdapps/gantree-cli v0.1.2

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
4 years ago

Gantree CLI

About

Substrate is built on the core belief that the future will be multichain.

In the past, setting up and managing blockchain networks required an understanding of a multitude of concepts which may have inhibited end users from experimenting with them.

With the assistance of funding from the Web3 Foundation, Flex Dapps is building a suite of technologies which will enable both power users and those less versed to create and manage substrate-powered parachain networks via rapid spin-up and tear-down of self-managed or cloud-hosted machines.

Software Requirements

In order to use gantree-cli, the following dependencies are required:

REQUIREMENTVERSIONNOTES
NodeJS>=10.15.2Recommended install method: nvm
Terraform>=0.12.20Snap package will be likely too old
Ansible>=2.9.4Recommended install method: pip

Ansible Requirements

Install required ansible roles

curl https://raw.githubusercontent.com/flex-dapps/gantree-requirements/master/ansible-galaxy/requirements.yml > ansible_requirements.yml
ansible-galaxy install -r ansible_requirements.yml

Package Installation

Install gantree-cli

npm install gantree-cli -g

Environment Requirements

Provider Credentials

For security reasons, credentials for infrastructure providers must be exported as environment variables.

PROVIDEREXPORTS REQUIREDNOTES
AWSAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYIAM account with EC2 and VPC write access.
GCPGOOGLE_APPLICATION_CREDENTIALSpath to json file with credentials of the service account you want to use; this service account needs to have write access to compute and network resources
DigitalOceanDIGITALOCEAN_TOKENA DigitalOcean access token with read + write access

note: You only need credentials for providers you wish to use

SSH Credentials

You need an additional environment variables to allow ansible to connect to created instances:

EXPORT NAMEDESCRIPTION
SSH_ID_RSA_VALIDATORpath to private SSH key you want to use for the validators

You must generate this keypair yourself and add it to your ssh-agent.

note: Don't forget to add the private key to you ssh-agent otherwise you will get Permission denied (publickey) during ansible tasks

Configuration

Gantree-cli requires a configuration file (main.json) in order to guide creation, provisioning, modification and deletion of instances.

Using one of the examples below, create a configuration file to represent your desired infrastructure.

Configuration File Samples

Examples of provider definitions

note: Multiple providers cannot yet be used in a single configuration. This is planned for a future release.

Configuration File Structure: Top Level

  • "project": string the gantree project name
  • "repository": object relating to the substrate binary to be deployed
  • "validators": object defining the validators to deploy

Configuration File Strucutre: repository

  • "url": string the path to a git repository of the binary source to deploy
  • "version": string:HEAD the commit/tag of the binary source to use
  • "binaryName": string the name of the binary when compiled, eg. 'polkadot' or 'node-template'

Configuration File Structure: validators

  • "chain": string the name of the chain
  • "useDefaultChainspec": bool:false use the internal rust chainspec of the compiled binary
  • "telemetry": boolean whether to use the default telemetry, or not report any telemetry
  • "loggingFilter": string the logging filter passed to the binary on running
  • "nodes": array a list of cloud provider configurations which each map to a network instance

Configuration File Structure: node

See samples/config folder

Optional Configuration

Environment Options

Terraform Statefile Path (optional)

By default the terraform state is stored in <HOME-DIR>/gantree-cli/build/terraform/state/

On the machine executing gantree-cli, HOME-DIR will resolve to the following:

OSHOME-DIR
Linux/home/<myusername>/
Macintosh/Users/<myusername>/Library/Application Support/

This location can be customized with the following environment variable:

EXPORT NAMEDESCRIPTION
TERRAFORM_STATEFILE_PATHpath to terraform statefile

note: This path must be absolute. If the statefile does not exist at this location it will be created.

Usage

Synchronisation

Before attempting to run sync, ensure all tasks outlined in requirements have been completed.

  • You've installed all requirements
  • All relevant environment variables are exported
  • You've nagivated to the root of the cloned repo

To synchronise your configuration with digital infrastructure, run the following:

gantree-cli sync --config <PATH_TO_GANTREE_CONFIG>

The sync command is idempotent, unless there are errors it will always have the same results. You can execute it as much as you want, it will only make changes when the actual infrastructure state doesn't match the desired state.

Cleaning up

You can remove all the created infrastructure with:

gantree-cli sync clean -c config/main.json