Travailler avec Terragrunt est vraiment cool car on peut effectuer des traitements sur tout un ensemble de blocs Terraform d'un seul coup! Mais quand on a beaucoup d'éléments sur lequels on doit faire un init, plan, apply... ça peut prendre beaucoup de temps et d'espace disque.
Cache
Imaginons que vous travaillez avec 50 déclarations terragrunt dans un projet. Par défaut, terraform va télécharger les providers utilisé par chacun car, par défaut, les providers sont stockés dans le dossier où se trouve la déclaration!
Donc si vous utilisez toujours les même providers, utilisez un cache!
D'après la documentation terraform, il suffit de :
- déclarer une variable d'environnement
export TF_PLUGIN_CACHE_DIR="$HOME/.terraform.d/plugin-cache"
- ou de l'ajouter dans la déclaration du CLI
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
``
Avec ça, votre pipeline ira bien plus vite et vous libèrera de l'espace disque en retirant les téléchargements inutiles.
Parallélisme
Avec la solution précédente, votre pipeline va s'accélérer, mais peut être qu'il va avoir des soucis car il essaie de faire trop de choses en même temps et va essayer avec plusieurs exécutions de toucher à un même fichier. Générant des erreurs "text file busy" par exemple.
Dans ce cas (où si vous voulez optimisez vos configurations terragrunt), vous pouvez utiliser l'option suivante ( Terragrunt documentation):
`hcl
--terragrunt-parallelism 4
`
Ce paramètre va vous permettre de limiter le nombre d'exécution parallèles, donc va ralentir votre pipeline, mais vous évitera des soucis ou vous permettra de l'optimiser vis à vis de la machine que vous utilisez pour le faire rouler.
J'espère que ça vous aidera! 🍺
Top comments (0)