How hitachienergy/epiphany works
Epiphany is a manifest-driven platform automation CLI for provisioning and operating Kubernetes clusters and supporting services on AWS, Azure, or on-premises. The principal workflow is to initialize a cluster manifest, apply it to generate infrastructure and configuration, and then optionally back up, recover, upgrade, or delete the deployment. The graph includes manifest validation and provider infrastructure generation as internal layers, plus the separately implemented requirements downloader. Source excerpts and the README support the shown links; unsampled implementations are represented only at paths present in the tree.
Main entry points: Apply.py Apply cluster · epicli.py Epicli entry · provider_class_loader.py Provider loader · run.py Requirements runner
Components 22
CLI workflows
- Epicli entry
cli/epicli.py - Initialize
cli/src/commands/Init.py - Apply cluster
cli/src/commands/Apply.py - Other lifecycle commands
cli/src/commands
Manifest and configuration
- Manifest handler
cli/src/schema/ManifestHandler.py - Schema validation
cli/src/schema/SchemaValidator.py - Default merging
cli/src/schema/DefaultMerger.py - Data and templates
cli/src/helpers/data_loader.py
Infrastructure providers
- Provider loader
cli/src/providers/provider_class_loader.py - AWS builder
cli/src/providers/aws/InfrastructureBuilder.py - Azure builder
cli/src/providers/azure/InfrastructureBuilder.py - Generic builder
cli/src/providers/any/InfrastructureBuilder.py - Terraform execution
cli/src/terraform/TerraformRunner.py
Configuration automation
- Ansible variables
cli/src/ansible/AnsibleVarsGenerator.py - Ansible execution
cli/src/ansible/AnsibleRunner.py - Build artifacts
cli/src/helpers/build_io.py
Requirements downloader
- Requirements entry
ansible/playbooks/roles/repository/files/download-requirements/download-requirements.py - Requirements runner
ansible/playbooks/roles/repository/files/download-requirements/src/run.py - Requirements manifest
ansible/playbooks/roles/repository/files/download-requirements/src/config/manifest_reader.py - OS toolchain
ansible/playbooks/roles/repository/files/download-requirements/src/command/toolchain.py - Package downloader
ansible/playbooks/roles/repository/files/download-requirements/src/downloader/downloader.py
Other components
- Operator
Connections 24
- Operator → Epicli entry: runs commands
- Epicli entry → Initialize: dispatches
cli/epicli.py - Epicli entry → Apply cluster: dispatches
cli/epicli.py - Epicli entry → Other lifecycle commands: dispatches
cli/epicli.py - Initialize → Operator: creates manifest
- Apply cluster → Manifest handler: loads and updates
cli/src/commands/Apply.py - Apply cluster → Default merging: merges defaults
cli/src/commands/Apply.py - Apply cluster → Schema validation: validates
cli/src/commands/Apply.py - Apply cluster → Provider loader: loads provider
cli/src/commands/Apply.py - Apply cluster → Terraform execution: runs Terraform
cli/src/commands/Apply.py - Apply cluster → Ansible execution: runs Ansible
cli/src/commands/Apply.py - Provider loader → AWS builder: loads implementation
- Provider loader → Azure builder: loads implementation
- Provider loader → Generic builder: loads implementation
- AWS builder → Data and templates: loads configuration
cli/src/providers/aws/InfrastructureBuilder.py - Azure builder → Data and templates: loads configuration
cli/src/providers/azure/InfrastructureBuilder.py - Manifest handler → Data and templates: reads and writes YAML
cli/src/schema/ManifestHandler.py - Ansible variables → Data and templates: loads defaults
cli/src/ansible/AnsibleVarsGenerator.py - Ansible variables → Build artifacts: writes build files
cli/src/ansible/AnsibleVarsGenerator.py - Apply cluster → Build artifacts: loads inventory
cli/src/commands/Apply.py - Requirements entry → Requirements runner: starts run
ansible/playbooks/roles/repository/files/download-requirements/download-requirements.py - Requirements runner → Requirements manifest: reads requirements
- Requirements runner → OS toolchain: uses commands
- Requirements runner → Package downloader: downloads artifacts