Full node Ansible
An Ansible playbook can be used to configure and manage a full node.
Prerequisites
- Install Ansible on your local machine with Python3.x. The setup doesn't run on Python 2.x.
- To install Ansible with Python 3.x, you can use pip. If you do not have pip on your machine,
follow the steps outlined here. Run
pip3 install ansible
to install Ansible.
- To install Ansible with Python 3.x, you can use pip. If you do not have pip on your machine,
follow the steps outlined here. Run
- Check the Shibarium PoS Ansible repository for requirements.
- You also need to ensure that Go is not installed in your environment. You will run into issues if you attempt to set up your full node through Ansible with Go installed as Ansible requires specific packages of Go.
- You will also need to make sure that your VM / Machine does not have any previous setups for Validator or Heimdall or Bor. You will need to delete them as your setup will run into issues.
Full node setup
-
Ensure you have access to the remote machine or VM on which the full node is being set up.
Refer to https://github.com/shibaone/node-ansible#setup for more details.
-
Clone the https://github.com/shibaone/node-ansible repository.
-
Navigate into the node-ansible folder:
cd node-ansible
-
Edit the
inventory.yml
file and insert your IP(s) in thesentry->hosts
section.Refer to https://github.com/shibaone/node-ansible#inventory for more details.
-
Check if the remote machine is reachable by running:
ansible sentry -m ping
-
NOTE -- Check the latest version of Heimdall and Bor for Shibarium (tags -- 1.x.x-bone) and Puppynet (tags -- 1.x.x-bone-beta-x). OR
-
Check the latest version here
-
To test if the correct machine is configured, run the following command:
# Shibarium:
ansible-playbook playbooks/network.yml --extra-var="bor_version=v1.x.x-bone heimdall_version=v1.x.x-bone network=shibarium node_type=sentry" --list-hosts
# Puppynet:
ansible-playbook playbooks/network.yml --extra-var="bor_version=v1.x.x-bone-beta-x heimdall_version=v1.x.x-bone-beta-x network=puppynet node_type=sentry" --list-hosts -
Next, set up the full node with this command:
# shibarium:
ansible-playbook playbooks/network.yml --extra-var="bor_version=v1.x.x-bone heimdall_version=v1.x.x-bone network=shibarium node_type=sentry"
# Puppynet:
ansible-playbook playbooks/network.yml --extra-var="bor_version=v1.x.x-bone-beta heimdall_version=v1.x.x-bone-beta network=puppynet node_type=sentry" -
In case you run into any issues, delete and clean the whole setup using:
ansible-playbook playbooks/clean.yml
-
Once you initiate the Ansible playbook, log in to the remote machine.
-
Please ensure that the value of seeds and bootnodes is the same value as mentioned in Heimdall and Bor
config.toml
files. If not, change the values accordingly. -
To check if Heimdall is synced
- On the remote machine/VM, run
curl localhost:26657/status
- In the output,
catching_up
value should befalse
- On the remote machine/VM, run
-
Once Heimdall is synced, run:
sudo service bor start
If you've reached this point, you have successfully set up a full node with Ansible.
If Bor presents an error of permission to data, run this command to make the Bor user the owner of the Bor files:
sudo chown bor /var/lib/bor
Logs
Logs can be managed by the journalctl
linux tool. Here is a tutorial for advanced usage: How To Use Journalctl to View and Manipulate Systemd Logs.
Check Heimdall node logs
journalctl -u heimdalld.service -f
Check Bor node logs
journalctl -u bor.service -f