Blueprint Examples
Ready-to-use blueprints for common training and testing scenarios. Copy and customize for your needs.
CI/CD Training
Complete GitLab CI/CD environment with runners and participant isolation:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: cicd-training
description: GitLab CI/CD training environment
spec:
ttl: 8h
provider: hetzner
region: eu-central
variables:
participants:
type: integer
default: 15
description: Number of participants
components:
- name: gitlab
type: gitlab
version: '16.8'
resources:
cpu: 4
memory: 8Gi
storage: 50Gi
features:
- container-registry
- name: runners
type: gitlab-runner
count: 3
executor: docker
resources:
cpu: 2
memory: 4Gi
participants:
count: ${{ variables.participants }}
isolation: namespace
resources:
cpu: 500m
memory: 1Gi
tracking:
enabled: true
events:
- git-push
- pipeline-run Deploy:
teactl env create --blueprint community/cicd-training --name my-cicd-workshop Kubernetes Workshop
Multi-node Kubernetes cluster with monitoring:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: kubernetes-workshop
description: Hands-on Kubernetes training environment
spec:
ttl: 6h
provider: hetzner
variables:
participants:
type: integer
default: 20
cluster_size:
type: string
default: medium
enum: [small, medium, large]
components:
- name: cluster
type: kubernetes
version: "1.28"
nodes:
control: 1
worker: ${{ cluster_size == "small" ? 2 : cluster_size == "medium" ? 3 : 5 }}
features:
- ingress-nginx
- metrics-server
- dashboard
- name: monitoring
type: prometheus-stack
features:
- grafana
- node-exporter
participants:
count: ${{ variables.participants }}
isolation: namespace
resources:
cpu: 1
memory: 2Gi
hooks:
postCreate: |
# Pre-create exercise deployments
kubectl apply -f https://teabar.dev/exercises/k8s-basics/ GitOps with ArgoCD
GitOps training with ArgoCD and example applications:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: gitops-argocd
description: GitOps training with ArgoCD
spec:
ttl: 8h
provider: hetzner
components:
- name: gitlab
type: gitlab
version: '16.8'
resources:
cpu: 4
memory: 8Gi
- name: cluster
type: kubernetes
version: '1.28'
nodes:
worker: 3
features:
- ingress-nginx
- argocd
- name: argocd
type: argocd
version: '2.9'
repositories:
- name: exercises
url: ${{ components.gitlab.url }}/exercises/gitops-demo.git
applications:
- name: demo-app
source:
repo: exercises
path: environments/dev
participants:
count: 15
isolation: namespace Full DevOps Stack
Complete DevOps environment with GitLab, Kubernetes, ArgoCD, and monitoring:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: full-devops-stack
description: Complete DevOps training environment
spec:
ttl: 1d
provider: hetzner
region: eu-central
variables:
participants:
type: integer
default: 25
include_monitoring:
type: boolean
default: true
components:
# Source control and CI
- name: gitlab
type: gitlab
version: '16.8'
resources:
cpu: 4
memory: 8Gi
storage: 100Gi
features:
- container-registry
- pages
- name: runners
type: gitlab-runner
count: 4
executor: docker
resources:
cpu: 2
memory: 4Gi
# Kubernetes cluster
- name: cluster
type: kubernetes
version: '1.28'
nodes:
control: 1
worker: 5
features:
- ingress-nginx
- cert-manager
- metrics-server
# GitOps
- name: argocd
type: argocd
version: '2.9'
# Monitoring (optional)
- name: monitoring
type: prometheus-stack
enabled: ${{ variables.include_monitoring }}
features:
- grafana
- alertmanager
- node-exporter
grafana:
dashboards:
- kubernetes
- gitlab
- argocd
participants:
count: ${{ variables.participants }}
isolation: namespace
resources:
cpu: 1
memory: 2Gi
storage: 5Gi
tracking:
enabled: true
events:
- git-push
- pipeline-run
- kubectl-command
- argocd-sync Database Training
PostgreSQL and Redis for database training:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: database-training
description: Database administration training
spec:
ttl: 4h
provider: hetzner
components:
- name: postgres
type: postgresql
version: '15'
resources:
cpu: 2
memory: 4Gi
storage: 20Gi
databases:
- name: training
extensions:
- pg_stat_statements
- pgcrypto
- name: redis
type: redis
version: '7'
resources:
memory: 1Gi
- name: adminer
type: container
image: adminer:latest
ports:
- 8080
participants:
count: 10
isolation: namespace QA Testing Environment
Ephemeral testing environment for QA teams:
apiVersion: teabar.dev/v1
kind: Blueprint
metadata:
name: qa-environment
description: Ephemeral QA testing environment
spec:
ttl: 2h
provider: hetzner
variables:
branch:
type: string
required: true
description: Git branch to test
pr_number:
type: integer
required: true
description: Pull request number
components:
- name: cluster
type: kubernetes
version: '1.28'
nodes:
worker: 2
- name: app
type: container
image: myregistry/myapp:${{ variables.branch }}
replicas: 2
ports:
- 8080
env:
PR_NUMBER: ${{ variables.pr_number }}
ENVIRONMENT: qa
- name: db
type: postgresql
version: '15'
databases:
- name: app_test
hooks:
postCreate: |
# Run integration tests
kubectl run tests --image=myregistry/tests:latest
--env="APP_URL=http://app:8080"
--restart=Never Tip
All these blueprints are available in the community blueprints library. Use
teactl blueprint list --community to browse them.Using Community Blueprints
List and use community blueprints directly:
# List available blueprints
teactl blueprint list --community
# Get blueprint details
teactl blueprint show community/cicd-training
# Deploy directly
teactl env create --blueprint community/cicd-training --name my-training