- Azure DevOps
- Terraform
Dans ce tutoriel, nous allons créer les repositories associés à notre projet Azure DevOps à l’aide de Terraform !
Ce tutoriel fait partie d’une série complète de tutoriels sur la configuration d’Azure DevOps à l’aide de Terraform. Vous pouvez télécharger le projet de la partie précédente et suivre.
Dans le fichier variables.tf, nous ajouterons la possibilité de configurer une liste de dépôts. Pour donner un peu de cohérence aux noms des dépôts nous allons créer une nomenclature qui sera :
domain_type_application, où : type peut être dev ou infra.
Ainsi, par exemple, vous pouvez avoir : nature_dev_vegetables qui représente le repository de développement de l’API de légumes pour le domaine de la nature. Un autre exemple peut être : nature_dev_animals etc..
Bien sûr, trouvez la nomenclature la mieux adaptée à vos besoins. Vous pouvez également ajouter la possibilité de modifier la branche par défaut du repository.
Cela ressemblera à ceci :
variable "repositories" {
type = list(object({
application = string
type = string
domain = string
default_branch = string
}))
default = []
}
Créons un nouveau fichier appelé repos.tf et en utilisant la ressource azuredevops_git_repository vous pouvez itérer pour créer tous les repositories avec la nomenclature définie ci-dessus :
resource "azuredevops_git_repository" "this" {
count = length(var.repositories)
project_id = azuredevops_project.this.id
name = "${var.repositories[count.index].domain}_${var.repositories[count.index].type}_${var.repositories[count.index].application}"
default_branch = var.repositories[count.index].default_branch == "" ? "refs/heads/develop" : var.repositories[count.index].default_branch
initialization {
init_type = "Clean"
}
lifecycle {
ignore_changes = [
initialization,
]
}
}
Comme vous pouvez le voir, vous pouvez concaténer toutes les informations pour créer le repository name et vous pouvez utiliser des conditions ternaires pour définir si la valeur default_branch doit être définie. D’autres options de configuration sont disponibles dans la documentation.
Pour éviter de passer tous les arguments à l’intérieur de la ligne de commande, vous devez créer un fichier dédié. Ainsi, dans un nouveau fichier appelé env.tfvars, nous déclarerons le nom du projet comme nous l’avons fait dans le tutoriel précédent et nous allons créer une liste de repositories. Voici un exemple:
project_name = "Demo Project"
repositories = [
{
domain = "domain1"
type = "dev"
application = "api"
default_branch = ""
},
{
domain = "domain2"
type = "infra"
application = "func"
default_branch = ""
},
]
Au moment où j’écris cet article, les paramètres facultatifs pour Terraform sont encore expérimentaux, vous devez donc définir la default_branch pour éviter toute erreur.
Vous pouvez maintenant exécuter la nouvelle commande de planification de Terraform comme ceci :
terraform plan -var-file=env.tfvars --out=plan.out
Et puis appliquez-le plan:
terraform apply plan.out
En conséquence, vous devriez voir vos repositories créés dans votre projet dans Azure DevOps !
Vous avez maintenant configuré votre projet avec tous vos repositories utilisant Terraform. Vous trouverez le code source complet dans ce répertoire Github.
Dans le tutoriel suivant de cette série, nous nous concentrerons sur l’ajout de fichiers par défaut à vos repositories!