Aller au contenu
English
Cloud medium

S'entraîner sur OUTSCALE sans compte et sans consommer de crédits

15 min de lecture

logo 3ds outscale

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.

  • Faire répondre octl sur 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.

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é.

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.

  1. Installer l'émulateur.

    Fenêtre de terminal
    brew install stephrobert/feint/feint
    feint version

    La 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.

  2. Le démarrer, puis pointer le CLI dessus.

    Fenêtre de terminal
    feint start
    eval "$(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.

  3. 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.

  4. Tout arrêter.

    Fenêtre de terminal
    feint stop

    L'é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.

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.

RessourceVerbes servis
NetCreate, Read, Update, Delete
SubnetCreate, Read, Update, Delete
SecurityGroup et SecurityGroupRuleCreate, Delete
VmsCreate, Read, Start, Stop, Reboot, Delete
VolumeCreate, Update, Link, Unlink, Delete
SnapshotCreate, Delete
ImageCreate, Update, Delete
PublicIpCreate, Link, Unlink, Delete
NicCreate, Update, Link, Unlink, Delete
RouteTable et RouteCreate, Update, Link, Unlink, Delete
InternetServiceCreate, Link, Unlink, Delete
NatServiceCreate, Delete
NetPeeringCreate, Accept, Reject, Delete
LoadBalancer et ses listenersCreate, Update, Delete
KeypairCreate, Delete
DhcpOptionsCreate, Read, Delete
TagsCreate, 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çonEn local ?Précision
Cockpit OUTSCALEnonLe Cockpit est une interface web, hors du périmètre d'un émulateur d'API
Outils CLI et CLI octlouiC'est le cas d'usage principal : toute la syntaxe OAPI se pratique ici
Régions et sous-régionspartiellementeu-west-2 répond ; le comportement multi-région ne se teste pas
EIM : identité et accèsnonAucune signature n'est vérifiée : un test de droits n'aurait aucun sens
Réseau : design Net + SubnetsouiLe bloc demandé est le bloc obtenu
Réseau : Security GroupsouiGroupes et règles, création et suppression
Réseau : IGW, NAT, EIP, bastionoui, pour les enregistrementsLes objets se créent ; le trafic ne traverse pas, voir plus bas
Calcul : instances TINA et sizingouiLes types tinavW.cXrYpZ sont acceptés et relus
fGPUnonAucune opération de ce produit n'est montée
Stockage : BSU, volumes, IOPSouiVolumes, snapshots, attachement
Stockage : OOSnonL'Object Storage n'est pas émulé
Sauvegardes : RPO/RTO/PRApartiellementLes snapshots se créent ; aucune durée réelle n'est simulée
Références Terraform et Packeroui, pour TerraformLe provider officiel applique, replanifie à vide et détruit
Cluster OKSnonLe service managé Kubernetes n'est pas émulé
Capstone, chapitre 1 : les 3 NetsouiTrois Nets et leurs sous-réseaux
Capstone, chapitre 2 : Net PeeringouiLe peering se crée en pending-acceptance puis s'accepte
Capstone, chapitre 5 : LBU + DNSpartiellementLe 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.

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.

Fenêtre de terminal
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=gp2
octl 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 Net Peering du projet fil rouge est servi de bout en bout, avec la machine d'états du vrai cloud :

Fenêtre de terminal
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.

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.

  • Le client est le vrai : octl et 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-acceptance du 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.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn