Image Opentofu#
Image de base#
Une image de base est créée pour faciliter le portage de nos différentes configurations Terraform vers OpenTofu. Cette image de base permet d'utiliser podman dans les configurations envs-ng et de réduire la complexité introduite par nix. Elle contient:
- le cli Opentofu installée (avec un lien symbolique pour que trackbone puisse utiliser opentofu).
- le répertoire TF_PLUGIN_CACHE_DIR qui va contenir les différents providers Opentofu.
- un fichier tofu.rc pour forcer Opentofu à utiliser le répertoire de cache et obtenir les versions des providers prédéfinis.
Exemple: image de base tofu
Exemple: configuration keycloak#
Pour créer une image spécifique à partir de l'image de base, il suffit juste de définir un fichier providers.tf avec les différentes versions des providers.
terraform {
required_providers {
vault = {
source = "hashicorp/vault"
version = "4.8.0"
}
keycloak = {
source = "keycloak/keycloak"
version = "5.2.0"
}
tls = {
source = "hashicorp/tls"
version = "4.1.0"
}
random = {
source = "hashicorp/random"
version = "3.7.2"
}
aws = {
source = "hashicorp/aws"
version = "5.99.0"
}
}
}
Ensuite il faudra définir un containerfile qui va contenir:
- l'image de base Opentofu (docker-registry.ocb-corp.caascad.com/internal/tofu:1.0.0)
- montage du fichier providers.tf dans le containerfile (exemple containerfile).
- un environnement variable TF_CLI_CONFIG_FILE=/tofu.rc .
Build et push des images#
Pour builder et push les images, il faut utiliser la commande suivante:
cd tofu-xxx
podman build --no-cache -t docker-registry.ocb-corp.caascad.com/internal/tofu-xxx:1.0.0 .
podman push docker-registry.ocb-corp.caascad.com/internal/tofu-xxx:1.0.0