3D Cloud Drive Icon

Introduction

L’objet Storage du public Cloud d’OVH est compatible avec l’API AWS S3 et nous permet donc de déployer un site static, comme nous pourrions le faire sur AWS.

Nous allons voir comment créer un Object Storage, configurer les accès en générant les clefs d’API S3 avec OpenStack et enfin déployer nos fichiers static avec un job GITLAB.

Création de l’Object Storage sur l’interface d’OVH Public Cloud

publier_site_statique_object_storage_ovh_s3
publier_site_statique_object_storage_ovh_s3

Une fois sur la page « Object Storage » cliquez sur “Créer un conteneur d’Object”.

publier_site_statique_object_storage_ovh_s3

Sélectionnez Standard, la région que vous souhaitez puis Cloud Publique

publier_site_statique_object_storage_ovh_s3

Création de l’utilisateur

Afin de créer un utilisateur pour accéder au Storage, rendez-vous sut Utilisateurs de stratégies S3, puis Ajouter un utilisateur.

Les permissions nécessaires sont « ObjectStore Operator« 

publier_site_statique_object_storage_ovh_s3
publier_site_statique_object_storage_ovh_s3
publier_site_statique_object_storage_ovh_s3

Vous pouvez ensuite téléchargez le fichier RC d’OpenStack et transférez le sur votre machine

Installation du client OpenStack

Afin d’interagir avec un Object Storage OVH, vous devez préalablement installer sur votre machine le client openstack ainsi que le client aws et son plugin d’endpoint.

Pour cela, vous devez utiliser ces commandes:

pip install python-openstackclient
pip install awscli awscli-plugin-endpoint

Initialisation de l’environnement

Cette étape nécessitera l’utilisation du fichier OpenRc téléchargé au préalable.

Vous devez seulement exécuter celui-ci :

sh openrc.sh

Puis entrez le mot de passe de votre utilisateur.

Une fois la procédure terminée vous pourrez exécuter la commande suivante, afin d’avoir le résultat ci-dessous :

getinov@getinov:~$ openstack ec2 credentials create
+------------+----------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                      |
+------------+----------------------------------------------------------------------------------------------------------------------------+
| access     | <access>                                                                                                                   |
| links      | {u'self': u'https://auth.cloud.ovh.net/v3/users/<user_id>/credentials/OS-                                                  |
|            | EC2/<access>'}                                                                                                             |
| project_id | <project_id>                                                                                                               |
| secret     | <secret>                                                                                                                   |
| trust_id   | None                                                                                                                       |
| user_id    | <user>                                                                                                                     |
+------------+----------------------------------------------------------------------------------------------------------------------------+

WARNING :Si cet sortie ne s’affiche pas, vérifiez que vos variables d’environnements configurées dans le fichier openrc aient bien été exportées.

Maintenant que vous avez obtenu tous vos identifiants, vous allez pouvoir configurer le client AWS.

Pour cela créez à la racine de votre utilisateur un dossier .aws avec dedans le fichier config suivant :

[plugins]
endpoint = awscli_plugin_endpoint

[profile default]
aws_access_key_id = <access>
aws_secret_access_key = <secret>
region = <Cloud Region>
s3 =
  endpoint_url = https://s3.<cloud region>.cloud.ovh.net
  signature_version = s3v4
  addressing_style = virtual
s3api =
  endpoint_url = https://s3.<cloud_region>.cloud.ovh.net

Commandes à retenir

PS: Dans la suite de l’article sera mentionné les buckets, c’est également le nom des Object Storage.

Obtenir la liste des buckets :

aws --profile default s3 ls

Créer un bucket:

aws --profile default s3 mb s3://bucket_name

Envoyer un fichier local:

aws --profile default s3 cp file.txt s3://bucket_name/file.txt

Supprimer un fichier dans un bucket:

aws --profile default s3 rm s3://bucket_name/file.txt

Télécharger un objet venant du bucket:

aws --profile default s3 cp s3://bucket_name/file.txt file.txt

Avoir la liste des fichiers présents sur le bucket:

aws --profile default s3 ls s3://bucket_name/

Supprimer un bucket:

aws --profile default s3 rb s3://bucket_name

Paramètres utiles

Lors de l’utilisation d’un S3 ne venant pas d’AWS, vous devrez utiliser le paramètre :

--endpoint-url (url endpoint)

Création du job GitLab

Voici une configuration type pour un GitLab CI, celui-ci utilise ces variables d’environnement :

S3_CREDENTIALS : Fichier de configuration trouvable dans le chemin ~./aws/config
BUCKET_NAME : Nom de l’object storage à utiliser
ENDPOINT_URL : Url du cloud publique utilisé (ex: https://s3.gra.cloud.ovh.net)

deploy:staging:
  stage: deploy
  image: 
    name: amazon/aws-cli:2.2.46
    entrypoint: ["/bin/sh"]
  dependencies: 
    - build:staging
  script:
    - mkdir -p ~/.aws
    - echo $S3_CREDENTIALS > ~/.aws/config
    - aws s3 cp ./build/ s3://$BUCKET_NAME/ --recursive  --metadata-directive REPLACE --cache-control max-age=0 --endpoint-url $ENDPOINT_URL
  when: manual
  environment:
    name: staging
    url: <front_url>
  only:
    - staging

Partager cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.