Infrastructure¶
Infrastructure and deployment assets live under infrastructure/ so the
repository root stays focused on package, build, and runtime entry files.
Directory Layout¶
infrastructure/
README.md Terraform module usage and provider notes
main.tf Polymorphic Terraform module
variables.tf Terraform inputs
outputs.tf Terraform outputs
universal_boot.sh Cloud-init and remote bootstrap script
azure/
deploy_to_azure.ps1 Azure Container Apps deployment script
deploy_to_azure.sh Azure Container Apps deployment script
scripts/
verify_flow.ps1 Local cryptographic CLI smoke flow
Root Files Kept Intentionally¶
Dockerfile: kept at the repository root so Docker and Azure Container Registry builds can use the whole repository as the build context.start.sh: kept at the repository root because the Docker image entry point invokes it directly.requirements.txt,setup.py,pytest.ini, andREADME.md: package and development entry files.
Sample Genesis Files¶
Sample genesis artifacts live in examples/genesis/:
examples/genesis/genesis.jsonexamples/genesis/genesis.signed.json
Production deployments should mount their own signed genesis block and NA private key as secrets. The production startup path fails closed when those files are missing.
Operator public keys are not private secrets, but they are security-critical
configuration. Container deployments pass them to the WSGI app with
OPERATOR_PUBLIC_KEYS_JSON, formatted as a JSON object from operator key ID to
base64 public key.
Azure Scripts¶
The Azure helper scripts live in infrastructure/azure/ and build from the
repository root automatically:
.\infrastructure\azure\deploy_to_azure.ps1
bash infrastructure/azure/deploy_to_azure.sh
Both scripts target port 8443, matching the Docker image and start.sh. The
scripts set the expected environment variable names; production environments
still need to mount the genesis and NA key files at those configured paths.