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.
- 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
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)
The following requirements are needed by this module:
The following providers are used by this module:
The following Modules are called:
Source: ./modules/image
Version:
Source: ./modules/node_group
Version:
Source: ./modules/talos
Version:
The following resources are used by this module:
- random_id.cluster_name (resource)
- talos_machine_secrets.this (resource)
- talos_client_configuration.this (data source)
No required 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: {}
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