https://github.com/axol-io/ansible-ephemery
ansible role to run an ephemery test node
https://github.com/axol-io/ansible-ephemery
ansible ephemery ethereum testnet
Last synced: about 1 month ago
JSON representation
ansible role to run an ephemery test node
- Host: GitHub
- URL: https://github.com/axol-io/ansible-ephemery
- Owner: axol-io
- Created: 2025-02-22T23:57:18.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-24T11:08:44.000Z (about 1 year ago)
- Last Synced: 2025-04-24T12:24:16.121Z (about 1 year ago)
- Topics: ansible, ephemery, ethereum, testnet
- Language: Shell
- Homepage:
- Size: 7.77 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Security: docs/SECURITY.md
Awesome Lists containing this project
README
# Ephemery Ansible Repository
This repository contains Ansible roles and playbooks for deploying and managing Ephemery nodes.
## Repository Structure
```bash
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
```
## Quick Start
### Prerequisites
- Ansible 2.9+
- Python 3.6+
- SSH access to target nodes
- Target nodes with Ubuntu 20.04+ or similar
### Basic Installation
1. Clone the repository:
```bash
git clone https://github.com/your-org/ephemery-ansible.git
cd ephemery-ansible
```
2. Create an inventory file:
```bash
cp ansible/example-inventory.yaml ansible/inventory.yaml
# Edit the inventory file to include your nodes
```
3. Run the deployment playbook:
```bash
ansible-playbook playbooks/deploy_ephemery.yaml -i ansible/inventory.yaml
```
### Advanced Installation
To specify client combinations:
```bash
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"
```
## Supported Client Combinations
| 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 | 🔜 |
## Key Features
- **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
## Available Playbooks
- **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
## Client Migration
If you're migrating from the legacy configuration structure to the new role-based approach, please see our [Client Migration Guide](./docs/CLIENT_MIGRATION_GUIDE.md).
## Troubleshooting
For common issues and solutions, run the status check playbook:
```bash
ansible-playbook playbooks/status_check.yml -i ansible/inventory.yaml
```
## Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.
## Security
For security issues, please see [SECURITY.md](./SECURITY.md).
## Recent Fixes
The following inconsistencies were recently fixed:
1. **Standardized YAML file extensions**:
- All YAML files outside the molecule/ directory now use `.yaml` extension
- All YAML files inside the molecule/ directory use `.yml` extension
- This standardization makes the codebase more consistent and easier to maintain
2. **Eliminated duplicate scripts**:
- Removed duplicates between `scripts/utils/` and `scripts/utilities/`
- Created symlinks in `scripts/utils/` pointing to the actual scripts in `scripts/utilities/` for backward compatibility
- Added clear documentation in `scripts/utils/README.md` explaining the reorganization
3. **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
4. **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