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