Photo par Timelab Pro

Créez vos repositories Azure DevOps avec Terraform

Générez rapidement vos référentiels

Créé par Damien Aicheh le 25/10/2022 · 5 mins

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.

Ajouter une nouvelle variable

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 = []
}

Définir les repositories

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.

Définir un fichier de variable d’environnement

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.

Executer Terraform

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 !

Touche finale

Vous avez maintenant configuré votre projet avec tous vos repositories utilisant Terraform. Vous trouverez le code source complet dans ce répertoire Github.

Et après?

Dans le tutoriel suivant de cette série, nous nous concentrerons sur l’ajout de fichiers par défaut à vos repositories!

N'hésitez pas à me suivre sur pour ne pas rater mon prochain tutoriel !