- 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!