Aller au contenu

Lab 05 : Utilisation de la CLI et le SDK OSC

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

Create VM wizzard

Vous pouvez installer OSC CLI sur la plupart des plateformes Linux, MacOS et Windows. Dans cette partie on va l’installer sur Linux.

  1. Assurez-vous que Python 3.6 ou ultérieur et pip3 sont installés sur votre machine.

    Terminal window
    $ python3 -V
    Python 3.8.10
  2. 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-venv
    curl -sfL https://direnv.net/install.sh | bash
    echo 'eval "$(direnv hook bash)"'>> ~/.bashrc
    source ~/.bashrc
  3. Créez un dossier osccli-env

    Terminal window
    mkdir osccli-env
  4. Dans ce dossier, créez un fichier .envrc avec le contenu suivant, puis installez direnv :

    .envrc
    cd osscli-env
    cat <<EOF >.envrc
    #
    #
    layout python3
    EOF
    sudo apt install -y direnv
  5. Dans le dossier osccli-env, lancez la commande suivante

    Terminal window
    direnv allow
  6. Installez le OSC CLI

    Terminal window
    pip3 install osc-sdk
  7. Validez l’installation de la CLI avec la commande

    Terminal window
    osc-cli --help

Pour utiliser osc-cli, il faut récupérer les accès à partir de votre compte OUTSCALE.

Avec OSC-CLI utilisez les étapes suivantes :

  1. Lancez la commande suivante, en remplaçant EMAIL et PASSWORD par 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"
  2. 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.json avec 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-2 par la région de votre compte. Remplacez également ACCESSKEY et SECRETKEY par l’ID d’access key et la secret key correspondante de votre compte.

  3. Activez l’auto-complétion.

    Terminal window
    source <(osc-cli --bash_completion)
  4. Testez votre configuration.

    Terminal window
    osc-cli fcu DescribeInstances

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

  1. Installez jq pour traiter les réponses JSON de OSC CLI.

    Terminal window
    sudo apt install -y jq
  2. Créez une keypair avec cette commande qui va créer le contenu de la clé dans un fichier mykey.pem

    Terminal window
    osc-cli fcu CreateKeyPair --KeyName mykey | \
    jq -r '.CreateKeyPairResponse.keyMaterial' > mykey.pem
  3. Créez un security group

    Terminal window
    osc-cli fcu CreateSecurityGroup --GroupName SGsshaccess \
    --GroupDescription "ssh sg access"
  4. 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
  5. Vérifiez et validez la création de la security group

    Terminal window
    osc-cli fcu DescribeSecurityGroups --GroupName SGsshaccess
  6. 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)

  7. 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
  8. Récupérer l’Id de l’instance (VM) déployée.

  9. 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 :

  10. Vérifiez l’état de votre instance

    Terminal window
    osc-cli fcu DescribeInstanceStatus \
    --InstanceId Id
  11. 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 Id par l’id de votre instance.

  12. Accédez à votre instance

    Terminal window
    chmod 600 makey.pem
    ssh -i makey.pem outscale@PUBLICIP

    Remplacez PUBLICIP par l’IP récupérée précédemment.

  13. Quittez cette instance [CTRL] + [D]

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

  1. Quittez le répertoire utilisé dans la section précédente

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

  3. Créez un dossier awscli-env

    Terminal window
    mkdir awscli-env

    *Dans ce dossier créez un fichier .envrc avec le contenu suivant :

    .envrc
    #
    #
    layout python3
  4. Dans le dossier awscli-env, lancez la commande suivante

    Terminal window
    direnv allow
  5. 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

Afin de configurer l’outil en ligne de commande aws, commencez par taper la commande suivante:

Terminal window
aws configure

Spécifiez les éléments de configuration suivants:

  1. AWS Access Key ID: Votre access key OUTSCALE.
  2. AWS Secret Access Key: Votre secret key OUTSCALE.
  3. Default region name: Le nom de la région du Cloud OUTSCALE que vous souhaitez utiliser.
  4. Default output format : Cet attribut doit être paramétré sur json (défaut).
  5. 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 :
      • ec2 pour FCU
      • elb pour LBU
      • iam pour EIM
      • directconnect pour DirectLinks3api pour OOS
    • L’endpoint avec l’attribut --endpoint.
    • Tout autre attribut requis par la commande.

Ensuite testez et validez la configuration

Terminal window
aws ec2 describe-instances \
--endpoint https://fcu.REGION_NAME.outscale.com
  1. Remplacez REGION_NAME par la région utilisée, par exemple eu-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 ligne
ec2 =
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.

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.

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.

  1. Quittez le répertoire utilisé dans la section précédente

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

  3. Créez un dossier osc-sdk-env

    Terminal window
    mkdir osc-sdk-env
  4. Dans ce dossier créez un fichier .envrc avec le contenu suivant :

    .envrc
    #
    #
    layout python3
  5. Dans le dossier osc-sdk-env, lancez la commande suivante

    Terminal window
    direnv allow
  6. Installez ce SDK

    Terminal window
    pip install osc-sdk-python
  7. 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 Gateway
    accesskey=""
    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"])
  8. Complétez le script avec les valeurs de secretkey, accesskey et region

  9. Lancez ce script

    Terminal window
    python monscript.py