Mòduls reutilitzables
Terraform té la possibilitat d’organitzar el codi en mòduls i que després aquests mòduls puguin compartir-se entre diferents projectes d’infraestructura. L’objectiu d’aquesta iniciativa és proporcionar, a cada lot, un repositori de codi en GitHub on emmagatzemar aquests mòduls de Terraform de manera que després puguin ser consumits des de totes les aplicacions de les quals és responsable cada lot.
Donat que aquest codi no està sota cap codi de diàleg concret, és responsabilitat dels arquitectes responsables del lot coordinar les modificacions que en ell es realitzi (versionatge, …). Es recomana sempre establir tags pels mòduls i que el codi Terraform de les aplicacions referenciïn aquests tags, mai directament al HEAD d’una branca, sigui master o una altre.
Descripció del repositori per a compartir codi Terraform
S’ha creat en Github un nou repositori de codi per a cada lot AMxx d’aplicacions:
https://github.com/ctti-dev/iac-terraform-modules-am99_23
Els equips (GitHub Teams) de cada aplicació de la qual sigui responsable el lot, disposaran automàticament dels mateixos permisos sobre aquest repositori de codi compartit. Per exemple:
-
Els teams -maintain de les diferents aplicacions que és responsable el lot, disposaran de permisos podent gestionar completament el repositori excepte les accions de naturalesa destructiva.
-
Els teams -write podran col·laborar
-
Els teams -read podran revisar
D’aquesta manera, el rol que cada membre de l’equip té envers els repositoris de les diferents aplicacions serà el mateix que se li apliqui en el repositori de codi compartit. Per a més informació sobre el model de permisos en SIC+ es pot consultar el següent enllaç.
Instruccions d’ús
A l’hora de referenciar el mòdul compartit en el repositori abans indicat, s’ha d’indicar el paràmetre “source” del mòdul de la manera següent:
source = “github.com/ctti-dev/iac-terraform-modules-am99_23.git//carpeta?ref=tag”
On:
- github.com/ctti-dev/iac-terraform-modules-am99_23.git és la URL del repositori compartit per al lot.
- carpeta pot ser una carpeta dins del repositori on estigui contingut el mòdul.
- ref=tag és el tag que es vol referenciar.
Aquesta manera de referenciar-ho ens permet organitzar el repo de mòduls compartits en carpetes i tags, segons el criteri que decideixi usar cada lot.
module "prova_module" {
source = "github.com/ctti-dev/iac-terraform-modules-am22_23.git//aws-tf-mod-ecr-repository?ref=v1.0.3"
...
tags = merge(var.ecr_tags, { Name = "${local.ecr}-backend-000" })
}