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

Image de couverture de l'article 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 !
Image de couverture de l'article de blog

Intelligence artificielle et gestion de stocks en santé : les enjeux technologiques pour les pharmacies connectées

Découvrez comment l'IA et les architectures cloud sécurisées transforment la gestion des stocks pharmaceutiques et la livraison de produits de santé, avec un focus sur la souveraineté des données et la conformité RGPD.
lire l’article
Image de couverture de l'article de blog

Comment créer une plateforme e-learning performante avec intelligence artificielle en 2024

Découvrez les meilleures pratiques pour développer une plateforme de formation en ligne intégrant l'IA, conforme aux standards professionnels et offrant une expérience apprenant optimale.
lire l’article
Image de couverture de l'article de blog

Comment créer une plateforme d'abonnement sécurisée avec gestion de paiements récurrents et intelligence artificielle

Guide complet pour développer une solution web multi-interfaces intégrant Stripe, IA conversationnelle et conformité RGPD pour la gestion d'abonnements et de services clients.
lire l’article
Nous contacterOui allo ?
Nous appeler
Une question, un besoin de renseignements ?
N'hésitez pas à nous contacter.
Nous envoyer un message
facultatif
Prendre rendez-vous
Vous préférez discuter de vive voix ?
Nous aussi et c'est évidemment sans engagement !
logo de Platane.io
2 b rue Poullain Duparc - 35000, Rennes
69 rue des Tourterelles - 86000, Saint-Benoit
06 81 50 37 23

Expertise qualité web certifiée pour des sites performants et accessibles

Mathilde Louradour - Certifié(e) Opquast
Retrouvez-nous sur