
Apprendre un cloud coûte des crédits, et pas seulement au moment où l'on
réussit. Chaque essai raté laisse une ressource oubliée, chaque
manipulation répétée consomme, et la crainte du compteur pousse à faire les
choses une seule fois là où il faudrait les refaire dix. Ce guide branche
octl et le provider Terraform OUTSCALE officiels sur un émulateur
local : les mêmes appels OAPI, la même syntaxe, aucune AK/SK réelle et
aucune ressource facturée.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Faire répondre
octlsur votre machine, sans compte OUTSCALE. - Rejouer les leçons Net, Subnets, Security Groups, instances TINA et BSU.
- Situer ce que l'émulateur couvre de l'API OAPI, opération par opération.
- Reconnaître les leçons qui exigent un vrai compte, et la raison de chacune.
- Anticiper ce qui change quand vous repassez sur
eu-west-2.
Prérequis
Section intitulée « Prérequis »Trois éléments, tous gratuits :
octl, le CLI OUTSCALE, vu au volet Découvrir.- feint, un émulateur local des API OUTSCALE, Scaleway et Exoscale.
- Facultatif, Terraform 1.7 ou plus récent pour rejouer les références IaC.
Aucun compte OUTSCALE n'est nécessaire, et aucun crédit ne sera consommé.
Pourquoi s'entraîner en local avant de consommer
Section intitulée « Pourquoi s'entraîner en local avant de consommer »Apprendre, c'est répéter. Écrire un appel, se tromper de paramètre, recommencer, comparer deux découpages de sous-réseaux. Sur un vrai compte, cette boucle consomme des crédits et quelques minutes à chaque tour, ce qui suffit à décourager la vingtième tentative, précisément celle qui fait comprendre.
L'émulateur supprime les deux freins. La boucle devient gratuite et instantanée, et surtout sans traînée : rien ne survit à l'arrêt du processus, donc aucun Net orphelin ne reste le lendemain dans votre compte.
Le point qui rend l'exercice utile est que le client, lui, est le vrai. Ce
n'est pas un simulateur qui vous apprendrait une syntaxe approximative : c'est
octl et le provider Terraform du registre, dans leurs versions publiées,
qui parlent à 127.0.0.1 au lieu de api.eu-west-2.outscale.com. Ce que vous
apprenez ici se transpose sans modification sur votre futur compte.
Faire répondre octl sur votre machine
Section intitulée « Faire répondre octl sur votre machine »-
Installer l'émulateur.
Fenêtre de terminal brew install stephrobert/feint/feintfeint versionLa sortie doit afficher
v0.12.0. D'autres canaux existent, dont une release vérifiée par signature Sigstore, décrits dans le guide Installer feint. -
Le démarrer, puis pointer le CLI dessus.
Fenêtre de terminal feint starteval "$(feint env outscale)"La commande exporte l'adresse de l'API et une AK/SK bien formée mais fictive. Les SDK valident la forme d'un identifiant avant d'émettre quoi que ce soit, d'où ces valeurs factices qui laissent démarrer un vrai client.
-
Créer un Net, comme au volet Fondations.
Fenêtre de terminal octl iaas api CreateNet --IpRange=10.20.0.0/16{"Net": {"NetId": "vpc-66ebcddd", "IpRange": "10.20.0.0/16", "State": "available"}}Aucun crédit n'a été consommé, et la ressource n'existe que dans la mémoire d'un processus local.
-
Tout arrêter.
Fenêtre de terminal feint stopL'émulateur signale combien de ressources il abandonne. Rien n'est laissé derrière, ce qui est exactement le contraire du problème que pose un lab sur un compte réel.
Ce que feint couvre de l'API OAPI
Section intitulée « Ce que feint couvre de l'API OAPI »L'émulateur monte 93 opérations OUTSCALE en version 0.12.0, relevées avec
curl -s localhost:4599/_feint/routes. Le tableau ci-dessous liste les
ressources que vous pouvez créer, avec les verbes réellement servis.
| Ressource | Verbes servis |
|---|---|
| Net | Create, Read, Update, Delete |
| Subnet | Create, Read, Update, Delete |
| SecurityGroup et SecurityGroupRule | Create, Delete |
| Vms | Create, Read, Start, Stop, Reboot, Delete |
| Volume | Create, Update, Link, Unlink, Delete |
| Snapshot | Create, Delete |
| Image | Create, Update, Delete |
| PublicIp | Create, Link, Unlink, Delete |
| Nic | Create, Update, Link, Unlink, Delete |
| RouteTable et Route | Create, Update, Link, Unlink, Delete |
| InternetService | Create, Link, Unlink, Delete |
| NatService | Create, Delete |
| NetPeering | Create, Accept, Reject, Delete |
| LoadBalancer et ses listeners | Create, Update, Delete |
| Keypair | Create, Delete |
| DhcpOptions | Create, Read, Delete |
| Tags | Create, Read, Delete |
Une nuance utile avant de se réjouir de cette liste : un compte d'opérations n'est pas un compte de fonctionnalités. Les verbes du cycle de vie sont servis, pas la totalité des paramètres que l'API publie pour chacun.
Quelles leçons de ce parcours se rejouent en local
Section intitulée « Quelles leçons de ce parcours se rejouent en local »Voici le verdict, volet par volet. Il dit où l'émulateur remplace un compte, où il le complète, et où il ne sert à rien.
| Leçon | En local ? | Précision |
|---|---|---|
| Cockpit OUTSCALE | non | Le Cockpit est une interface web, hors du périmètre d'un émulateur d'API |
Outils CLI et CLI octl | oui | C'est le cas d'usage principal : toute la syntaxe OAPI se pratique ici |
| Régions et sous-régions | partiellement | eu-west-2 répond ; le comportement multi-région ne se teste pas |
| EIM : identité et accès | non | Aucune signature n'est vérifiée : un test de droits n'aurait aucun sens |
| Réseau : design Net + Subnets | oui | Le bloc demandé est le bloc obtenu |
| Réseau : Security Groups | oui | Groupes et règles, création et suppression |
| Réseau : IGW, NAT, EIP, bastion | oui, pour les enregistrements | Les objets se créent ; le trafic ne traverse pas, voir plus bas |
| Calcul : instances TINA et sizing | oui | Les types tinavW.cXrYpZ sont acceptés et relus |
| fGPU | non | Aucune opération de ce produit n'est montée |
| Stockage : BSU, volumes, IOPS | oui | Volumes, snapshots, attachement |
| Stockage : OOS | non | L'Object Storage n'est pas émulé |
| Sauvegardes : RPO/RTO/PRA | partiellement | Les snapshots se créent ; aucune durée réelle n'est simulée |
| Références Terraform et Packer | oui, pour Terraform | Le provider officiel applique, replanifie à vide et détruit |
| Cluster OKS | non | Le service managé Kubernetes n'est pas émulé |
| Capstone, chapitre 1 : les 3 Nets | oui | Trois Nets et leurs sous-réseaux |
| Capstone, chapitre 2 : Net Peering | oui | Le peering se crée en pending-acceptance puis s'accepte |
| Capstone, chapitre 5 : LBU + DNS | partiellement | Le LBU se crée et publie son nom DNS ; il ne distribue pas de paquets |
La bonne façon d'utiliser ce tableau est de s'entraîner en local, puis de refaire une seule fois la manipulation sur votre compte. Vous arrivez alors sur OUTSCALE en connaissant les appels, et il ne vous reste à découvrir que ce qui lui est propre : les délais, les quotas et la consommation.
Rejouer le volet Fondations en une passe
Section intitulée « Rejouer le volet Fondations en une passe »Les commandes ci-dessous reprennent les gestes des leçons Net + Subnets, Security Groups, instances TINA et BSU, dans l'ordre du parcours. Les sorties sont celles relevées sur l'émulateur en version 0.12.0.
net=$(octl iaas api CreateNet --IpRange=10.20.0.0/16 --output json | jq -r '.NetId // .[0].NetId')sub=$(octl iaas api CreateSubnet --NetId="$net" --IpRange=10.20.1.0/24 --output json | jq -r '.SubnetId // .[0].SubnetId')
octl iaas api CreateSecurityGroup --SecurityGroupName=formation-web \ --Description="front" --NetId="$net"
octl iaas api CreateVms --ImageId=ami-00000001 --VmType=tinav6.c1r1p2 --SubnetId="$sub"octl iaas api CreateVolume --SubregionName=eu-west-2a --Size=20 --VolumeType=gp2octl iaas api CreatePublicIp{"VmId":"i-cd56de64","VmType":"tinav6.c1r1p2","State":"running","SubnetId":"subnet-4bc17890"}{"VolumeId":"vol-6d32fd1b","Size":20,"VolumeType":"gp2","State":"available"}{"PublicIp":"198.51.100.1","PublicIpId":"eipalloc-c553d501"}Deux détails méritent d'être remarqués. L'instance naît directement en
running, là où OUTSCALE prend une minute : les transitions sont
immédiates dans l'émulateur, et un script qui enchaîne sans attendre
réussira ici tout en pouvant échouer en production. Et l'adresse publique tombe
dans 198.51.100.0/24, une plage réservée à la documentation par la
RFC 5737, qui n'est routable nulle part.
Le chapitre 2 du capstone se rejoue tel quel
Section intitulée « Le chapitre 2 du capstone se rejoue tel quel »Le Net Peering du projet fil rouge est servi de bout en bout, avec la machine d'états du vrai cloud :
octl iaas api CreateNetPeering --SourceNetId="$net" --AccepterNetId="$net2"{"NetPeeringId":"pcx-e87c43b3","State":"pending-acceptance"}L'état pending-acceptance est le comportement réel : un peering doit être
accepté par le Net destinataire, ce que AcceptNetPeering fait ensuite. Vous
pouvez donc répéter le maillage complet du capstone avant de le construire pour
de bon.
Ce que cet entraînement ne vous apprendra pas
Section intitulée « Ce que cet entraînement ne vous apprendra pas »Un émulateur qui laisserait croire à ce qu'il ne vérifie pas serait pire qu'inutile. Quatre domaines restent hors de portée.
EIM et les permissions ne sont jamais vérifiés. L'émulateur accepte n'importe quelle AK/SK bien formée sans contrôler de signature. C'est ce qui permet de se passer de compte, et cela interdit tout test de politique de droits : les deux leçons EIM se font sur un vrai compte.
Les quotas et la consommation n'existent pas. Le catalogue de types TINA est une liste figée : aucun test de dépassement n'a de sens, et le pilier Cost Optimization garde toute sa place sur un compte réel.
Les identifiants ne sont pas validés. Une OMI qui n'existe pas, comme
ami-00000001 utilisée plus haut, est acceptée ici et refusée en
production. Une faute de frappe dans un identifiant passe donc silencieusement.
SecNumCloud ne se teste pas. La qualification porte sur l'exploitation réelle de la plateforme, ses procédures et son hébergement : rien de tout cela n'a de sens dans un processus local, et la leçon correspondante reste entièrement théorique et documentaire.
À retenir
Section intitulée « À retenir »- Le client est le vrai :
octlet le provider Terraform officiels, pointés sur votre machine. - 93 opérations OAPI sont montées, dont Net, Subnet, Security Groups, Vms, BSU et Net Peering.
- Le chapitre 2 du capstone se rejoue tel quel, avec l'état
pending-acceptancedu vrai cloud. - Les passerelles et le LBU déplacent des enregistrements, jamais des paquets.
- EIM, quotas, OOS et OKS ne s'apprennent que sur un compte, et c'est assumé.
- La bonne méthode : répéter en local, puis faire une seule fois sur le compte réel.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Réseau : design Net + Subnets : Le découpage que vous venez de répéter, cette fois pensé pour la production.
- Calcul : instances TINA et sizing : Choisir un gabarit, une décision que l'émulateur ne prend pas à votre place.
- Référence Terraform sur OUTSCALE : Rejouer ces mêmes ressources en infrastructure as code.
- Chapitre 2 du capstone, Net Peering full-mesh : Le maillage complet, préparé en local puis appliqué pour de bon.