Utiliser l’object storage OVH via OpenStack

OVH offre maintenant depuis quelques années la possibilité d’utiliser de l’object storage au sein de projet public cloud. Ce service d’object storage se veut très proche du très connu S3 d’AWS. L’intérêt principal de l’offre d’OVH est de proposer un prix de stockage du GO bien moins élevé (environ 0.01 € / mois/GO contre 0.022 $ / mois / GO) que celui d’AWS et également l’assurance d’utiliser un service basé en France dans une société Française.
L’object storage d’OVH est basé sur OpenStack SWIFT, donc l’API est celle d’OpenStack  mais une compatibilité avec l’API S3 est proposée. Après plusieurs essai et des librairies d’accès différentes (Apache jCloud, ..) j’ai finalement réussi en utilisant openstack4J (https://github.com/openstack4j/openstack4j/), il faut dire que la documentation proposé par OVH est très très light et qu’il est très difficile de trouver des exemples fonctionnant. Si on compare à la documentation fourni par AWS sur l’utilisation de son SDK on est à des années-lumières.

1 – Création du projet cloud

La première étape consiste à créer un projet cloud dans l’interface manager d’OVH. Pour cela il suffit de renseigner un moyen de paiement ainsi que le nom du projet.

L’activation du projet peut prendre un peut de temps, ovh va valider le moyen de paiement avant d’autoriser l’utilisation des ressources.

2 – Création d’un objet storage container

Lorsque le compte est activé il est possible d’accéder à l’ensemble des fonctions de l’environnement public cloud :

En sélectionnant Object storage il sera possible de suivre le processus de création d’un container. Les options sont :

  • La localisation régionale du container : Beauharnois (Canada), Frankfurt (Allemagne), Gravelines, Strasbourg, Londres, Varsovie
  • Le type de container : static (pour l’hébergement web), private (pour un accès privée), public. Nous utilisons un container private dans la suite.
  • le nom qui permettra de le retrouver dans la liste et qui sera utilisé ensuite pour dans le code pour stocker les fichiers

3 – Création du user OpenStack et accès horizon

La suite des opérations est la partie sur laquelle il est le plus difficile de trouver de la documentation. Dans le menu de votre projet public cloud, tout en bas cliquer sur User & Roles

Dans l’écran qui s’affiche cliquer sur create user, et dans la popup donner une description à votre user, et ensuite sur l’écran suivant choisir le niveau d’habilitation. Normalement ObjectStore Operator est suffisant (j’ai moi-même ajouté plus de droits car j’avais besoin de faire plus que d’accéder au stockage d’objet).

Dans la liste cliquer sur les … correspondant à l’utilisateur créé :

Et là choisir le menu « Generate a Password ». Le password généré apparait en haut de la liste (Conservez bien ce mot de passe !). Cliquer ensuite sur Launch Openstack Horizon et connectez-vous avec le user créé et le password généré.

Dans l’interface horizon, en haut à gauche bien choisir dans la liste la région sur laquelle le container d’objet a été créé. Normalement celui-ci apparait dans la liste.

Maintenant on va récupérer les éléments de configuration qui seront indispensable pour se connecter via l’API. En haut à droite, cliquer sur le menu du user et choisir de télécharger le fichier OpenStack RC File V3 :

Le fichier téléchargé est un shell linux permettant de se connecter directement à l’openstack OVH, nous allons l’utiliser pour piocher les paramètres qui nous intéressent.

4 – Connexion au container avec l’API openstack4J

L’api openstack4j est disponible sur github : https://github.com/openstack4j/openstack4j/. Dans un projet maven il suffit de rajouter la dépendance suivante à son pom.xml :

Le code java pour se connecter est le suivant :

Les paramètres du code java à aller chercher dans le fichier de config sont :

  • domainName est chargé en partant de la variable OS_USER_DOMAIN_NAME
  • endPoint correspond à la variable OS_AUTH_URL
  • user correspond à OS_USERNAME (ou également le user d’accès à horizon)
  • password correspond au password généré pour l’accès à l’interface horizon
  • projetcid correspond à OS_PROJECT_ID
  • region correspond à OS_REGION_NAME

5 – Charger un fichier dans le container

Cette étape nécessite juste de conserver le nom du container qui a été créé dans l’interface ovh, il sera passé en paramètre à la méthode de chargement :

0 Comments

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.