Automatisation du déploiement de ressources Azure avec Terraform via ServiceNow : Guide complet

Colas Mérand

08/06/2025

Azure

Terraform

ServiceNow

5 minutes

Automatisation du déploiement de ressources Azure avec Terraform via ServiceNow : Guide complet

Dans un monde où l'agilité technologique est devenue un avantage concurrentiel majeur, l'automatisation des processus d'infrastructure IT représente un enjeu stratégique pour les entreprises. L'intégration de ServiceNow, Azure DevOps et Terraform offre une solution puissante pour rationaliser le déploiement des ressources cloud. Cet article explore comment mettre en place un système automatisé permettant de déployer des ressources Azure via Terraform en réponse à des requêtes ServiceNow.

Pourquoi automatiser le déploiement de ressources cloud ?

L'automatisation du déploiement d'infrastructure présente de nombreux avantages :

  • Réduction des délais : passage de plusieurs jours à quelques minutes pour la mise à disposition de ressources
  • Standardisation : élimination des erreurs humaines et respect systématique des bonnes pratiques
  • Traçabilité : historique complet des modifications d'infrastructure
  • Gouvernance renforcée : application automatique des politiques de sécurité et de conformité
  • Optimisation des coûts : allocation précise des ressources selon les besoins réels

Les composants clés de notre solution

ServiceNow : le point d'entrée

ServiceNow est une plateforme ITSM (IT Service Management) qui permet de gérer les demandes de service IT via un portail centralisé. Dans notre architecture, ServiceNow joue le rôle de point d'entrée où les utilisateurs peuvent soumettre leurs demandes de ressources cloud via un formulaire standardisé.

Terraform : l'Infrastructure as Code

Terraform est un outil d'Infrastructure as Code (IaC) qui permet de définir et provisionner l'infrastructure à l'aide de fichiers de configuration déclaratifs. Ses principaux atouts sont :

  • La gestion de l'état de l'infrastructure
  • La prévisualisation des changements avant application
  • La prise en charge de multiples fournisseurs cloud
  • La modularité et la réutilisabilité du code

Azure DevOps : l'orchestrateur

Azure DevOps fournit les outils nécessaires pour implémenter des pipelines CI/CD (Intégration Continue/Déploiement Continu) qui orchestrent le processus de déploiement. Il permet également de gérer le code Terraform dans des dépôts Git, facilitant ainsi la collaboration et le versionnement.

Architecture de la solution

Voici comment ces trois technologies s'articulent pour créer un workflow automatisé :

  1. Soumission de la demande : Un utilisateur crée une requête dans ServiceNow pour demander de nouvelles ressources Azure.

  2. Validation et enrichissement : La demande passe par un processus d'approbation et d'enrichissement dans ServiceNow.

  3. Déclenchement du pipeline : Une fois approuvée, ServiceNow déclenche un pipeline dans Azure DevOps via une API REST.

  4. Exécution de Terraform : Le pipeline Azure DevOps récupère le code Terraform approprié et l'exécute avec les paramètres fournis par ServiceNow.

  5. Déploiement des ressources : Terraform provisionne les ressources demandées dans Azure.

  6. Mise à jour du statut : Le pipeline met à jour le statut de la demande dans ServiceNow.

Implémentation détaillée

1. Configuration de ServiceNow

Pour commencer, nous devons créer un formulaire de demande personnalisé dans ServiceNow qui capturera toutes les informations nécessaires au déploiement :

  • Type de ressource (VM, base de données, etc.)
  • Configuration technique (taille, capacité, région)
  • Informations de facturation (centre de coûts, projet)
  • Durée de vie prévue des ressources

Nous configurons ensuite un workflow d'approbation adapté à la gouvernance de l'entreprise et créons un script d'intégration qui appellera Azure DevOps lorsque la demande sera approuvée.

2. Préparation du code Terraform

Le code Terraform doit être modulaire pour s'adapter aux différents types de demandes. Nous recommandons d'organiser votre code comme suit :

module "azure_vm" {
  source              = "./modules/azure_vm"
  name                = var.vm_name
  resource_group_name = var.resource_group_name
  location            = var.location
  vm_size             = var.vm_size
  admin_username      = var.admin_username
  admin_password      = var.admin_password
  # Autres paramètres...
}

Les variables seront injectées par le pipeline Azure DevOps en fonction des informations fournies dans la demande ServiceNow.

3. Configuration d'Azure DevOps

Dans Azure DevOps, nous créons un pipeline YAML qui sera responsable de l'exécution de Terraform :

trigger: none # Déclenché uniquement via API

pool:
  vmImage: 'ubuntu-latest'

variables:
  - group: terraform-secrets

steps:
- task: TerraformInstaller@0
  inputs:
    terraformVersion: '1.0.0'

- task: TerraformTaskV2@2
  displayName: 'Terraform Init'
  inputs:
    provider: 'azurerm'
    command: 'init'
    backendServiceArm: '$(AZURE_SERVICE_CONNECTION)'
    backendAzureRmResourceGroupName: '$(BACKEND_RESOURCE_GROUP)'
    backendAzureRmStorageAccountName: '$(BACKEND_STORAGE_ACCOUNT)'
    backendAzureRmContainerName: '$(BACKEND_CONTAINER)'
    backendAzureRmKey: '$(BACKEND_KEY)'

- task: TerraformTaskV2@2
  displayName: 'Terraform Plan'
  inputs:
    provider: 'azurerm'
    command: 'plan'
    environmentServiceNameAzureRM: '$(AZURE_SERVICE_CONNECTION)'
    commandOptions: '-var-file="$(System.DefaultWorkingDirectory)/params.tfvars"'

- task: TerraformTaskV2@2
  displayName: 'Terraform Apply'
  inputs:
    provider: 'azurerm'
    command: 'apply'
    environmentServiceNameAzureRM: '$(AZURE_SERVICE_CONNECTION)'
    commandOptions: '-var-file="$(System.DefaultWorkingDirectory)/params.tfvars" -auto-approve'

4. Intégration ServiceNow - Azure DevOps

Pour connecter ServiceNow à Azure DevOps, nous utilisons l'API REST d'Azure DevOps. Voici un exemple de script ServiceNow qui déclenche le pipeline :

(function executeRule(current, previous /*null when async*/) {
    try {
        var request = new sn_ws.RESTMessageV2('Azure DevOps', 'Pipeline Trigger');
        request.setRequestBody(JSON.stringify({
            resources: {
                repositories: {
                    self: {
                        refName: "refs/heads/main"
                    }
                }
            },
            parameters: {
                "resourceType": current.resource_type,
                "resourceName": current.resource_name,
                "resourceGroup": current.resource_group,
                "location": current.location
                // Autres paramètres...
            }
        }));
        
        var response = request.execute();
        var httpStatus = response.getStatusCode();
        
        if (httpStatus == 200) {
            current.work_notes = "Pipeline Azure DevOps déclenché avec succès.";
            current.update();
        } else {
            current.work_notes = "Échec du déclenchement du pipeline. Code d'état : " + httpStatus;
            current.update();
        }
    } catch (ex) {
        current.work_notes = "Erreur lors du déclenchement du pipeline : " + ex.message;
        current.update();
    }
})(current, previous);

Bonnes pratiques et considérations

Sécurité

  • Utilisez des identités gérées pour l'authentification entre les services
  • Limitez les permissions au strict nécessaire (principe du moindre privilège)
  • Chiffrez les variables sensibles dans Azure DevOps
  • Mettez en place une validation des demandes pour éviter les configurations non conformes

Évolutivité

  • Concevez votre solution pour qu'elle puisse évoluer avec les besoins de l'entreprise
  • Utilisez des modules Terraform réutilisables pour différents types de ressources
  • Prévoyez des mécanismes de mise à l'échelle automatique pour les ressources déployées

Maintenance

  • Documentez rigoureusement l'architecture et les procédures
  • Mettez en place une surveillance des déploiements
  • Prévoyez des procédures de rollback en cas d'échec
  • Automatisez les tests d'infrastructure

Retour d'expérience : cas concrets d'implémentation

Chez Platane, nous avons eu l'occasion de mettre en œuvre ce type d'architecture pour plusieurs clients, avec des résultats probants. Par exemple, pour un projet similaire à Epictory, nous avons implémenté une solution d'automatisation du déploiement d'infrastructure qui a permis de réduire le temps de mise en production de 3 jours à 45 minutes, tout en garantissant une conformité totale avec les standards de sécurité.

Notre expérience avec des projets comme Dealt nous a également permis de développer une expertise dans l'intégration de systèmes complexes, en particulier dans la mise en place de workflows automatisés entre différentes plateformes. La combinaison de notre savoir-faire en matière de développement d'API et d'automatisation d'infrastructure nous permet d'offrir des solutions sur mesure qui répondent précisément aux besoins spécifiques de chaque client.

Pour notre propre plateforme interne, nous avons également mis en place une infrastructure entièrement automatisée sur AWS, utilisant Terraform et des pipelines CI/CD, ce qui nous donne une compréhension approfondie des défis techniques et organisationnels liés à ce type de projet.

Conclusion

L'intégration de ServiceNow, Azure DevOps et Terraform offre une solution puissante pour automatiser le déploiement de ressources cloud. Cette approche permet non seulement de gagner en efficacité opérationnelle, mais aussi d'améliorer la gouvernance et la sécurité de l'infrastructure IT.

La mise en œuvre d'une telle solution nécessite une expertise dans plusieurs domaines : ITSM, DevOps, cloud computing et Infrastructure as Code. C'est précisément à l'intersection de ces compétences que se situe notre expertise chez Platane.

Vous envisagez d'automatiser le déploiement de vos ressources cloud ou de moderniser votre infrastructure IT ? Nous serions ravis d'échanger avec vous sur votre projet. Notre équipe d'experts peut vous accompagner à chaque étape, de la conception à la mise en œuvre, en passant par la formation de vos équipes.

N'hésitez pas à prendre rendez-vous via notre formulaire de contact pour discuter de vos besoins spécifiques. Chez Platane, nous croyons que la technologie doit être au service de vos objectifs métier, et nous mettons notre créativité et notre expertise technique à votre disposition pour concrétiser votre vision.

Le BlogDes infos, des actus, du fun !

L'avenir de l'internet : IA, Machine Learning et développement web

L'intelligence artificielle et le Machine Learning redéfinissent l'expérience sur Internet, offrant des possibilités inédites en matière de développement web. Examinons comment ces technologies émergentes façonnent l'avenir de l'internet et transforment la création de sites web.

read the article

Extraction automatique de données PDF vers Excel : les défis de l'IA hors ligne et de la fiabilité

Comment concevoir une solution d'intelligence artificielle capable d'extraire des données de PDF complexes vers Excel, en mode hors ligne, tout en garantissant fiabilité et traçabilité des informations incertaines.
read the article
Image de couverture de l'article de blog

Agents vocaux IA pour la qualification de prospects : enjeux, architecture et bonnes pratiques

Découvrez comment concevoir et déployer un agent vocal IA performant pour automatiser la qualification de prospects via des appels sortants, avec une intégration CRM sécurisée et conforme RGPD.
read the article

Contact usHello?

Send us a message

optional

Book a meeting

Prefer to talk it over? So do we — and it's obviously no strings attached!

Call us

A question or need more information? Don't hesitate to contact us.

Logo Activateur France Num

France Num Activator

Platane has joined the France Num initiative to support small and medium-sized enterprises in their digital transformation: diagnostics, training and financial aid.

Why call on a digital expert referenced by France Num?
logo de Platane.io
2 b rue Poullain Duparc - 35000, Rennes
69 rue des Tourterelles - 86000, Saint-Benoit
+33 7 70 48 29 48
Find us on
AWS Certified
Scaleway CertifiedCertifié(e) Access42Certifié(e) Opquast

Certified web quality expertise for high-performing and accessible websites

Agréé Crédit Impôt Innovation

Innovation Tax Credit approved