Skip to content

Terraform module to spin up Talos Kubernetes clusters on Proxmox

Notifications You must be signed in to change notification settings

mattwillsher/terraform-proxmox-talos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

terraform-proxmox-talos

This module configures Talos Linux for Proxmox. It is able to set up a cluster from one node to many and has shortcut options to enable commonly requested features.

The module is currently in an alpha development phase - it lacks comprehensive testing and the module and its sub-module are subject to change.

Features

  • Create 1-n control plane nodes
  • Create 0-n worker nodes in groups of differing configuration
  • Support for per-node group and per-cluster variable configuration
  • Label nodes and taint by node group
  • Set [control plane VIP][1]
  • Use Cilium for the CNI instead of Flannel
  • Configure metrics-server for statistics

Variable scoping

There are two levels at which various variables apply - at the cluster level, which is true for all variables - and at the node group level. The node group level can be added to the controlplane and workers values and will be scoped only to that node groups. If a cluster level variables is also so, the node group level takes precidence.

Variables that can be applied via the node group level variables are marked (NG)

Requirements

The following requirements are needed by this module:

Providers

The following providers are used by this module:

Modules

The following Modules are called:

Source: ./modules/image

Version:

Source: ./modules/node_group

Version:

Source: ./modules/talos

Version:

Resources

The following resources are used by this module:

Required Inputs

No required inputs.

Optional Inputs

The following input variables are optional (have default values):

Description: Install Cilium.

Type: bool

Default: false

Description: Cilium CLI version.

Type: string

Default: "latest"

Description: Cilium version.

Type: string

Default: null

Description: Cluster endpoint. Defaults to vip if provided, or else the first control plane addresses.

Type: string

Default: null

Description: Name of the cluster.

Type: string

Default: null

Description: Talos Linux Configuration patches as a list of maps. (NG).

Type: list(any)

Default: []

Description: Control plane configuration.

Type: any

Default: {}

Description: Number of CPU core per node. (NG).

Type: number

Default: 2

Description: List of CPU flags. (NG).

Type: list(string)

Default:

[
  "+aes"
]

Description: CPU type. (NG).

Type: string

Default: "x86-64-v2-AES"

Description: Default datastore id for EFI and TPM disks and for disks where not set via the disks values(s) (NG).

Type: string

Default: "local-lvm"

Description: Disk map. See node_group submodule for specifics. Typically only changes to size are needed. (NG).

Type: list(any)

Default:

[
  {
    "size": 20
  }
]

Description: List of extensions in the image. qemu-guest-agent is included by default.

Type: list(string)

Default: []

Description: Image factory hostname.

Type: string

Default: "factory.talos.dev"

Description: Datastore in which to store the downloadeded ISO image.

Type: string

Default: "local"

Description: Target node to place the image on. Defaults to the first value of pve_node_names.

Type: string

Default: "pve"

Description: Image factory image name used for installation. If not set, use the same image version and extensions as the boot ISO.

Type: string

Default: null

Description: Proxmox identifier for the boot ISO. If not set, ISO image for the talos_version will be downloaded and used. installer_image must also be provided if this options is used.

Type: string

Default: null

Description: Memory size for nodes, in MB, where not otherwise specified. (NG).

Type: string

Default: 2048

Description: Enable metrics server.

Type: bool

Default: false

Description: Labels to apply to nodes. (NG).

Type: map(string)

Default: {}

Description: Taints to apply to all nodes. (NG).

Type: map(string)

Default: {}

Description: List of Proxmox node names to distribue the VM over. Placement is round-robin. (NG).

Type: list(string)

Default:

[
  "pve"
]

Description: Map of mirror name to a list of mirror endpoints.

Type: map(list(string))

Default: null

Description: Override the registry mirrors path generation. Overrides detection of '/v2/' in the registry mirror urls.

Type: bool

Default: null

Description: List of tags for each node. (NG).

Type: list(string)

Default: []

Description: List of hosts to use in client Talos endpoints list. If not, set, us the IP addresses of the controlplane nodes.

Type: list(string)

Default: null

Description: Talos machine secrets.

Type: any

Default: null

Description: Talos Linux version.

Type: string

Default: null

Description: Virtual IP address.

Type: string

Default: null

Description: Node groups configuration for workers.

Type: any

Default: {}

Outputs

The following outputs are exported:

Description: Cluster name.

Description: n/a

Description: Raw kubeconfig.

Description: Machine configurations by node group.

Description: n/a

Description: n/a

About

Terraform module to spin up Talos Kubernetes clusters on Proxmox

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages