Skip to content

Core ConceptsΒΆ

InfraKitchen introduces several key concepts that work together to enable self-service infrastructure provisioning. This page explains each concept and how they relate to each other.


πŸ”Œ IntegrationΒΆ

An Integration stores the credentials and configuration needed to connect to external systems.

Types of IntegrationsΒΆ

  • Cloud Providers: AWS, Azure, Google Cloud, MongoDB Atlas, Datadog

  • Git Providers: GitHub, Bitbucket, Azure DevOps

  • Auth Providers: GitHub OAuth, Microsoft OAuth, Backstage integration, Service Accounts

Learn more: Integrations Documentation


πŸ“ TemplateΒΆ

A Template defines a logical unit of infrastructure. Templates are organized hierarchically and represent components like AWS Accounts, VPCs, EKS Clusters, or RDS databases.

Template Hierarchy ExampleΒΆ

Text Only
AWS Account (abstract)
β”œβ”€β”€ AWS Region (abstract)
β”‚   β”œβ”€β”€ VPC (concrete)
β”‚   β”‚   β”œβ”€β”€ EKS Cluster (concrete)
β”‚   β”‚   β”œβ”€β”€ RDS Database (concrete)
β”‚   β”‚   └── Application Load Balancer (concrete)
β”‚   └── S3 Bucket (concrete)

Learn more: Templates Documentation


πŸ“¦ Source CodeΒΆ

InfraKitchen embraces Infrastructure-as-Code (IaC). Source Code refers to a Git repository containing Terraform/OpenTofu modules.

Source Code ComponentsΒΆ

  1. Repository URL - Where the IaC code is stored
  2. Git Provider Integration - Credentials to access the repository
  3. Multiple Modules - One repository can contain multiple infrastructure modules

Example:

Text Only
Repository: github.com/myorg/terraform-modules
β”œβ”€β”€ aws-vpc/
β”œβ”€β”€ aws-eks/
└── aws-rds/

βš™οΈ ExecutorΒΆ

An Executor is a specialized component for running infrastructure modules that perform specific, non-reusable tasks.

Use CasesΒΆ

Unlike Templates that define reusable infrastructure patterns, Executors are designed for:

  • One-time operations - Database migrations, data imports, cleanup tasks
  • Specialized workflows - Custom scripts that don't fit the template model
  • Utility tasks - Infrastructure operations that aren't meant to be templated

Executor PropertiesΒΆ

YAML
ID: exec-xyz789
Name: database-migration-v2
Runtime: opentofu
Command: -var-file=environments/dev/eu-west-1.tfvars
Source Code: github.com/myorg/utility-scripts
Version: v2.1.0
Module Path: migrations/database-v2/

Integrations:
  - AWS Production Account
  - Database Credentials

State: provisioned
Status: done

Key Differences from ResourcesΒΆ

  • Not templated - Executors run specific modules directly
  • Task-oriented - Designed for single-purpose operations
  • No hierarchy - Executors don't follow parent-child relationships

Learn more: Executors Documentation


οΏ½ BlueprintΒΆ

A Blueprint is a reusable definition that combines multiple Templates into a single, executable plan. Blueprints define which infrastructure components to provision and how their outputs wire together β€” turning a multi-resource stack into a one-click operation.

What a Blueprint ContainsΒΆ

  • Templates β€” ordered list of infrastructure components to provision
  • Wiring Rules β€” output β†’ input mappings between templates
  • Default Variables β€” pre-configured values per template
  • Configuration β€” general blueprint settings
  • Labels β€” tags for organizing and filtering

How Blueprints WorkΒΆ

  1. Select templates that make up your infrastructure stack
  2. Define wiring rules to connect outputs to inputs across templates
  3. Set default variables for consistent values across executions
  4. Execute the blueprint β€” a Workflow is created with steps in topological order
  5. Each step provisions a resource, passing outputs from completed steps to downstream steps

Key FeaturesΒΆ

  • Multi-resource orchestration β€” provision entire environments in one click
  • Automatic dependency resolution β€” wiring rules define the execution graph
  • Reusable definitions β€” execute the same blueprint for dev, staging, and production
  • Variable overrides β€” customize each execution without modifying the blueprint

Learn more: Blueprints Documentation


οΏ½πŸ”„ WorkflowΒΆ

A Workflow is an automated execution plan that orchestrates the provisioning of multiple resources in dependency order. Workflows are created from Blueprints.

How Workflows WorkΒΆ

  1. A Blueprint defines templates and wiring rules (output β†’ input mappings)
  2. When executed, a Workflow is created with steps sorted in topological order
  3. Each step provisions a resource, passing outputs from completed steps to downstream steps

Workflow ExampleΒΆ

YAML
Blueprint: Production Environment
Wiring:
  - VPC.vpc_id β†’ EKS Cluster.vpc_id
  - VPC.private_subnet_ids β†’ EKS Cluster.subnet_ids
  - VPC.vpc_id β†’ RDS Database.vpc_id

Execution Order:
  Level 0: VPC (no dependencies)
  Level 1: EKS Cluster, RDS Database (parallel, both depend on VPC)

Key FeaturesΒΆ

  • Automatic dependency resolution via topological sort
  • Output wiring β€” upstream outputs feed into downstream inputs
  • Parallel execution β€” independent steps run simultaneously
  • Step-level tracking β€” monitor progress per resource

Learn more: Workflows Documentation


πŸ“¦ ResourceΒΆ

A Resource is an actual instance of infrastructure, created from a Template and Source Code Version.

Resource PropertiesΒΆ

YAML
ID: res-abc123
Name: production-vpc-us-east-1
Template: Production VPC
Parent Resource: aws-account-prod
Source Code Version: v1.2.0
State: provisioned
Status: done

Variables:
  vpc_name: 'production-vpc'
  cidr_block: '10.0.0.0/16'

Outputs:
  vpc_id: 'vpc-0123456789'
  availability_zones: ['us-east-1a', 'us-east-1b']

Learn more: Resources Documentation


πŸ’Ό WorkspaceΒΆ

A Workspace is a Git repository where InfraKitchen can automatically sync generated Terraform code.

StructureΒΆ

Text Only
workspace-repo/
β”œβ”€β”€ production-vpc/
β”‚   β”œβ”€β”€ main.tf
β”‚   β”œβ”€β”€ variables.tf
β”‚   └── outputs.tf
β”œβ”€β”€ production-eks/
β”‚   β”œβ”€β”€ main.tf
β”‚   β”œβ”€β”€ variables.tf
β”‚   └── outputs.tf

Learn more: Workspaces Documentation