Overview

slingnode.ethereum_node_mgmt is an Ansible role that facilitates common management tasks on servers running Ethereum clients. It is designed to seamlessly work with nodes deployed using slingnode.ethereum role.

The role supports the following tasks:

  • validator key import (using command line or Key Manager API)

  • Slashing protection DB import and export

The role uses ephemeral containers to carry out command line tasks. The management commands must be executed in the containers with the same configuration (image version, data directories, users, etc) as the Client containers. This is the default for the role and if you don't change any of the paths, you don't need to worry about any of that.

Command line output

Importing keys using command line as well as importing/exporting slashing protection DB tasks execute commands in short lived containers. This poses a challenge knowing what whether the command executed successfully (the container exit status is the same regardles if the command was successfull or not). Implemented logging configuration addresses this issue. Refer to Logging section.

The API based key import task executes directly on the managed host and does not use a container.

Repositories

Ansible Galaxy: https://galaxy.ansible.com/slingnode/ethereum_node_mgmt

The source code: https://github.com/SlingNode/slingnode-ansible-ethereum_node_mgmt

Example playbooks: https://github.com/SlingNode/slingnode-ethereum-examples

Supported client tasks

The role supports the same clients and Operating Systems as the slingnode.ethereum role. The table below shows supported tasks validator clients.

Task
Lighthouse
Prysm
Teku
Nimbus

Key import

CMD/API

CMD/API

CMD/API

API

Slashing DB import

CMD

CMD

CMD

CMD

Slashing DB export

CMD

CMD

CMD

CMD

Requirements

Ansible Docker module is required on the Ansible controller. It can be installed using the below command:

ansible-galaxy collection install community.docker:==3.8.0

Contact

If you have any questions join our Discord server or log a GitHub issue.

Last updated