- Azure DevOps
- Terraform
Dans ce tutoriel, nous ajouterons des fichiers par défaut aux repositories que nous avons précédemment créés associés avec notre projet Azure DevOps utilisant 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.
Pour les besoins de cet article, nous n’ajouterons que deux fichiers dans un dossier “assets”, donc la structure du projet sera :
| - set_up_azure_devops
| - assets <---- Here is the folder you needs to add
| - .gitignore
| - azure-pipelines.yml
| - .env
| - .gitignore
| - env.tfvars
| - project.tf
| - provider.tf
| - repos.tf
| - variables.tf
Vous pouvez donc ajouter un .gitignore
avec des valeurs par défaut (ceci est juste pour l’exemple):
.env
.terraform
*.tfstate
**/*.lock.*
**/*.tfplan
terraform.tfplan
terraform.tfstate.backup
plan.out
Et le pipeline Azure DevOps que nous configurerons automatiquement dans le prochain tutoriel :
trigger:
- main
pool:
vmImage: ubuntu-latest
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'
Comme vous pouvez le constater, il ne s’agit que d’un “Hello World” de base. Bien sûr, si vous savez quel type de projet vous créez, n’hésitez pas à en ajouter un plus spécifique.
Ajoutons maintenant les deux fichiers, vous devez d’abord créer un nouveau fichier appelé files.tf
. Comme vous pouvez le voir ci-dessous, nous itérons sur la liste des repositories azuredevops_git_repository.this
et nous ajoutons les fichiers du dossier assets
. Si vos fichiers ne contiennent qu’une ou deux lignes, vous pouvez définir leur contenu directement dans la propriété content
.
resource "azuredevops_git_repository_file" "default_pipeline" {
count = length(azuredevops_git_repository.this)
repository_id = azuredevops_git_repository.this[count.index].id
file = "azure-pipelines.yml"
content = file("${path.module}/assets/azure-pipelines.yml")
branch = "refs/heads/develop"
commit_message = "Add azure-pipelines.yml"
overwrite_on_create = false
lifecycle {
ignore_changes = [
file,
content,
commit_message
]
}
}
resource "azuredevops_git_repository_file" "default_gitignore" {
count = length(azuredevops_git_repository.this)
repository_id = azuredevops_git_repository.this[count.index].id
file = ".gitignore"
content = file("${path.module}/assets/.gitignore")
branch = "refs/heads/develop"
commit_message = "Add .gitignore"
overwrite_on_create = false
lifecycle {
ignore_changes = [
file,
content,
commit_message
]
}
}
Vous pouvez trouver toutes les propriétés disponibles dans la documentation de 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 un commit pour chaque fichier ajouté à vos référentiels dans Azure DevOps !
Vos repositories sont maintenant correctement initialisés dans Azure DevOps à l’aide de Terraform. Vous trouverez le code source complet dans ce repository Github.
Dans le prochain tutoriel de cette série, nous nous concentrerons sur la création automatique d’un pipeline par défaut pour chaque repositories!