Bonjour,
aujourd’hui, je vais vous présenter comment bien utiliser GCP (Google Cloud Platform) afin de gérer l’utilisations des services de la plateforme.
J’adresse ce tuto au personne n’ayant que peut ou pas de connaissance GCP. Donc je vais employer des termes et des explications très simplifiées. Merci aux pros et experts d’être indulgent sur la simplicité.
1°) Présentation de GCP
GCP est la plateforme Cloud de google permettant aux particuliers et aux entreprises de gérer leurs services (Web, Serveurs, Réseaux etc…). C’est l’équivalent de AWS pour Amazon et Azure pour Microsoft.
Dans GCP, au niveau de Jeedom, beaucoup d’entre vous utilise déjà certainement les API Maps (Direction, Elévation, etc…).
Mais cette plateforme ce sert pas qu’a cela. Vous pouvez avoir des machines virtuelles, un réseaux totalement privé et disponible en haute disponibilité (si un serveur plante, des réplications peuvent prendre le relais), Scalable (Si pour une raison ou une autre, il vous manque des ressources, vous pouvez en créer à la volée), et Elastique (Vous pouvez ajouter des serveurs ou en enlever en fonction de la charge des serveurs automatiquement).
Cette plateforme possède également une fonctionnalité nommée cloud IOT permettant la gestion des appareils IOT avec une gestion MQTT. Cela peux être utile pour des objets distant. GCP fourni alors le serveur, et Jeedom peux ainsi utiliser GCP pour récupérer les données avec les plugins Mqtt.
Pour beaucoup de services, il existe (en gros) plusieurs possibilités de facturation, nottament le « Always Free »
Always Free, vous permet d’utiliser des resources GCP, jusqu’à un certain niveau de façon totalement gratuite.
Concernant la partie qui nous intéresse aujourd’hui nous utiliserons les services Cloud Storage et Pub/Sub.
Cloud Storage vous permet de bénéficier d’un stockage gratuit de 5Go par mois si vos données sont stockées dans une région Américaine. Cela ne signifie pas que vous devez obligatoirement être au USA pour en bénéficier. Cela ne signifie pas non plus que vous pouvez mettre 5Go + 5Go + 5Go mais que chaque mois votre stockage ne doit pas excéder les 5Go au total.
Cela suffit très largement pour y stocker de façon régulières vos sauvegardes Jeedom.
Si vous utilisez déjà des plugins dans Jeedom utilisant les API Maps, logiquement, vous avez déjà un compte GCP, et la facturation est activée. Dans le cas contraire, je vous invite à lire CE POST où je détaille la création d’un compte GCP, et la configuration de la facturation. Attention, vous ne payez rien au début. Si vous dépasser les limites de l’utilisation gratuites vous serez facturé. Lisez bien l’article afin d’éviter les mauvaises surprises.
La configuration se fait en 5 étapes :
1°) Création d’un « Bucket »
Un bucket est l’équivalent d’un espace de stockage.
Il est composé de répertoire (folder) et d’objets (les fichiers).
Dans le panneau de gauche ou avec la barre de recherche, rechezchez « Stockage »
Puis cliquer sur « Créer un Bucket »
Donner un nom à votre Bucket
Choisissez les options suivantes :
Type d’emplcement : « Region » (Un région est une zone géographique ou se trouve un ou plusieurs « emplacement ».
Emplacement : us-east-1 (C’est ici que c’est gratuit). Un emplacement comprend 1 ou plusieurs « Data center » (Les serveurs) appelé aussi Availability Zone (AZ). us-east-1 contient 3 AZ. Cela signifie que vos donnée seront automatiquement répliquer dans ces 3 datas centers. Si un des datas center brûle, vous ne perdrez donc pas vos données.
Type de stockage : Nearline
Il existe 4 type de stockages
Standard : Pour les données écrites et lues régulièrement (plus chère)
Nearline : Pour des sauvegardes régulières et qui peuvent être amenée à être utilisées 1 fois par mois. chaque fichier doivent OBLIGATOIREMENT être conservé 30 jours minimum (sinon c’est payant). Pour les sauvegardes Jeedom, il convient parfaitement. On peux conserver un historique de 30jours gratuitement. En cas de dépassement des 5Go, c’est moins chère que Standard.
Les autres ne sont pas adaptés à de la sauvegarde pouvant être utilisées régulièrement. Le dépots est moins cher mais la récupération des données peuvent faire monter la facture
Choisir un contrôle Ultraprecis. Cela permettra d’avoir un meilleur contrôle de la sécurité
Les données sur GCP sont chiffrées, on va utiliser la clé générée par Google (les clé KMS sont payantes)
On défini également une règle de conservation de 30 jours. Tous les fichier qui ont un age > à 30 jours seront supprimer afin de conserver de la place pour les sauvegarde à venir. Ne définissez pas un nombre de jours inférieur à 30 pour conserver une facture à 0.
Attribuer une ettiquette (Bonne pratique). Cela permettra également de faire un suivi de la facturation.
Votre bucket est créé.
En cliquant sur aperçu vous aurez la possibilité d’avoir un lien au format gs://XXX
Il sera nécessaire pour la configuration de Jeedom.
2°) Création d’un compte de service
Afin que Jeedom puisse écrire dans votre Bucket GCP, des critère d’authentification seront nécessaire.
Nous n’utiliserons pas le compte propriétaire par mesure de sécurité (bonne pratique).
Nous créerons plutôt un compte de service. Ce compte aura uniquement la possibilité de lire et d’écrire dans le Bucket.
Dans le panneau de Gauche chercher IAM et Admin, puis cliquer sur compte de service.
Cliquez sur créer un compte de service
Renseigner les champs
Noter qu’une adresse mail XXXX@Projet.iam.gserviceaccount.com va être créer dans votre compte. Elle sera utiliser par jeedom comme login de connexion.
Ajouter les rôles du compte de service
1°) Rôles Abonné Pub/Sub, sera utile plus tard
2°) Créateur des objets de l’espace de stockage. Permet d’écrire dans le bucket
Créer une clé d’authentification. Utilisée par Jeedom. C’est un fichier au format .json qui sera utiliser lors de la sauvegarde par Jeedom. elle est TRES importante
Conservez bien le fichier Json sur votre ordinateur
La configuration GCP est terminée.
3°) Installation et configuration Google SDK
a) Google sdk
Avant de se lancer dans la configuration de jeedom, il est nécessaire d’installer les outils GCP nécessaire. Il s’agit du google-cloud-sdk
sur armbian/raspbian :
# sudo apt update -y && apt install -y lsb_release apt-transport-https ca-certificates gnupg
# export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
# echo $CLOUD_SDK_REPO
cloud-sdk-VOTRE_VERSION
# echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" >> /etc/apt/sources.list.d/google-cloud-sdk.list
# curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# sudo apt update -y && sudo apt upgrade -y
# apt install -y google-cloud-sdk
Normalement, google-cloud-sdk est installé.
b) Initialisation de google-sdk
il va falloir faire cette opération avec le compte www-data de jeedom
$ sudo vi /etc/passwd (Modifier www-data en /bin/bash au lieu de nologin)
$ su www-data (pour se connecter avec l'utilisateur www-data)
# Activer l'utilisation du compte de service
$ gcloud auth activate-service-account jeedom-backup-svc@monproject.iam.gserviceaccount.com --key-file=jeedom-backup-svc-key.json
Activated service account credentials for: [jeedom-backup-svc@monprojet-gaston.iam.gserviceaccount.com]
$ gcloud init
Welcome! This command will take you through the configuration of gcloud.
Settings from your current configuration [default] are:
core:
account: jeedom-backup-svc@monproject.iam.gserviceaccount.com
disable_usage_reporting: 'True'
project: jeedom-gaston
Pick configuration to use:
[1] Re-initialize this configuration [default] with new settings
[2] Create a new configuration
Please enter your numeric choice: 1
Your current configuration has been set to: [default]
You can skip diagnostics next time by using the following flag:
gcloud init --skip-diagnostics
Network diagnostic detects and fixes local network connection issues.
Checking network connection...done.
Reachability Check passed.
Network diagnostic passed (1/1 checks passed).
Choose the account you would like to use to perform operations for
this configuration:
[1] jeedom-backup-svc@monproject.iam.gserviceaccount.com
[2] Log in with a new account
Please enter your numeric choice: 1
You are logged in as: [jeedom-backup-svc@monproject.iam.gserviceaccount.com].
Pick cloud project to use:
[1] monproject
[2] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 1
Your current project has been set to: [jeedom-gaston].
...
Vous avez configurer le compte à utiliser pour Jeedom
4°) Création du script pour la sauvegarde
Dans Jeedom, nous allons nous servir de l’événement Jeedom #end_backup# pour déclencher un scenario
Dans un premier temps, nous allons uniquement effectuer la sauvegarde. Dans un prochain post, je vous expliquerai comment utiliser Pub/Sub pour avoir un retour dans Jeedom.
Le scénario utilisera une commande pour appeler un script (avec le plugin Script).
Le script lancera simplement la commande :
gsutil mv /var/www/html/backup/backup* gs://uri-du-bucket
L’uri du bucket correspond à l’uri de la première étape (création)
Pour ma part je fais un mv, mais vous pouvez utiliser cp pour une copie sans effacer le fichier source
Pour tester, vous pouvez également lancer la commande à la main.
J’espère que cela vous sera utile.
Pour toutes difficultés ou éventuelles coquilles dans le post, n’hésitez pas à me contacter.
A la prochaine