Skip to content

Configuration

A windsor.yaml file should exist at the base of your project, and will be created for you on running windsor init.

The majority of options available in the Windsor config relate to the local cloud setup. Additionally, each context configured in windsor.yaml allows for configuring details about cloud service providers or Kubernetes cluster drivers.

The configuration details are outlined as follows.

version: v1alpha1
contexts: #...
Field Type Description
version string Specifies the configuration version.
contexts map[string]Context A map of Context configurations.

Context

The context sections configure details related to each context. These configurations include cloud service providers, Kubernetes cluster drivers, and a variety of configurations involving the local cloud virtualization. Further details about these sub-configurations follow.

AWS

Configuration details specific to the AWS cloud provider. Additionally, configures a Localstack service to simulate AWS resources locally.

aws:
  enabled: true
  aws_endpoint_url: http://aws.test:4566
  aws_profile: local
  localstack: #...
Field Type Description
enabled bool Indicates whether AWS integration is enabled.
aws_endpoint_url string Specifies the custom endpoint URL for AWS services.
aws_profile string Defines the AWS CLI profile to use for authentication.
s3_hostname string Sets the custom hostname for the S3 service.
mwaa_endpoint string Specifies the endpoint for Managed Workflows for Apache Airflow.
localstack LocalstackConfig Contains the configuration for Localstack, a local AWS cloud emulator.

Localstack

Configures details specific to the Localstack service container. This service is available at aws.test:4566.

aws:
  localstack:
    enabled: true
    services:
      - iam
      - kms
      - s3
      - dynamodb
Field Type Description
enabled bool Indicates whether Localstack is enabled to emulate AWS services.
services []string Lists the AWS services to be emulated by Localstack. For more details, see Localstack AWS Feature Coverage.

Cluster

Configures details specific to the local Kubernetes cluster. These nodes are available at worker-{1..n}.test and controlplane-{1..n}.test.

cluster:
  enabled: true
  driver: talos
  controlplanes:
    count: 1
    cpu: 2
    memory: 2
  workers:
    count: 1
    cpu: 4
    memory: 4
    hostports:
      - 80:30080/tcp
      - 443:30443/tcp
      - 9292:30292/tcp
      - 8053:30053/udp
    volumes:
      - ${WINDSOR_PROJECT_ROOT}/.volumes:/var/local
Field Type Description
enabled bool Specifies whether the cluster is active.
driver string Specifies the cluster driver. Currently, only 'talos' is supported.
controlplanes struct Configuration for control plane nodes.
controlplanes.count int Number of control plane nodes.
controlplanes.cpu int CPU resources per control plane node.
controlplanes.memory int Memory resources per control plane node.
controlplanes.hostports []string Nodeports to forward to the host machine.
controlplanes.volumes []string Volume maps for mounting node volumes onto the host.
workers struct Configuration for worker nodes.
workers.count int Number of worker nodes.
workers.cpu int CPU resources per worker node.
workers.memory int Memory resources per worker node.
workers.hostports []string Nodeports to forward to the host machine.
workers.volumes []string Volume maps for mounting node volumes onto the host.

Network

Configures details related to local networking. This includes both the CIDR block range used by the network, as well as the range of IPs to be used when acquiring load balancer IP addresses.

network:
  cidr_block: 10.5.0.0/16
  loadbalancer_ips:
    start: 10.5.1.1
    end: 10.5.1.10

DNS

Configures details related to the local DNS service. The service is available at dns.test:53. Presently, the local DNS server runs CoreDNS.

dns:
  enabled: true
  domain: test
  records:
    - 127.0.0.1 flux-webhook.test
Field Type Description
enabled bool Specifies if the DNS service is active.
domain string Defines the domain name used by the DNS service.
address string Custom address for the DNS service, overriding the default.
records []string Additional DNS records to include in the Corefile.

Docker

Configures details related to using Docker locally.

docker:
  enabled: true
  registries: #...
Field Type Description
enabled bool Indicates whether the Docker service is enabled.
registries map[string]RegistryConfig Configuration for Docker registries, mapping registry names to their config.

RegistryConfig

Configures details related to local Docker registries and registry mirrors.

docker:
  registries:
    # Mirrors ghcr.io locally as ghcr.io
    ghcr.io:
      remote: https://ghcr.io

    # Mirrors registry-1.docker.io as docker.io locally
    registry-1.docker.io:
      remote: https://registry-1.docker.io
      local: https://docker.io

    # A generic local registry used while developing
    registry.test: {}
Field Type Description
remote string URL of the remote registry to mirror.
local string Local URL where the registry is mirrored.
hostname string Hostname used for accessing the registry.

Git

Livereload

Configures details related to the local git livereload server

git:
  livereload:
    enabled: true
    rsync_exclude: .windsor,.terraform,data,.volumes,.venv
    rsync_protect: flux-system
    username: local
    password: local
    webhook_url: http://flux-webhook.local.test
    verify_ssl: false
    image: ghcr.io/windsorcli/git-livereload-server:v0.2.1
Field Type Description
enabled bool Indicates whether the livereload feature is enabled.
rsync_exclude string Comma-separated list of patterns to exclude from rsync.
rsync_protect string Specifies files or directories to protect during rsync.
username string Username for authentication with the livereload server.
password string Password for authentication with the livereload server.
webhook_url string URL for the webhook to trigger livereload actions.
verify_ssl bool Determines if SSL verification is required for connections.
image string Docker image used for the livereload server.

Terraform

Configures details related to working with Terraform in the context

terraform:
  enabled: true
  backend: s3
Field Type Description
enabled bool Indicates whether the Terraform feature is enabled.
backend string Specifies the backend type used for Terraform state management.

VM

Configures details related to configuring the local cloud virtualization.

vm:
  driver: colima
  cpu: 8
  disk: 60
  memory: 8
Field Type Description
driver string Specifies the virtualization driver to use. Options include "colima", "docker-desktop", or "docker".
cpu int Number of CPU cores allocated to the VM. Defaults to half of the system's CPU cores.
disk int Disk space allocated to the VM in GB. Defaults to half of the system's memory.
memory int Memory allocated to the VM in GB. Defaults to 60GB.

Example: Local Context

This is the default local windsor.yaml file created when running windsor init local:

version: v1alpha1
contexts:
  local:
    docker:
      enabled: true
      registries:
        gcr.io:
          remote: https://gcr.io
        ghcr.io:
          remote: https://ghcr.io
        quay.io:
          remote: https://quay.io
        registry-1.docker.io:
          remote: https://registry-1.docker.io
          local: https://docker.io
        registry.k8s.io:
          remote: https://registry.k8s.io
        registry.test: {}
    git:
      livereload:
        enabled: true
        rsync_exclude: .windsor,.terraform,data,.volumes,.venv
        rsync_protect: flux-system
        username: local
        password: local
        webhook_url: http://worker-1.test:30292/hook/5dc88e45e809fb0872b749c0969067e2c1fd142e17aed07573fad20553cc0c59
        verify_ssl: false
        image: ghcr.io/windsorcli/git-livereload:v0.1.1
    terraform:
      enabled: true
      backend: local
    vm:
      driver: docker-desktop
    cluster:
      enabled: true
      driver: talos
      controlplanes:
        count: 1
        cpu: 2
        memory: 2
      workers:
        count: 1
        cpu: 4
        memory: 4
        hostports:
        - 80:30080/tcp
        - 443:30443/tcp
        - 9292:30292/tcp
        - 8053:30053/udp
        volumes:
        - ${WINDSOR_PROJECT_ROOT}/.volumes:/var/local
    network:
      cidr_block: 10.5.0.0/16
    dns:
      enabled: true
      domain: test
      forward:
      - 10.5.0.1:8053