Lab 05 : Utilisation de la CLI et le SDK OSC
Objectifs
Section intitulée « Objectifs »Pour gérer vos ressources du Cloud OUTSCALE, vous pouvez utiliser les CLI et SDK fournis par OUTSCALE. Dans cet atelier vous allez vous familiariser avec l’utilisation de ces outils pour gérer vos ressources Cloud OUTSCALE.
- OSC CLI, une interface en ligne de commande (CLI) développée par 3DS OUTSCALE.
- AWS CLI, une interface en ligne de commande (CLI) développée par Amazon Web Services compatible avec OUTSCALE.
- osc-sdk-python permet de créer des scripts Python communiquant directement avec l’API OUTSCALE
OSC CLI est compatible avec l’API OUTSCALE et toutes les API AWS-compliant. On va l’utiliser dans cette partie pour déployer une instance (VM).

Installer OSC CLI
Section intitulée « Installer OSC CLI »Vous pouvez installer OSC CLI sur la plupart des plateformes Linux, MacOS et Windows. Dans cette partie on va l’installer sur Linux.
-
Assurez-vous que Python 3.6 ou ultérieur et pip3 sont installés sur votre machine.
Terminal window $ python3 -VPython 3.8.10 -
Il est recommandé d’installer OSC-CLI et ses dépendances dans un environnement virtuel Python (virtualenv), plutôt que directement sur votre système. Pour cela on va installer direnv.
Terminal window sudo apt install python3-venvcurl -sfL https://direnv.net/install.sh | bashecho 'eval "$(direnv hook bash)"'>> ~/.bashrcsource ~/.bashrc -
Créez un dossier
osccli-envTerminal window mkdir osccli-env -
Dans ce dossier, créez un fichier
.envrcavec le contenu suivant, puis installezdirenv:.envrc cd osscli-envcat <<EOF >.envrc##layout python3EOFsudo apt install -y direnv -
Dans le dossier
osccli-env, lancez la commande suivanteTerminal window direnv allow -
Installez le OSC CLI
Terminal window pip3 install osc-sdk -
Validez l’installation de la CLI avec la commande
Terminal window osc-cli --help
Configurer osc-cli
Section intitulée « Configurer osc-cli »Pour utiliser osc-cli, il faut récupérer les accès à partir de votre compte OUTSCALE.
Avec OSC-CLI utilisez les étapes suivantes :
-
Lancez la commande suivante, en remplaçant
EMAILetPASSWORDpar l’e-mail et le mot de passe de votre compte OUTSCALE :Terminal window osc-cli api ReadAccessKeys --authentication-method "password" --login "EMAIL" --password "PASSWORD" -
Ensuite pour configurer OSC-CLI suivez les étapes suivantes :
- Dans votre répertoire d’utilisateur
/home/[user], créez un répertoire.osc.
Terminal window mkdir /home/[user]/.osc- Dans
.osc, créez un fichier nomméconfig.jsonavec le contenu suivant :
Terminal window {"default": {"access_key": "ACCESSKEY","secret_key": "SECRETKEY","host": "outscale.com","https": true,"method": "POST","region_name": "eu-west-2"}}Si nécessaire, remplacez
eu-west-2par la région de votre compte. Remplacez égalementACCESSKEYetSECRETKEYpar l’ID d’access key et la secret key correspondante de votre compte. - Dans votre répertoire d’utilisateur
-
Activez l’auto-complétion.
Terminal window source <(osc-cli --bash_completion) -
Testez votre configuration.
Terminal window osc-cli fcu DescribeInstances
Utiliser osc-cli
Section intitulée « Utiliser osc-cli »Dans la partie ci-dessous, on va démontrer la flexibilité et la force de osc-cli
pour gérer vos ressources OUTSCALE Cloud. Par exemple, on va procéder à la
création d’une instance (VM).
-
Installez
jqpour traiter les réponses JSON de OSC CLI.Terminal window sudo apt install -y jq -
Créez une keypair avec cette commande qui va créer le contenu de la clé dans un fichier
mykey.pemTerminal window osc-cli fcu CreateKeyPair --KeyName mykey | \jq -r '.CreateKeyPairResponse.keyMaterial' > mykey.pem -
Créez un security group
Terminal window osc-cli fcu CreateSecurityGroup --GroupName SGsshaccess \--GroupDescription "ssh sg access" -
Ajouter pour cette security group une règle pour autoriser l’accès SSH
Terminal window osc-cli fcu AuthorizeSecurityGroupIngress --GroupName SGsshaccess \--CidrIp 0.0.0.0/0 --FromPort 22 --ToPort 22 --IpProtocol tcp -
Vérifiez et validez la création de la security group
Terminal window osc-cli fcu DescribeSecurityGroups --GroupName SGsshaccess -
Cherchez une image avec la commande suivante et récupérez l’Id de l’image:
Terminal window osc-cli fcu DescribeImages --Filter \'[{"Name": "owner-alias", "Value":["Outscale"]}, {"Name": "name", "Value":["Ubuntu-22.04-2025-*"]}]' \| jq -r '.DescribeImagesResponse.imagesSet.item.imageId'Cette commande devrait vous retourner l’ID de l’image (
ami-70f5d073) d’une OMI (OUTSCALE Machine Image) -
Lancez l’instance dans un VPC public
Terminal window osc-cli fcu RunInstances \--ImageId ami-70f5d073 \--KeyName mykey \--InstanceType tinav4.c1r1p2 \--SecurityGroup \["SGsshaccess"\] \--AvailabilityZone eu-west-2a \--MaxCount 1 \--MinCount 1 -
Récupérer l’Id de l’instance (VM) déployée.
-
Nommez votre instance avec les tags
Terminal window osc-cli fcu CreateTags \--ResourceId <Id> \--Tag.1.Key "Name" \--Tag.1.Value "mavm"Remplacez
<Id>par l’Id de votre instance : -
Vérifiez l’état de votre instance
Terminal window osc-cli fcu DescribeInstanceStatus \--InstanceId Id -
Récupérer l’IP publique de votre instance
Terminal window osc-cli fcu DescribeInstances \--InstanceId Id | jq -r '.DescribeInstancesResponse.reservationSet.item.instancesSet.item.ipAddress'Remplacez
Idpar l’id de votre instance. -
Accédez à votre instance
Terminal window chmod 600 makey.pemssh -i makey.pem outscale@PUBLICIPRemplacez
PUBLICIPpar l’IP récupérée précédemment. -
Quittez cette instance [CTRL] + [D]
Challenge
Section intitulée « Challenge »Effectuez les actions suivantes sur l’instance déployée :
- Arrêtez l’instance
- Démarrez l’instance
- Accédez à nouveau à l’instance via SSH
- Supprimez l’instance
Vous pouvez gérer vos ressources du Cloud OUTSCALE avec AWS CLI, une interface en ligne de commande (CLI) développée par Amazon Web Services. AWS CLI est compatible avec toutes les API AWS-compliant à l’exception d’Internal Call Unit (ICU).
Installer AWS-CLI
Section intitulée « Installer AWS-CLI »-
Quittez le répertoire utilisé dans la section précédente
-
Il est recommandé d’installer AWS CLI et ses dépendances dans un environnement virtuel Python (virtualenv), plutôt que directement sur votre système
-
Créez un dossier
awscli-envTerminal window mkdir awscli-env*Dans ce dossier créez un fichier
.envrcavec le contenu suivant :.envrc ##layout python3 -
Dans le dossier
awscli-env, lancez la commande suivanteTerminal window direnv allow -
Pour installer AWS CLI, utilisez l’url suivante et suivez les instructions concernant votre système d’exploitation (Linux/ubuntu).
https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
Configurez AWS CLI
Section intitulée « Configurez AWS CLI »Afin de configurer l’outil en ligne de commande aws, commencez par taper la commande suivante:
aws configureSpécifiez les éléments de configuration suivants:
AWS Access Key ID: Votre access key OUTSCALE.AWS Secret Access Key: Votre secret key OUTSCALE.Default region name: Le nom de la région du Cloud OUTSCALE que vous souhaitez utiliser.Default output format: Cet attribut doit être paramétré surjson(défaut).- Pour envoyer une requête à une API AWS-compliant, spécifiez dans votre commande :
- Le nom d’une API AWS qui est compatible avec les services OUTSCALE :
ec2pourFCUelbpourLBUiampourEIMdirectconnectpourDirectLinks3apipourOOS
- L’endpoint avec l’attribut
--endpoint. - Tout autre attribut requis par la commande.
- Le nom d’une API AWS qui est compatible avec les services OUTSCALE :
Ensuite testez et validez la configuration
aws ec2 describe-instances \--endpoint https://fcu.REGION_NAME.outscale.com- Remplacez
REGION_NAMEpar la région utilisée, par exempleeu-west-2
TIPS
Lors de la configuation de aws cli, un fichier de configuration est crée dans /home/[user]/.aws/config.
Via ce fichier il est possible d’éviter de préciser l’option --endpoint chaque fois que l’on utilise la commande aws.
Pour cela, créez une section [services <mes_services>] avec les informations suivantes:
[services <mes_services>]s3 = endpoint = https://oos.<region>.outscale.com # bien respecter l'espace en début de ligneec2 = endpoint = https://fcu.<region>.outscale.com # bien respecter l'espace en début de ligne...
[profile <mon_profile>]region = <region>services = <mes_services>...Remplacez <region> par le région sur laquelle vous travaillez. Avec cette configuration, il n’est plus nécéssaire d’utiliser l’option --endpoint à chaque appel de la commande aws.
Challenge
Section intitulée « Challenge »Déployez une instance en utilisant la commande aws avec l’image, le security group et la keypair utilisée pour osc-cli plus haut dans ce TP.
Le SDK Python OSC
Section intitulée « Le SDK Python OSC »Dans cette partie on va découvrir l’utilisation d’un SDK pour gérer vos
ressources sur le Cloud Outscale, en l’occurrence osc-sdk-python le kit de
développement logiciel Outscale pour Python.
Cette SDK facilite l’intégration de vos applications, bibliothèques ou script Python aux services de 3DS Outscale.
Installation du SDK
Section intitulée « Installation du SDK »-
Quittez le répertoire utilisé dans la section précédente
-
Il est recommandé d’installer ce SDK et ses dépendances dans un environnement virtuel Python (virtualenv), plutôt que directement sur votre système
-
Créez un dossier
osc-sdk-envTerminal window mkdir osc-sdk-env -
Dans ce dossier créez un fichier
.envrcavec le contenu suivant :.envrc ##layout python3 -
Dans le dossier
osc-sdk-env, lancez la commande suivanteTerminal window direnv allow -
Installez ce SDK
Terminal window pip install osc-sdk-python -
On va utiliser ce script python qui utilise ce SDK pour implémenter un programme qui va lister les ID des instances et volumes de votre compte Outscale. Voici le contenu du script nommé
monscript.py:from osc_sdk_python import Gatewayaccesskey=""secretkey=""region=""if __name__ == '__main__':gw = Gateway(access_key=accesskey, secret_key=secretkey, region=region)print("your virtual machines:")for vm in gw.ReadVms()["Vms"]:print(vm["VmId"])print("\nyour volumes:")for volume in gw.ReadVolumes()["Volumes"]:print(volume["VolumeId"]) -
Complétez le script avec les valeurs de
secretkey,accesskeyetregion -
Lancez ce script
Terminal window python monscript.py