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 indulgant sur la simplcité.
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
Exemple des API MAp : le free tiers est de 200$CAD (Désolé je parle en dollars car c’est ma monnaie), Mais c’est l’équivalent en euros.
Cela vous donne droit gratuitement, par exemple, à 20000 requêtes Direction (5$ pour 1000 requêtes) + 20000 Requêtes Geocoding (5$ pour 1000 requetes)
Exemple de machine virtuelles : Vous pouvez créer une machine ayant, a peu près les caractéristiques d’un raspberry pi 0 et l’utiliser gratuitement toute l’année. C’est gratuit. Utilise pour un petit service par exemple (serveur mqtt, mise à jour EPG).
Normalement, lorsque vous créer un nouveau compte, vous avez également droit à un crédit de 300$ pour la première année. Cela vous permet de tester les services google.
2°) La facturation
La première étape pour l’utilisation de GCP, est de créer un compte de facturation.
Je ne vais pas faire un tuto dessus, mais vous donner le lien de Google qui est très détaillé
Créer un compte de facturation GCP
Maintenant voyons comment créer des alertes pour la facturation.
Tout d’abord, afin de pouvoir interagir avec jeedom nous allons créer un Abonnement PubSub ainsi qu’un Abonnement à ce sujet.
PubSub est un service (avec du free tier) permettant à un autre service GCP de publier des informations sur un sujet (un peut comme mqtt). Sur ce sujet (Topic), on peux créer des abonnements afin de lire (pull) /écrire(push) les données.
Dans notre cas nous allons un « Topic » de facturation (ex : jeedom-billing) ainsi qu’un abonnement pull (ex : jeedom_tuto_billing_sub) qui sera utilisé par jeedom (via un scénario par exemple.
ATTENTION : le free tier dépend du nombre de requêtes que vous envoyez, recevez.
Dans la console, sur les panneau de gauche cher Pub/Sub et cliquer sur nouveau sujet.
Créer un nouveau sujet
Sélectionner les services / API que vous souhaitez.
Je vous conseille de créer des sujets en fonction de vos projets et API (Par exemple, un sujet pour la facturation des APIs MAP, et un autre sujet pour d’autres services). Pour ma part, j’ai un sujet pour un espaces de stockage pour mes sauvegardes Jeedom, 1 pour ma partie API Map et 1 pour la partie « Compute » que je n’aborderai pas ici.
Votre sujet est créer. Nous allons créer un abonnement pour ce sujet
Nommez le sujet, sélectionnez la méthode « PULL ». Vous pouvez laisser les autres valeurs par défaut, à votre guise
La partie Pub/Sub est configurée.
Nous allons créer des alertes de facturation.
Cherchez, dans la partie droite de la console Facturation, et cliquez. Vous aurez un écran similaire à celui ci.
Créez un budget
Nommez-le, et choisissez les API Map (ou tout autres services désirés)
Choisissez des seuils d’alerte. Lorsque ces seuils seront atteint, un mail sera envoyé au propriétaire du compte (dans le cas ou plusieurs personnes utilise ce compte).
Activez "Associer un sujet Pub/Sub à ce budget. Cela permettra de mettre à jour le sujet à chaque modification de la facturation. Cela permettra d’avoir une mise à jour régulière dans Jeedom. Sélectionnez le sujet et l’abonnement crées précédemment.
3°) Configuration pour Jeedom
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)
# gcloud init (Lancement de l'initialisation de google)
Welcome! This command will take you through the configuration of gcloud.
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).
You must log in to continue. Would you like to log in (Y/n)? <==== Y (on continue)
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?code_challenge=d4Lx_xh8p80wwzecsJ8izKtwcLnerKXAd-SYipZo8iY&p........
Enter verification code:
Ouvrez l’adresse dans votre navigateur, connectez-vous avec votre compte google et acceptez les conditions. La dernière fenêtre vous donnera un token d’authentification que vous devrez coller dans le terminal.
Pour ma part, j’ai créer un compte pour Jeedom. D’une part pour recevoir les mails spécifiques à la domotique sans pourrir ma boite mail, gérer les alertes, etc…
2eme avantage, ça créer un nouveau compte avec 300$ offert par google pour les services
Enter verification code: 4/yQGkrIYFRLI9ixaSo46ZldCDPr-n.............
You are logged in as: [jeedom.XXXXXXXX@gmail.com].
Pick cloud project to use:
[1] jeedomXXXXXXX
[2] latXXXXXXXXXX
[3] Create a new project
Please enter numeric choice or text value (must exactly match list
item): 1
Your current project has been set to: [jeedomXXXXXX].
Do you want to configure a default Compute Region and Zone? (Y/n)? Y
Une liste de région apparaît, sélectionnez la région où est stocké votre projet.
Si tout se passe bien, votre sdk est lié à votre projet jeedom.
Nous allons vérifier cela
# gcloud pubsub topics list
---
name: projects/jeedom-XXXXX/topics/jeedom-billing (vous devriez voir le sujet créer précédemment)
# gcloud pubsub subscriptions list
---
ackDeadlineSeconds: 10
expirationPolicy: {}
messageRetentionDuration: 43200s
name: projects/jeedom-XXXXXXX/subscriptions/jeedom_billing_pull (L'abonnement que vous avez créé)
pushConfig: {}
topic: projects/jeedom-XXXXXX/topics/jeedom-XXXXXX-billing
Si vous en être là, vous avez fini le plus difficile.
c) Configuration Jeedom
Avant tout nous allons nous déconnecter du compte www-data et le reconfigurer comme à l’origine
# sudo vi /etc/passwd (Modifier www-data en au nologin lieu de /bin/bash)
# exit
(on est de retour sur le compte root)
Pour faire simple, on va juste créer un script (plugin script, fichier .sh, cron, comme vous le souhaitez).
Pour ma part je le fait dans Jeedom avcec le plugin script :
Et un scénario tout simple :
Comme vous pouvez le voir, a la fin du scénario, je reboucle pour le relancer.
Comme expliqué plus haut, à chaque modification de la facturation (+ 200 requêtes comptabilisées, même dans le free tier (donc 0$), un Pub/Sub sera émis.) La boucle va permettre de vider la pile de l’ensemble des Messages envoyés.
J’ai créer un virtuel pour les récupérer les infos; et le tour est joué.
J’espère que cela va vous aider à y voir plus clair, et surtout vous permettre d’éviter les « surprises » de facturation.
N’hésitez pas à revenir vers moi pour de plus amples renseignements ou tout erreur que j’ai pu faire (J’ai fait ça rapido xd).
Au plaisir