Automatiser sur Oracle Cloud Infrastructure : Utilisation des REST API (1/3)
Introduction
L'interface d'Oracle Cloud Infrastructure permet d'accéder à l'ensemble des services du Cloud Oracle (Instances, Governance, Object Storage, Autonomous Database, Block Storage, ...). Cependant, pour contrôler efficacement les ressources de ces services, une solution d'automatisation, via des clients pour OCI, est parfois nécessaire afin de s'affranchir des limitations de l'interface graphique.
Quels sont les choix possibles de clients pour mettre en place cette automatisation ?
Il existe trois clients, proposés nativement par Oracle, pouvant offrir une telle solution :
OCI CLI : C'est une interface en lignes de commandes, basée sur python, qui permet d'administrer les services OCI. L'utilisation d'OCI CLI nécessite d'effectuer une installation du client depuis le github d'Oracle.
OCI SDK : C'est un kit de développement (disponible pour Java, Python, Ruby) permettant de développer des outils ou des applications pour s'intégrer aux services OCIs.
REST API : Les services OCI sont accessibles en utilisant une URL HTTPS à destination d'un REST Endpoint qui représente le serveur REST à contacter dans votre domaine OCI. REST API se base sur l'envoi de demandes vers ces URL HTTPS. Aucune installation particulière n'est nécessaire pour faire fonctionner les REST API.
Tous ces clients se basent sur une authentification sur OCI par une clef RSA et les identifiants OCI (OCID) des tenants, compartments, users et services.
C'est le client REST API que je vous propose de découvrir aujourd'hui.
Présentation REST API
Les URL REST API
Les commandes REST API vont donc contacter les services OCIs via une URL d'accès :
https://rest-server/endpoint
rest-server : il s'agit du serveur REST à contacter pour vos services OCI. Ce nom de serveur se compose généralement du nom du service OCI (database, objectstorage, ...) suivi du nom de la région.
Voici quelques exemples :
endpoint : C'est une adresse relative définissant le endpoint (le type de service) à atteindre. Elle est généralement composée de la version de l'API suivant du chemin de la ressource cible.
Voici quelques exemples :
# Pour les accès VCN
20160918/vcns
# Pour les accès aux bases Autonomous
20160918/autonomousDatabases
Les méthodes REST API
Il existe quatre méthodes différentes pour envoyer des commandes aux services OCI :
DELETE : Pour supprimer une ressource ou un objet dans OCI.
GET : Pour récupérer des informations sur une ressource spécifique dans OCI.
POST : Pour manager (créer, démarrer, arrêter) une ressource spécifique dans OCI.
PUT : Pour configurer une ressource spécifique dans OCI.
L'authentification REST API
L'accès aux services OCI se fait de manière sécurisée via le protocole HTTPS.
L'authentification se fait via un compte OCI disposant des droits nécessaires pour effectuer les opérations. La partie sécurité de cet accès s'effectue via les API Keys (déclaration de clef RSA).
Passons maintenant aux travaux pratiques !
Configuration REST API
Je dispose d'un tenant OCI sur la région de Frankfort et d'un compte d'accès. Je vais utiliser un serveur Linux qui me servira de client pour accéder aux différents services OCI via les REST API.
Génération d'une clef privée RSA
La première opération est de créer une clef RSA sur le serveur Linux. Cette clef servira à l'authentification vers OCI.
Nous allons créer un répertoire qui hébergera notre clef RSA privée ainsi que nos scripts REST API :
# mkdir ~/.oci
Ensuite, il nous faut créer une clef RSA 2018 bits au format PEM.
Le nom de la clef générée sera oci_api_key.pem :
L'étape suivante consiste à créer la clef publique (oci_api_key.pem) associée à notre clef privée.
C'est cette clef qui sera à uploader dans la console OCI :
Voici la procédure à suivre pour configurer, grâce à la clef publique, l'authentification sur OCI. Cette clef est à configurer au niveau de notre compte OCI dans la partie API key.
Voici comment procéder.
Connectons nous à la console Identity Management via la lien suivant (ici pour la région de Frankfort) :
Nous arrivons à la fenêtre de configuration des comptes OCI :
Choisissons ensuite le compte utilisateur où nous souhaitons créer notre API Key :
Cliquez sur le bouton "Add Public Key" et copiez le contenu de la clef publique générée dans la fenêtre :
La configuration de l'API Key est terminée.
Récupération des OCIDs
Pour l'accès aux services OCI, nous avons besoin de récupérer les différents OCIDs de nos ressources.
Nous devons récupérer le fingerprint de l'API Keys que nous avons créée.
Cette information est visible dans la fenêtre de détail de notre compte :
Nous devons récupérer notre user OCID (visible dans les informations principales de notre compte).
Vous pouvez utiliser le lien "Copy" pour le copier directement :
En dernier, il reste le plus important, le tenant OCID. Pour le trouver, il faut naviguer dans le menu principal dans "Administration > Tenancy Details".
L'OCID du tenant est disponible dans les informations du tenancy :
Installation d'OCI-CURL
Pour faciliter l'utilisation des REST API, Oracle propose un petit script bash à récupérer sur le lien suivant : https://docs.cloud.oracle.com/en-us/iaas/Content/Resources/Assets/signing_sample_bash.txt
Le principe est simple : Ce script contient une fonction oci-curl qui pourra être appelée en bash afin d'accéder aux services OCI en simplifiant la gestion des authentifications, notamment le renouvellement de tokens (pour plus d'informations, voir le lien : https://docs.cloud.oracle.com/fr-fr/iaas/Content/API/Concepts/signingrequests.htm)
Nous allons créer un nouveau répertoire nommé oci-curl et y télécharger ce fichier via l'outil curl.
Atttention, le fichier étant en UTF-8 , il est nécessaire d'y enlever le BOM (Byte Order Mark) :
# mkdir ~/oci-curl
# curl -L https://docs.cloud.oracle.com/iaas/Content/Resources/Assets/signing_sample_bash.txt | sed -e '1s/^.*#/#/' > ~/oci-curl/oci-curl.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 162 100 162 0 0 26 0 0:00:06 0:00:06 --:--:-- 46
100 4764 100 4764 0 0 780 0 0:00:06 0:00:06 --:--:-- 780
Une fois le téléchargement terminé, nous devons éditer ce bash (nommé oci-curl.sh) pour y inclure les différents OCIDs récupérés au chapitre précédent :
On donne ensuite les droits d'exécution à ce script puis nous le lançons afin de charger la fonction oci-curl sur notre session :
Exemple n°1 : Informations sur les bases Autonomous de notre compartiment
Pour récupérer ces informations, il nous faut préciser, en paramètres, l'OCID de notre compartiment et le nom du endpoint correspondant au service Database de notre région.
Ensuite, il suffit de lancer la fonction oci-curl avec ces éléments en utilisant la méthode GET :
Exemple n°2 : Informations sur les bases Autonomous de notre compartiment avec intégration de l'outil jq
jq est un outil permettant de manipuler du JSON. Il est très utilisé pour ses fonctions de formatage, de filtrage et de manipulation de données JSON.
Afin de faciliter l'utilisation des REST API, je vous propose de l'installer et de l'intégrer à nos exemples.
jq est téléchargeable sur le lien suivant : https://stedolan.github.io/jq/download/
Installons le :
L'utilisation des REST API est assez simple à mettre en place et à utiliser au quotiden. Toutes les actions de l'interface graphique OCI (et voir plus) sont disponibles via ces REST API. Il est très facile d'intégrer différents types de commandes (arrêt/ démarrage / provisonning / modification de configuration) dans des scripts afin d'automatiser vos différents process.
Pour avancer plus sur le sujet, la documentaion de réfrence des syntaxes REST API est disponible sur ce lien : https://docs.cloud.oracle.com/fr-fr/iaas/Content/API/Concepts/apiref.htm
Partage
Gardez un oeil sur tout
Recevez des notifications dès la publication d’un nouvel article et restez informé de l’actualité Cloud !
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.