{"id":26034300,"url":"https://github.com/axol-io/ansible-ephemery","last_synced_at":"2026-05-09T07:34:59.804Z","repository":{"id":280537412,"uuid":"937394434","full_name":"axol-io/ansible-ephemery","owner":"axol-io","description":"ansible role to run an ephemery test node","archived":false,"fork":false,"pushed_at":"2025-04-24T11:08:44.000Z","size":8147,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-24T12:24:16.121Z","etag":null,"topics":["ansible","ephemery","ethereum","testnet"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/axol-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-22T23:57:18.000Z","updated_at":"2025-04-24T11:08:53.000Z","dependencies_parsed_at":"2025-03-19T19:35:49.008Z","dependency_job_id":null,"html_url":"https://github.com/axol-io/ansible-ephemery","commit_stats":null,"previous_names":["axol-io/ansible-ephemery"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/axol-io/ansible-ephemery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axol-io%2Fansible-ephemery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axol-io%2Fansible-ephemery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axol-io%2Fansible-ephemery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axol-io%2Fansible-ephemery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/axol-io","download_url":"https://codeload.github.com/axol-io/ansible-ephemery/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/axol-io%2Fansible-ephemery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32811566,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ephemery","ethereum","testnet"],"created_at":"2025-03-07T02:57:05.739Z","updated_at":"2026-05-09T07:34:59.799Z","avatar_url":"https://github.com/axol-io.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ephemery Ansible Repository\n\nThis repository contains Ansible roles and playbooks for deploying and managing Ephemery nodes.\n\n## Repository Structure\n\n```bash\nephemery-ansible/\n├── ansible/                # Ansible configuration and roles\n│   ├── roles/              # Role-based configuration\n│   │   ├── common/         # Base configuration for all nodes\n│   │   ├── execution_client/ # Execution client configuration\n│   │   ├── consensus_client/ # Consensus client configuration\n│   │   └── validator/      # Validator client configuration\n│   ├── handlers/           # Shared handlers\n│   └── templates/          # Shared templates\n├── playbooks/              # Main playbooks\n│   ├── deploy_ephemery.yaml  # Main deployment playbook\n│   ├── fix_ephemery_node.yaml # Node fixing playbook\n│   ├── setup_monitoring.yml   # Monitoring setup playbook\n│   ├── status_check.yml       # Status check playbook\n│   ├── backup_ephemery.yml    # Backup playbook\n│   ├── update_ephemery.yml    # Update playbook\n│   └── setup_validator.yml    # Validator setup playbook\n├── scripts/                # Helper scripts\n│   ├── identify_legacy_files.sh # File pruning helper\n│   └── utilities/          # Utility scripts\n├── config/                 # Configuration files\n│   └── vars/               # Variable files\n├── docs/                   # Documentation\n│   ├── CLIENT_MIGRATION_GUIDE.md # Guide for migrating to the new structure\n│   ├── roles/              # Role documentation\n│   ├── playbooks/          # Playbook documentation\n│   └── troubleshooting/    # Common issues and solutions\n└── templates/              # Global templates\n```\n\n## Quick Start\n\n### Prerequisites\n\n- Ansible 2.9+\n- Python 3.6+\n- SSH access to target nodes\n- Target nodes with Ubuntu 20.04+ or similar\n\n### Basic Installation\n\n1. Clone the repository:\n\n   ```bash\n   git clone https://github.com/your-org/ephemery-ansible.git\n   cd ephemery-ansible\n   ```\n\n2. Create an inventory file:\n\n   ```bash\n   cp ansible/example-inventory.yaml ansible/inventory.yaml\n   # Edit the inventory file to include your nodes\n   ```\n\n3. Run the deployment playbook:\n\n   ```bash\n   ansible-playbook playbooks/deploy_ephemery.yaml -i ansible/inventory.yaml\n   ```\n\n### Advanced Installation\n\nTo specify client combinations:\n\n```bash\nansible-playbook playbooks/deploy_ephemery.yaml -i ansible/inventory.yaml \\\n  -e \"el_client=geth cl_client=lighthouse \\\n      el_data_dir=/data/ethereum/execution cl_data_dir=/data/ethereum/consensus\"\n```\n\n## Supported Client Combinations\n\n| Execution Client | Consensus Client | Status |\n|------------------|------------------|--------|\n| Geth             | Lighthouse       | ✅     |\n| Geth             | Prysm            | 🔜     |\n| Geth             | Teku             | 🔜     |\n| Geth             | Nimbus           | 🔜     |\n| Geth             | Lodestar         | 🔜     |\n| Nethermind       | Lighthouse       | 🔜     |\n| Nethermind       | Prysm            | 🔜     |\n| Nethermind       | Teku             | 🔜     |\n| Nethermind       | Nimbus           | 🔜     |\n| Nethermind       | Lodestar         | 🔜     |\n| Besu             | Lighthouse       | 🔜     |\n| Besu             | Prysm            | 🔜     |\n| Besu             | Teku             | 🔜     |\n| Besu             | Nimbus           | 🔜     |\n| Besu             | Lodestar         | 🔜     |\n| Erigon           | Lighthouse       | 🔜     |\n| Erigon           | Prysm            | 🔜     |\n| Erigon           | Teku             | 🔜     |\n| Erigon           | Nimbus           | 🔜     |\n| Erigon           | Lodestar         | 🔜     |\n\n## Key Features\n\n- **Role-Based Architecture**: Modular, reusable configurations\n- **Standardized JWT Management**: Consistent and secure JWT handling\n- **Consolidated Playbooks**: Uniform deployment and maintenance\n- **Client Flexibility**: Support for all major Ethereum client combinations\n- **Monitoring Integration**: Built-in monitoring setup with Prometheus and Grafana\n- **Backup \u0026 Update Utilities**: Streamlined maintenance operations\n- **Validator Support**: Integrated validator management\n\n## Available Playbooks\n\n- **deploy_ephemery.yaml**: Deploy a complete Ethereum node\n- **fix_ephemery_node.yaml**: Fix common issues with nodes\n- **setup_monitoring.yml**: Set up Prometheus, Grafana, and Node Exporter\n- **status_check.yml**: Check the status of Ethereum nodes\n- **backup_ephemery.yml**: Back up node data and configurations\n- **update_ephemery.yml**: Update node software and configurations\n- **setup_validator.yml**: Set up a validator node\n\n## Client Migration\n\nIf 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).\n\n## Troubleshooting\n\nFor common issues and solutions, run the status check playbook:\n\n```bash\nansible-playbook playbooks/status_check.yml -i ansible/inventory.yaml\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.\n\n## Security\n\nFor security issues, please see [SECURITY.md](./SECURITY.md).\n\n## Recent Fixes\n\nThe following inconsistencies were recently fixed:\n\n1. **Standardized YAML file extensions**:\n   - All YAML files outside the molecule/ directory now use `.yaml` extension\n   - All YAML files inside the molecule/ directory use `.yml` extension\n   - This standardization makes the codebase more consistent and easier to maintain\n\n2. **Eliminated duplicate scripts**:\n   - Removed duplicates between `scripts/utils/` and `scripts/utilities/`\n   - Created symlinks in `scripts/utils/` pointing to the actual scripts in `scripts/utilities/` for backward compatibility\n   - Added clear documentation in `scripts/utils/README.md` explaining the reorganization\n\n3. **Reorganized utility directories**:\n   - Following the plan in `scripts/REORGANIZATION.md`\n   - Maintained only essential low-level scripts in `scripts/utils/`\n   - Moved most utility scripts to their appropriate functional directories\n\n4. **Consolidated configuration directories**:\n   - Moved development tool configurations from `.config/` to `.dev/`\n   - Maintained `config/` as the main application configuration directory\n   - This change better reflects the purpose of each directory and follows common conventions\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxol-io%2Fansible-ephemery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faxol-io%2Fansible-ephemery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faxol-io%2Fansible-ephemery/lists"}