K3s on Libvirt Quickstart
Setting up extra terraform provider
Due to an issue in the terraform provider system,
you need to download and place the libvirt provider at a very specific
location in your home directory before deploying K3s.
You can find the libvirt provider version in modules/k3s/libvirt/versions.tf .
To keep things simple this version will be referred to as
$LIBVIRT_PROVIDER_VERSION in this documentation.
Go to https://github.com/dmacvicar/terraform-provider-libvirt/releases/tag/v$LIBVIRT_PROVIDER_VERSION
and find the correct link for your OS/CPU_ARCH
(an example is linux_amd64 , referred to as $OS_CPU_ARCH in the rest of this documentation).
|
mkdir -p ~/.local/share/terraform/plugins/registry.terraform.io/dmacvicar/libvirt/$LIBVIRT_PROVIDER_VERSION/$OS_CPU_ARCH/
mv terraform-provider-libvirt ~/.local/share/terraform/plugins/registry.terraform.io/dmacvicar/libvirt/$LIBVIRT_PROVIDER_VERSION/$OS_CPU_ARCH/terraform-provider-libvirt
Prerequisites
-
Access to a functional Libvirt daemon
-
Knowledge of Terraform basics
Create the Terraform root module
module "cluster" {
source = "git::https://github.com/camptocamp/camptocamp-devops-stack.git//modules/k3s/libvirt?ref=master"
cluster_name = "my-cluster"
node_count = 2
}
Terraform Outputs
Define outputs:
# terraform/outputs.tf
output "argocd_auth_token" {
sensitive = true
value = module.cluster.argocd_auth_token
}
output "kubeconfig" {
sensitive = true
value = module.cluster.kubeconfig
}
output "repo_url" {
value = module.cluster.repo_url
}
output "target_revision" {
value = module.cluster.target_revision
}
output "app_of_apps_values" {
sensitive = true
value = module.cluster.app_of_apps_values
}