Aller au contenu

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