Terraform tfvars dist
Ici nous allons nous attarder sur le fichier de distribution tfvars dont le contenu est le suivant:
#######################
# YOU CAN EDIT #
#######################
control_plane = [
{
name = "control-plane-nbg"
# 10.0.1.0/24 range
private_ip = "10.0.1.10"
location = "nbg1"
model = "cax11"
image = "ubuntu-24.04"
# place is_main where you want the main control plane
is_main = true
},
{
name = "control-plane-fsn"
# 10.0.1.0/24 range
private_ip = "10.0.1.11"
location = "fsn1"
model = "cax11"
image = "ubuntu-24.04"
},
{
name = "control-plane-hel"
# 10.0.1.0/24 range
private_ip = "10.0.1.12"
location = "hel1"
model = "cax11"
image = "ubuntu-24.04"
}
]
node = [
# Pool Graine
{
name = "terre"
# 10.0.1.0/24 range
private_ip = "10.0.1.20"
location = "nbg1"
model = "cax21"
image = "ubuntu-24.04"
pool = "graine"
},
{
name = "eau"
# 10.0.1.0/24 range
private_ip = "10.0.1.30"
location = "nbg1"
model = "cax21"
image = "ubuntu-24.04"
pool = "graine"
}
]
cluster_name = "graine"
kubernetes_version = "1.34"
lb_kube_api_location = "nbg1"
lb_kube_api_model = "lb11"
lb_traefik_location = "nbg1"
lb_traefik_model = "lb11"
local_ssh_key_name = "graine_ed25519"
placement_group_name = "graine-placement-group"
private_network_name = "graine-private-network"
ssh_keys = ["graine"]
# Set the vault and item names
op_vault_kubeconfig = "graine"
op_item_kubeconfig = "iac_kubeconfig"
# From 1Password
hetzner_token = "{{op://graine/iac_hetzner_token/HETZNER_TOKEN}}"
sshd_port = "{{op://graine/iac_vps_sshd_port/VPS_SSH_PORT}}"
###################################
# !!! DO NOT EDIT, ADMIN ONLY !!! #
###################################
lb_kube_api_name = "lb-kube-api"
lb_kube_api_private_ip = "10.0.1.2"
lb_traefik_name = "lb-traefik"
lb_traefik_private_ip = "10.0.1.4"
pod_network_cidr = "10.244.0.0/16"
private_network_range = "10.0.1.0/24"
Liste control_plane
control_planeest la liste contenant les specs de nos VPS Control plan.
variable "control_plane" {
description = "List of Control Planes"
type = list(object({
name = string
private_ip = string
location = string
model = string
image = string
ipv4_id = optional(string)
pool = optional(string, "control-plane")
is_main = optional(bool, false)
is_backup = optional(bool, false)
is_amd = optional(bool, false)
workload = optional(string, "")
}))
}
name
Nom du control plan
private_ip
IPv4 privée assignée au control plan, dont le range est
10.0.1.0/24, définit par la variableprivate_network_range
location
Localisation du datacenter parmis les choix fixes suivants:
nbg1,fns1ethel1
model
Model du VPS. Exemple pour les VPS ARM:
CAX11,CAX21,CAX31etCAX41
image
Image de l’OS à utiliser parmis un large choix comme
ubuntu-24.04,debian-13etc
ipv4_id
Optionnel, uniquement si vous possédeez déjà des Primary IPv4
pool
Optionnel, uniquement si vous souhaitez associer vos control plan à un pool. la valeur par défaut est
control-plane
is_main
Semi-optionnel. Au moins un control plan doit avoir cette valeur à
true. Ce sera le control plan où l’initialisation se lancée.
is_backup
N’est utile que pour le
mergeprésent dans04-vps-common-setup.tf
is_amd
N’est utile que pour le
mergeprésent dans04-vps-common-setup.tf
workload
N’est utile que pour le
mergeprésent dans04-vps-common-setup.tf
Liste node
nodeest la liste contenant les specs de nos VPS Worker.
Identique à la liste control_plane, seul les valeurs strictes ou possibles sont expliquées.
variable "node" {
description = "List of Nodes"
type = list(object({
name = string
private_ip = string
location = string
model = string
image = string
ipv4_id = optional(string)
pool = string
is_main = optional(bool, false)
is_backup = optional(bool, false)
is_amd = optional(bool, false)
workload = optional(string, "")
}))
}
pool
Le nom du pool auquel appartient le worker.
is_main
N’est utile que pour le
mergeprésent dans04-vps-common-setup.tf
is_backup
Optionnel. Uniquement si vous déployez des worker de backup sur des datacenter différent.
is_amd
Optionnel. Uniquement si vous déployez des worker dont le vCPU est de type AMD.
workload
Optionnel. Uniquement si le worker appartient à un pool dédié à des montées en charge fréquentes par exemple.
Variables
cluster_name
Nom du cluster. Impact
kubernetes_config_contextd’Hetzner Base
kubernetes_version
Version de Kubernetes à utiliser, sous la forme
"MAJOR.MINOR". Exemple:"1.33","1.34"
lb_kube_api_location
Localisation du load balancer Kube API parmis les choix fixes suivants:
nbg1,fns1ethel1
lb_kube_api_model
Model du load balancer Kube API parmis les choix fixes suivants:
lb11,lb21etlb31
lb_traefik_location
Localisation du load balancer Traefik parmis les choix fixes suivants:
nbg1,fns1ethel1
lb_traefik_model
Model du load balancer TRaefik parmis les choix fixes suivants:
lb11,lb21etlb31
local_ssh_key_name
Nom local de la clé ssh privée. Les lignes 16 et 17 de Taskfile doit être modifiée en conséquence.
placement_group_name
Nom du groupe de placement
ssh_keys
Nom de la clé SSH saisie lors des prérequis Hetzner
op_vault_kubeconfig
Nom du coffre 1Password contenant l’objet
kubeconfig
op_item_kubeconfig
Nom de l’objet 1Password qui recevra le fichier
kubeconfiggénéré
hetzner_token
Chemin 1Password pour récupérer la valeur du token Hetzner. Exemple:
"{{op://graine/iac_hetzner_token/HETZNER_TOKEN}}"
sshd_port
Chemin 1Password pour récupérer la valeur du port SSH. Exemple:
"{{op://graine/iac_vps_sshd_port/VPS_SSH_PORT}}"
Caution
Les variables suivantes sont à éditer en connaissance et avec précaution !
lb_kube_api_name
Nom du load balancer Kube API. En minuscule et sans espaces.
lb_kube_api_private_ip
IPv4 privée du load balancer Kube API
lb_traefik_name
Nom du load balancer Traefik. En minuscule et sans espaces. Impact
lb_traefik_named’Hetzner Base
lb_traefik_private_ip
IPv4 privée du load balancer Traefik
pod_network_cidr
Range CIDR assigné au Pods
private_network_name
Nom du réseau privée. En minuscule et sans espaces. Impact
private_network_named’Hetzner Base
private_network_range
Range du réseau privée. Impact
control_plane,node,lb_kube_api_private_ipetlb_traefik_private_ip