Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Cloud API-first : tout est automatisable et pourquoi c'est central

Par mis à jour le

Améliorer cette page

Pourquoi peut-on créer des dizaines de serveurs cloud en quelques minutes avec un script, dans la limite des quotas de son compte, alors qu'il faudrait des heures pour faire la même chose manuellement ? La réponse tient en deux mots : API-first. Tous les fournisseurs cloud modernes (AWS, Azure, GCP, Outscale, OVHcloud, Scaleway) sont construits autour d'une API HTTP qui expose chaque opération possible. La console web n'est qu'une interface graphique qui appelle cette API en arrière-plan. Cette page explique le principe, les équivalents chez chaque fournisseur, le principe de l'authentification d'un script, les outils qui l'exploitent (CLI, SDK, Terraform), et défend une opinion claire : tout construire à la main dans la console, sans jamais passer au code, est une dette technique que vous accumulez sans la voir.

  • Comprendre le principe API-first et pourquoi c'est la base du cloud moderne
  • Voir les équivalents par fournisseur (AWS, Azure, GCP, Outscale)
  • Pourquoi un script ne s'authentifie pas comme un humain, et où se choisit le mécanisme adapté
  • Identifier les outils qui exploitent les API : CLI, SDK, Terraform
  • Mesurer les avantages concrets de l'automatisation vs l'approche console

Prérequis : connaître les bases du cloud computing. Si vous débutez, commencez par Définition et promesses du cloud.

1. Le cloud, c'est du logiciel qui pilote du matériel

Section intitulée « 1. Le cloud, c'est du logiciel qui pilote du matériel »

L'infrastructure traditionnelle, des humains partout

Section intitulée « L'infrastructure traditionnelle, des humains partout »

Imaginez que vous devez commander un nouveau serveur dans un datacenter classique. Vous remplissez un bon de commande, un technicien vérifie le stock, installe physiquement le serveur dans un rack, branche les câbles réseau et électriques, un autre configure le système d'exploitation, quelqu'un vous envoie un courriel avec les accès. Délai typique : quelques jours à plusieurs semaines. Pour dix serveurs identiques, le temps est multiplié par dix : rien n'est mutualisé.

Dans le cloud, ce processus est entièrement automatisé, et le délai tombe à quelques dizaines de secondes. Quand vous cliquez sur « Créer une VM » dans la console web (Cockpit Outscale, AWS Console, Portal Azure, Cloud Console GCP), voici ce qui se passe réellement :

  1. Votre clic envoie une requête HTTP à l'API du fournisseur.
  2. L'API vérifie vos droits (avez-vous le droit de créer une VM dans ce projet ?).
  3. L'API orchestre la création : allocation de ressources, configuration réseau, démarrage.
  4. L'API vous renvoie une réponse avec les informations de votre VM.

Le point crucial : la console web n'est qu'une interface graphique qui appelle l'API. Vous obtiendriez exactement le même résultat avec un script, un outil en ligne de commande ou du code applicatif. La console ne détient aucun pouvoir que vous n'ayez pas.

2. Le principe API-first : tout est pilotable par code

Section intitulée « 2. Le principe API-first : tout est pilotable par code »

Une API (Application Programming Interface, Interface de Programmation d'Application) est un contrat entre deux logiciels. Elle définit quelles actions sont possibles (créer une VM, lister les volumes, supprimer un réseau), quels paramètres chaque action accepte (taille du disque, région, nom), quel format utiliser pour communiquer (généralement du JSON sur HTTPS), et comment s'authentifier.

Concrètement, une API cloud permet d'écrire un programme qui crée, modifie ou supprime des ressources d'infrastructure, exactement comme si un humain cliquait dans la console, mais de façon reproductible.

Le terme API-first signifie que l'API n'est pas un ajout tardif, mais la fondation sur laquelle tout le reste est construit.

ComposantRôleUtilise l'API ?
APICœur du système, expose toutes les opérationsC'est l'API elle-même
Console webInterface graphique pour humainsAppelle l'API en arrière-plan
CLI (aws, az, gcloud, octl)Ligne de commande pour scriptsAppelle l'API
SDK (Python, Go, Java, JavaScript…)Bibliothèques pour développeursAppelle l'API
TerraformInfrastructure as CodeAppelle l'API via le provider
Architecture API-first d'Outscale : Cockpit, osc-cli et oapi-cli, les SDK et Terraform passent tous par l'API OAPI, point d'entrée unique en HTTP REST et JSON, qui pilote VMs, volumes, Nets, security groups, LBU, OMI et une cinquantaine d'autres ressources.Interfaces utilisateurInfrastructure cloudVMsVolumesNetsSecurity GroupsLBUOMI+ 50…Cockpitconsole web, manuelleosc-cli, oapi-cliautomatisableSDKPython, Go, JavaTerraformIaC, recommandéAPI Outscale (OAPI)HTTP REST + JSON, point d'entrée unique
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %

Le principe API-first est partagé, mais chaque fournisseur expose son API et ses outils selon ses propres conventions de nommage. Ce tableau sert de table de correspondance entre les écosystèmes.

FournisseurAPI officielleCLI principaleSDK PythonProvider Terraform
AWSAWS API (REST/JSON)aws-cli v2boto3hashicorp/aws
AzureAzure Resource Manager APIaz (Azure CLI)azure-mgmt-*hashicorp/azurerm
GCPGoogle Cloud APIsgcloudgoogle-cloud-*hashicorp/google
OutscaleOAPI (OUTSCALE API)octlosc-sdk-pythonoutscale/outscale
OVHcloudOVHcloud APIovh-cli (community)python-ovhovh/ovh
ScalewayScaleway APIscw (Scaleway CLI)scaleway-sdk-pythonscaleway/scaleway

Tous ces outils reposent sur les mêmes quatre familles d'opérations : créer (Create*), lire ou lister (Read* chez Outscale, Describe* chez AWS, list ou get ailleurs), modifier (Update*, Modify*) et supprimer (Delete*). Les noms exacts varient pourtant d'un fournisseur à l'autre, comme le montrent les commandes de liste ci-dessous. C'est ce qui rend la compétence transférable sans être mécanique : maîtriser un outil raccourcit l'apprentissage des suivants, à condition de relire la documentation de chaque commande.

Fenêtre de terminal
# AWS
aws ec2 describe-instances
# Azure
az vm list
# GCP
gcloud compute instances list
# Outscale
octl iaas api ReadVms
# Scaleway
scw instance server list

La logique reste identique : seuls les noms de commandes et de paramètres changent. Pour le détail d'une CLI ou d'un SDK donné, la documentation officielle du fournisseur reste la référence.

4. Comment un script prouve-t-il son identité à l'API ?

Section intitulée « 4. Comment un script prouve-t-il son identité à l'API ? »

Un script ne peut pas saisir un mot de passe : il lui faut un mécanisme d'authentification adapté à celui qui appelle l'API. La console s'ouvre avec un courriel, un mot de passe et une authentification multifacteur, ce qu'un programme ne sait pas faire. Le réflexe de créer une clé d'accès et de la coller dans un fichier fonctionne, mais c'est le mécanisme le plus risqué, à réserver au dernier recours : une identité attachée à la ressource (le fournisseur reconnaît la machine ou la fonction qui exécute le script, sans clé à stocker) ou une fédération OIDC (le pipeline prouve son identité au fournisseur, qui délivre un jeton temporaire) évitent d'avoir un secret de longue durée à protéger.

Le choix selon l'appelant, la comparaison des mécanismes de signature et les règles à tenir quand un secret statique reste inévitable sont traités dans la leçon Identifiants temporaires et accès en ligne de commande, du module consacré aux identités. Ici, retenez seulement que les CLI, les SDK et Terraform présentés ci-dessous s'authentifient tous par l'un de ces mécanismes, et qu'aucun ne vous demande de calculer vous-même une signature.

L'API est puissante, mais envoyer des requêtes HTTP signées manuellement serait fastidieux. Les outils qui suivent simplifient l'utilisation, classés par niveau d'abstraction croissant.

Idéale pour découvrir les services et explorer son infrastructure, effectuer des opérations ponctuelles, visualiser l'état de ses ressources.

Limitations : impossible d'automatiser, pas de reproductibilité, risque d'erreurs manuelles, pas de versioning. La console est un excellent outil d'apprentissage, un mauvais outil de production.

Les CLI (aws, az, gcloud, octl, scw sont des CLI officielles ; celle d'OVHcloud est communautaire) permettent d'enchaîner des commandes dans des scripts shell, de les versionner dans Git et de les rejouer. C'est le premier pas vers l'automatisation, et le moins coûteux.

Exemple, créer un volume de 50 Go.

  1. Sur AWS :

    Fenêtre de terminal
    aws ec2 create-volume \
    --availability-zone eu-west-3a \
    --size 50 \
    --volume-type gp3
  2. Sur Outscale :

    Fenêtre de terminal
    octl iaas api CreateVolume \
    --SubregionName eu-west-2a \
    --Size 50 \
    --VolumeType gp2
  3. Sur GCP :

    Fenêtre de terminal
    gcloud compute disks create my-disk \
    --zone europe-west9-a \
    --size 50GB \
    --type pd-balanced

Pour intégrer le cloud dans vos applications, des SDK (Software Development Kits) existent pour la plupart des langages : Python, Go, Java, JavaScript, .NET, Ruby. Usages typiques : automatisation complexe, fonctions FaaS (Function as a Service, du code exécuté à la demande sans serveur à gérer), microservices déclenchant des actions cloud, outils internes.

Exemple Python avec boto3 (AWS) :

import boto3
ec2 = boto3.client('ec2', region_name='eu-west-3')
result = ec2.describe_instances()
for reservation in result['Reservations']:
for instance in reservation['Instances']:
print(f"VM: {instance['InstanceId']} - État: {instance['State']['Name']}")

Terraform est l'outil de référence pour déclarer son infrastructure sous forme de code. Tous les fournisseurs cloud modernes maintiennent un provider Terraform officiel.

Exemple Terraform, déclarer une VM AWS (la contrainte ~> 6.0 accepte toute version 6.x ; c'est le fichier de verrouillage .terraform.lock.hcl, écrit par terraform init, qui fixe la version exacte installée) :

terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 6.0"
}
}
}
provider "aws" {
region = "eu-west-3"
}
resource "aws_instance" "web_server" {
ami = "ami-0123456789abcdef0"
instance_type = "t3.micro"
tags = {
Name = "web-server-prod"
Environment = "production"
ManagedBy = "terraform"
}
}

Pour appliquer cette configuration : terraform init télécharge le provider, terraform plan prévisualise les changements, terraform apply crée réellement la VM.

Cette comparaison met face à face l'approche console et l'approche API sur les mêmes critères. Le schéma résume l'écart, puis le tableau le détaille ligne par ligne, de la reproductibilité à l'audit des changements.

Approche manuelle dans la console Cockpit : créer les VMs une à une par formulaire, répéter, 30 à 45 minutes, avec erreurs humaines, aucune reproductibilité ni trace des choix. Approche API-first : écrire une fois le code Terraform (count = 10) puis lancer terraform apply, pour 10 VMs identiques en moins de 2 minutes, code versionné dans Git et reproductible de dev à prod.Approche manuelle : Cockpituniquement1 · Connexion Cockpitmenu VMs2 · Créer la VM n°1formulaire, options3 · Attendre,créer la VM n°24 · Répéter 8 fois30 à 45 minProblèmes : erreur humaine, non reproductible,aucune trace des choix, VMs qui divergentApproche API-first : Terraform,CLI, SDK1 · Écrire le code une seule foisoutscale_vm, count = 102 · Exécuterterraform applyBénéfices : 10 VMs identiques en moins de 2 min,code versionné dans Git, reproductible dev → prod
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %
CritèreApproche console (manuelle)Approche API (automatisée)
Créer 1 serveur5 minutes de clics30 secondes
Créer 100 serveurs~8 heures (si vous tenez)quelques minutes, dans la limite des quotas du compte
Reproduire un environnementImpossible exactementIdentique pour les ressources décrites (hors données et secrets)
Documenter l'infrastructureScreenshots, wiki obsolèteLe code est la documentation
Revenir en arrièreImpossible ou très risquégit revert + terraform apply
Audit des changements« Qui a fait ça ?! »Historique Git complet
Erreurs humainesFréquentes (fatigue, distraction)Réduites (le code est relu avant d'être appliqué)

Reproductibilité. Un script ou une configuration Terraform produit les mêmes ressources à chaque exécution. Fini le « ça marchait sur mon environnement de test », dev, staging et production se construisent à partir du même code : seules les différences voulues (taille des machines, données, secrets) les distinguent.

Scalabilité. Besoin de 50 serveurs pour un pic de charge ? Une boucle dans le code. Besoin de revenir à 5 serveurs ? Une autre exécution.

Versionnement. Votre infrastructure est du code. Elle vit dans Git, avec des commits, des branches, des pull requests, des reviews, exactement comme du code applicatif.

Collaboration. Plusieurs personnes travaillent sur l'infrastructure en parallèle, mergent leurs changements, partagent une source de vérité unique.

Disaster Recovery. Si l'infrastructure est détruite, terraform apply recrée les ressources décrites (réseaux, machines, services), pas les données : bases, volumes et objets exigent des sauvegardes testées à part, et les secrets doivent être réinjectés depuis un gestionnaire de secrets. Essayez de reconstruire les ressources avec des screenshots de console.

La console web et le code d'infrastructure ne s'opposent pas : ils répondent à des besoins différents, l'exploration d'un côté, la reproductibilité de l'autre. Savoir quand employer l'un ou l'autre évite la dette technique d'une infrastructure construite à la main, puis impossible à reconstruire à l'identique.

À quoi sert la console. Elle est l'outil d'apprentissage par excellence : voir une ressource se créer, comprendre les options exposées, explorer un service inconnu. Elle est aussi pratique pour le diagnostic : visualiser l'état réel d'une ressource, comparer avec ce qui était attendu, lire un message d'erreur dans son contexte. Pour ces deux usages, la console est plus rapide que le code.

À quoi sert le code d'infrastructure. Dès qu'une opération doit être rejouée, reproduite sur plusieurs environnements, ou documentée pour l'équipe, le code prend le relais. Un script CLI, un manifeste Terraform ou un appel SDK garantissent la reproductibilité, la traçabilité dans Git, et la possibilité de revue par un pair.

Le piège du « j'automatiserai ensuite ». Une infrastructure construite à la console pendant des mois, puis convertie en code, demande un travail de rétro-ingénierie ressource par ressource (état actuel, dépendances, paramètres implicites). Ce travail prend généralement plus de temps que le démarrage direct en code, parce qu'il faut reconstituer ce qui a été cliqué sans trace.

Le piège du state drift. Quand une partie de l'infrastructure est gérée en code (Terraform) et qu'une correction est faite à la console, le code et la réalité divergent. Au prochain terraform apply, l'outil voudra annuler cette correction ou créer un conflit. Cette divergence, appelée state drift, est l'un des bugs les plus difficiles à diagnostiquer.

Règle pratique : si une opération sera faite plus d'une fois, elle se fait en code. Si elle est faite une seule fois pour explorer ou diagnostiquer, la console est acceptable. Cette frontière simple évite la majorité des dérives.

Piège 1, « Je commence par la console, j'automatiserai ensuite ». Ensuite n'arrive jamais, et vous vous retrouvez avec une infrastructure impossible à reproduire. Mitigation : écrivez dès le premier serveur une commande CLI rejouable, puis un fichier Terraform quand l'environnement se stabilise.

Piège 2, « Je stocke ma clé d'accès dans le code ». Mieux vaut ne pas avoir de clé du tout quand une identité attachée ou une fédération OIDC est possible. Si une clé reste inévitable, elle ne doit jamais être dans le code : elle se retrouve dans Git, est partagée involontairement, et quelqu'un compromet votre infrastructure. Mitigation : gestionnaire de secrets, jamais dans le code source.

Piège 3, « J'ai une seule clé d'accès pour tout ». Si cette clé est compromise, l'attaquant a accès à tout. Mitigation : une clé dédiée par environnement, par outil et par pipeline CI/CD, avec moindre privilège.

Piège 4, « L'API, c'est compliqué, je reste sur la console ». Vous passez à côté de l'essentiel de la puissance du cloud. Mitigation : commencez petit. Une commande CLI pour lister vos VMs. Puis un script qui crée une ressource. La montée en compétence est progressive.

  • API-first = tout est pilotable par code. La console n'est qu'une interface graphique qui appelle l'API en arrière-plan.
  • Les 6 fournisseurs cités (AWS, Azure, GCP, Outscale, OVHcloud, Scaleway) exposent tous une API HTTP et des CLI (officielles, sauf celle d'OVHcloud qui est communautaire) ; le mécanisme d'authentification varie selon l'offre (clés, identité attachée, fédération) et se choisit dans la leçon consacrée aux identifiants temporaires.
  • Un script s'authentifie par identité attachée ou fédération OIDC par défaut ; la clé d'accès statique n'est que le dernier recours et ne doit jamais être en clair dans le code.
  • Plusieurs outils exploitent l'API : CLI pour scripter, SDK pour intégrer, Terraform pour l'Infrastructure as Code.
  • L'automatisation apporte reproductibilité, scalabilité, versionnement, audit, et réduit les erreurs manuelles.
  • La console pour apprendre, l'API pour construire, la frontière est : si l'opération est faite plus d'une fois, elle se fait en code.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn