Skip to content

cryptoandcoffee/cosmos-ansible

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,947 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ansible Cosmos Network Creator

Lint Join RS Testnet Test Gaia Fresh State Upgrade - v15

✨ An Ansible toolkit for Cosmos networks 💫

Use this toolkit to:

  • Join a testnet
  • Start a local testnet
  • Start a multi-node testnet

Waterdrops feeding seedlings

🌰 Requirements

  • Python 3
  • Ansible
    • Install Ansible with pip and not apt:
      pip install ansible
      

🌱 Quick Start

To join the Cosmos Hub public testnet:

  1. Clone this repository
  2. Run ansible-galaxy install -r requirements.yml to install dependencies
  3. Set up SSH access to the target machine
  4. Run the playbook
    ansible-playbook node.yml -i examples/inventory-public-testnet.yml -e 'target=SERVER_IP_OR_DOMAIN'
    
  5. Log into the target machine to follow the syncing process
    journalctl -fu cosmovisor
    

Watch the video below to see the playbook in action:

Join the Cosmos Hub Public Testnet

🌳 Explore Further

Playbook Tags

Use node_control.py to run only part of the node playbook:

./node_control.py [-i inventory] [-t target] operation

The inventory argument is optional and defaults to inventory.yml (e.g. ./node_control.py restart).

The target option is the server IP or domain.

The operation will apply to all the nodes in the inventory:

  • restart restarts the node binary/cosmovisor service
  • stop stops the node binary/cosmovisor service
  • start starts the node binary/cosmovisor service
  • reboot reboots the machine
  • reset runs node_binary unsafe-reset-all

Role Folder Structure

  • The node role provides the core functionality of this toolkit
  • Node setup: roles/node/tasks/main.yml
  • Default variables: roles/node/defaults/main.yml
  • Systemd services: roles/node/templates/
  • To add a variable to the node config files, add it to:
    • roles/node/templates/ansible_vars.json.j2

🌴 Automatic Tests

This repository runs different tests automatically as defined below.

Fresh State (weekly)

The fresh state test is run using GitHub Actions and results are displayed with a badge at the top of this readme.

Mainnet exported genesis (bi-weekly)

We export a genesis file from cosmoshub-4 and modify it using our tinkerer script. The exported and modified genesis files can be accessed here.

We run the stateful tests with the modified genesis file when there is a major version of Gaia that is higher than the major version running on cosmoshub-4.

Joining the Public Testnet (weekly)

We test joining the Cosmos Hub public testnet weekly using GitHub Actions and a badge is displayed at the top of this readme.

🔎 Code Standards

  • All Python code is formatted to PEP 8 and linted with pylint.
  • All YAML code is linted with yamllint.
  • See lint.sh and .config/ for details.

About

Ansible scripts for spinning up Cosmos network configurations

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 89.3%
  • Python 5.9%
  • Jinja 4.8%