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

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
ende