Blueprint Guide
Complete guide to creating and managing infrastructure blueprints.
What is a Blueprint?
A Blueprint is a declarative YAML file that describes your infrastructure. It specifies WHAT you want, not HOW to create it.
Blueprint Structure
yaml
version: "1.0" # Blueprint version
name: my-infrastructure # Unique name
description: "Optional description"
resources: # List of resources
- type: compute # Resource type
name: web-server # Resource name
provider: proxmox # Infrastructure provider
specs: # Provider-specific specs
cpu: 4
memory: 8GB
storage: 100GB
dependencies: [] # Resource dependencies
metadata: {} # Additional metadata
metadata: # Blueprint-level metadata
environment: production
owner: platform-teamResource Types
Compute
Virtual machines, containers, bare metal servers.
yaml
- type: compute
name: app-server
provider: proxmox
specs:
cpu: 4
memory: 8GB
storage: 50GB
os: ubuntu-22.04Network
Load balancers, VPNs, firewalls, networks.
yaml
- type: network
name: load-balancer
provider: fake
specs:
type: http
algorithm: round-robin
backends: [web-1, web-2]Storage
Volumes, object storage, backups.
yaml
- type: storage
name: data-volume
provider: proxmox
specs:
size: 500GB
type: ssd
encryption: trueService
Databases, message queues, caches.
yaml
- type: service
name: postgres
provider: docker
specs:
image: postgres:15
environment:
POSTGRES_DB: myappDependencies
Resources can depend on other resources:
yaml
resources:
- type: compute
name: database
# No dependencies
- type: compute
name: app-server
dependencies:
- database # Waits for database
- type: network
name: load-balancer
dependencies:
- app-server # Waits for app serverExamples
See examples/blueprints/ for complete examples:
simple-web-app.yaml- Basic web applicationmicroservices-cluster.yaml- Complex microservices
Validation
Blueprints are validated before deployment:
- Schema validation (Pydantic)
- Dependency graph validation
- Provider compatibility checks
Best Practices
- Use descriptive names:
web-server-prod-01notserver1 - Document with metadata: Add environment, owner, purpose
- Version control: Store blueprints in git
- Test with dry-run: Use
--dry-runflag - Start small: Build incrementally
Next: Deployment Guide