EOS Automation

Automating tasks not only reduces the chance of error, but it self documents the whole process. Learn how to auto install and configure nodes.

Configuration Management with Ansible

Install and Setup

With just 1 ansible playbook command, you can install the EOS application, setup an RPC API node and sync to the mainnet.

Fully Configurable

There is a default configuration supplied for the mainnet, but you can easily update it to point to any testnet or local chain.

Repeatable

Due to the nature of how the playbooks are written, it is easy to upgrade to new versions of the software or update an existing config.

Minimum System Requirements

There is a minimum requirement on RAM and disk space for the nodeos application. Running an API node that contains information for the base system contracts requires a reasonably powerful machine. It's important to note that the nodeos application is a single threaded process, so CPU clock speed is an important factor.

As the chain is constantly growing, configuration is important - certain dApp developers may only want to index their own smart contract actions, this can be achieved with the filter-on attribute in the config.ini file.

Recommended API Node Spec
RAM 16GB minimum, 32GB recommended
Disk (EOS Install) 20GB Free
Disk (Data Directory) 200GB+ Free
CPU High Clock Speed

Getting Started

The first thing you need to do is to install Ansible on your control machine (the local laptop/server that you will use to deploy to your nodes). You can find more information about that in the Anisble Docs.

Once you have Ansible installed on your control machine, check out our mainnet Ansible repo on Github.

# Install using brew @ https://brew.sh/
brew install ansible

# Check out the code from github
git clone https://github.com/BlockMatrixNetwork/eos-mainnet.git

# You're good to go!
cd eos-mainnet
# Update the inventory for your server ip (nano ftw)
nano inventory

# Update the runtime variables for your environment
nano group_vars/mainnet.yml

# One liner install for mainnet
ansible-playbook install.yml

Install, Configure and Sync

Before running for the first time, update the inventory file with your server IP and modify the group_vars to suit your own environment (do not run EOS as the root user!).

This single playbook will build EOS, configure a node for mainnet, auto download the latest blocks archive and kick off the replay process.

Install and Configure Separately

You may not want to combine all 3 stages in a single run, therefore it is possible to run each stage separately.

Each stage can be run multiple times without compromising what has been previously installed. Therefore it is easy to upgrade to new versions of EOS or to update the existing node configuration.

# Install or upgrade EOS
ansible-playbook eos.yml

# Install mainnet configuration
ansible-playbook mainnet.yml

# Only update the node config.ini
ansible-playbook mainnet.yml --tags=config
# Stop the nodeos process
ansible-playbook management.yml -e "job=stop"

# Restart the nodeos process
ansible-playbook management.yml -e "job=restart"

# Download a fresh blocks archive and hard replay
ansible-playbook management.yml -e "job=replay"

Management Commands

There is a management playbook which helps you perform frequent tasks such as restarting or stopping the nodeos process.

There is also a replay command which will automatically fetch the latest blocks archive and kick off the syncing process.