Codi compartit (IaC)
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.
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 podran 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 ampliar informació sobre el model de permisos en Github poden recórrer al 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=branca_de el_repo”
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=branca_de el_repo és la branca que interessa agafar.
Aquesta manera de referenciar-ho ens permet organitzar el repo de mòduls compartits en carpetes i branques 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=master"
...
tags = merge(var.ecr_tags, { Name = "${local.ecr}-backend-000" })
}