
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


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

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

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«



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 :
[email protected]:~$ 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