This repository contains Ansible roles and playbooks for deploying and managing Ephemery nodes.
ephemery-ansible/
├── ansible/ # Ansible configuration and roles
│ ├── roles/ # Role-based configuration
│ │ ├── common/ # Base configuration for all nodes
│ │ ├── execution_client/ # Execution client configuration
│ │ ├── consensus_client/ # Consensus client configuration
│ │ └── validator/ # Validator client configuration
│ ├── handlers/ # Shared handlers
│ └── templates/ # Shared templates
├── playbooks/ # Main playbooks
│ ├── deploy_ephemery.yaml # Main deployment playbook
│ ├── fix_ephemery_node.yaml # Node fixing playbook
│ ├── setup_monitoring.yml # Monitoring setup playbook
│ ├── status_check.yml # Status check playbook
│ ├── backup_ephemery.yml # Backup playbook
│ ├── update_ephemery.yml # Update playbook
│ └── setup_validator.yml # Validator setup playbook
├── scripts/ # Helper scripts
│ ├── identify_legacy_files.sh # File pruning helper
│ └── utilities/ # Utility scripts
├── config/ # Configuration files
│ └── vars/ # Variable files
├── docs/ # Documentation
│ ├── CLIENT_MIGRATION_GUIDE.md # Guide for migrating to the new structure
│ ├── roles/ # Role documentation
│ ├── playbooks/ # Playbook documentation
│ └── troubleshooting/ # Common issues and solutions
└── templates/ # Global templates- Ansible 2.9+
- Python 3.6+
- SSH access to target nodes
- Target nodes with Ubuntu 20.04+ or similar
-
Clone the repository:
git clone https://github.com/your-org/ephemery-ansible.git cd ephemery-ansible -
Create an inventory file:
cp ansible/example-inventory.yaml ansible/inventory.yaml # Edit the inventory file to include your nodes -
Run the deployment playbook:
ansible-playbook playbooks/deploy_ephemery.yaml -i ansible/inventory.yaml
To specify client combinations:
ansible-playbook playbooks/deploy_ephemery.yaml -i ansible/inventory.yaml \
-e "el_client=geth cl_client=lighthouse \
el_data_dir=/data/ethereum/execution cl_data_dir=/data/ethereum/consensus"| Execution Client | Consensus Client | Status |
|---|---|---|
| Geth | Lighthouse | ✅ |
| Geth | Prysm | 🔜 |
| Geth | Teku | 🔜 |
| Geth | Nimbus | 🔜 |
| Geth | Lodestar | 🔜 |
| Nethermind | Lighthouse | 🔜 |
| Nethermind | Prysm | 🔜 |
| Nethermind | Teku | 🔜 |
| Nethermind | Nimbus | 🔜 |
| Nethermind | Lodestar | 🔜 |
| Besu | Lighthouse | 🔜 |
| Besu | Prysm | 🔜 |
| Besu | Teku | 🔜 |
| Besu | Nimbus | 🔜 |
| Besu | Lodestar | 🔜 |
| Erigon | Lighthouse | 🔜 |
| Erigon | Prysm | 🔜 |
| Erigon | Teku | 🔜 |
| Erigon | Nimbus | 🔜 |
| Erigon | Lodestar | 🔜 |
- Role-Based Architecture: Modular, reusable configurations
- Standardized JWT Management: Consistent and secure JWT handling
- Consolidated Playbooks: Uniform deployment and maintenance
- Client Flexibility: Support for all major Ethereum client combinations
- Monitoring Integration: Built-in monitoring setup with Prometheus and Grafana
- Backup & Update Utilities: Streamlined maintenance operations
- Validator Support: Integrated validator management
- deploy_ephemery.yaml: Deploy a complete Ethereum node
- fix_ephemery_node.yaml: Fix common issues with nodes
- setup_monitoring.yml: Set up Prometheus, Grafana, and Node Exporter
- status_check.yml: Check the status of Ethereum nodes
- backup_ephemery.yml: Back up node data and configurations
- update_ephemery.yml: Update node software and configurations
- setup_validator.yml: Set up a validator node
If you're migrating from the legacy configuration structure to the new role-based approach, please see our Client Migration Guide.
For common issues and solutions, run the status check playbook:
ansible-playbook playbooks/status_check.yml -i ansible/inventory.yamlContributions are welcome! Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
For security issues, please see SECURITY.md.
The following inconsistencies were recently fixed:
-
Standardized YAML file extensions:
- All YAML files outside the molecule/ directory now use
.yamlextension - All YAML files inside the molecule/ directory use
.ymlextension - This standardization makes the codebase more consistent and easier to maintain
- All YAML files outside the molecule/ directory now use
-
Eliminated duplicate scripts:
- Removed duplicates between
scripts/utils/andscripts/utilities/ - Created symlinks in
scripts/utils/pointing to the actual scripts inscripts/utilities/for backward compatibility - Added clear documentation in
scripts/utils/README.mdexplaining the reorganization
- Removed duplicates between
-
Reorganized utility directories:
- Following the plan in
scripts/REORGANIZATION.md - Maintained only essential low-level scripts in
scripts/utils/ - Moved most utility scripts to their appropriate functional directories
- Following the plan in
-
Consolidated configuration directories:
- Moved development tool configurations from
.config/to.dev/ - Maintained
config/as the main application configuration directory - This change better reflects the purpose of each directory and follows common conventions
- Moved development tool configurations from