# Cloudinventory

## Inventaire Cloud

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-025b07f8d6814d9159638c9fa25f54aabd628bdc%2Fproviders.png?alt=media" alt="images/providers.png"><figcaption></figcaption></figure>

## Prérequis (auto-hébergé)

| Version GLPI | PHP minimum | Recommandé |
| ------------ | ----------- | ---------- |
| 10.0.x       | 8.1         | 8.2        |
| 11.0.x       | 8.2         | 8.4        |

{% hint style="info" %}
Une souscription [GLPI Network BASIC](https://services.glpi-network.com/#offers) (ou supérieur) est requis. Ce plugin est également disponible pour toutes les instances [Cloud de GLPI Network](https://glpi-network.cloud).
{% endhint %}

## Installer le plugin

* Allez sur le marketplace. Téléchargez et installez le plugin **CloudInventory**.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-c5057c6597363f115c0e5952a308ee921740a6b3%2Finstall_plugin.png?alt=media" alt="images/install_plugin.png"><figcaption></figcaption></figure></div>

## À savoir

Les fournisseurs et types de ressources actuellement pris en charge sont :

* **OVHcloud**

  > * Instances Public Cloud
  > * VPS (Serveurs Privés Virtuels)
  > * Serveurs dédiés (Bare Metal)
* **Scaleway**

  > * Instances Compute (Machines Virtuelles)
  > * Serveurs Bare Metal
  > * Instances Apple Silicon
* **Amazon Web Services (AWS)**

  > * Instances EC2 (Elastic Compute Cloud)
* **Microsoft Azure**

  > * Machines Virtuelles
* **Google Cloud Platform (GCP)**

  > * Google Compute Engine (Machines Virtuelles)
* **Alibaba Cloud**

  > * Elastic Compute Service (ECS)

## Identifiants des fournisseurs

Chaque fournisseur peut être configuré individuellement via l'interface du plugin. La configuration comprend généralement :

* Les identifiants d'accès API (clés, secrets)
* Les paramètres de région, de projet ou d'abonnement

### OVH

#### Créer des identifiants

* Pour obtenir des identifiants, cliquez sur le lien suivant :
  * Pour l'Europe <https://eu.api.ovh.com/createToken/>
  * Pour l'Amérique du Nord <https://ca.api.ovh.com/createToken/>
  * Pour les États-Unis <https://api.us.ovhcloud.com/createToken/>
* Connectez-vous avec votre compte

<div align="left"><figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/connect_ovh.png" alt="" width="338"><figcaption></figcaption></figure></div>

Pour accéder au formulaire `Créer des clés API`

<div align="left"><figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/ovh_api.png" alt="" width="375"><figcaption></figcaption></figure></div>

* Remplissez les informations suivantes :
  * Un `Nom d'application` (obligatoire)
  * Une `Description d'application` (optionnel)
  * Une période de `validité`.
  * Les `Droits` pour restreindre l'utilisation de l'application à certaines API

    GLPI a seulement besoin du droit `GET` sur `*` (pour autoriser toutes les API OVHcloud)
* Après soumission, `OVH` vous fournira :
  * `Application Key`
  * `Application Secret`
  * `Consumer Key`

#### Configuration GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/provider_ovh.png" alt=""><figcaption></figcaption></figure>

### Amazon

#### Créer des identifiants

Consultez la documentation sur la gestion des identifiants : [Documentation des identifiants AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)

Ou suivez simplement ces instructions :

* Allez sur la page IAM et connectez-vous avec votre compte : [IAM](https://us-east-1.console.aws.amazon.com/iamv2/home#/home)
* Allez dans l'onglet Utilisateur : [Onglet Utilisateur](https://us-east-1.console.aws.amazon.com/iamv2/home#/users)
* Consultez cette page : [Page des identifiants de sécurité](https://us-east-1.console.aws.amazon.com/iamv2/home#/users/details/USER?section=security_credentials)

Après validation du formulaire, `Amazon` vous fournira les informations suivantes :

* `Application Key`
* `Application Secret`

#### Configuration GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/provider_amazon.png" alt=""><figcaption></figcaption></figure>

### Scaleway

#### Créer des identifiants

Consultez la documentation sur la gestion des identifiants : [Comment créer une clé API](https://www.scaleway.com/en/docs/identity-and-access-management/iam/how-to/create-api-keys/)

Ou suivez simplement ces instructions :

* Allez sur la console Scaleway et connectez-vous avec votre compte : <https://console.scaleway.com/login>
* Cliquez sur **Gestion des identités et des accès (IAM)** en haut à droite de votre [Tableau de bord d'organisation](https://console.scaleway.com/organization)
* Cliquez sur l'onglet **Clés API**.
* Cliquez sur **Générer une clé API**.
* Choisissez le **propriétaire** de la clé API (**utilisateur IAM** ou **application IAM**).
* Entrez une description (facultatif) et une date d'expiration pour la clé API.
* Sélectionnez si la clé API sera utilisée pour le stockage d'objets → choisissez **Non**

Après validation du formulaire, `Scaleway` vous fournira les informations suivantes :

* `Access Key`
* `Secret key`

#### Configuration GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/provider_scaleway.png" alt=""><figcaption></figcaption></figure>

### Google

#### Créer des identifiants

Consultez la documentation sur la gestion des identifiants : [Comment gérer votre clé](https://cloud.google.com/anthos/run/docs/securing/service-accounts?hl=fr)

Ou suivez simplement ces instructions :

* Allez sur la page [Comptes de service](https://console.cloud.google.com/iam-admin/serviceaccounts?hl=fr&_ga=2.193077034.605580056.1710501828-763263516.1710237390) dans la **Console Google Cloud**
* Sélectionnez le **Projet** sur lequel votre **Machine virtuelle** a été créée
* Créez un nouveau **Compte de service**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/google_service_account.png" alt=""><figcaption></figcaption></figure>

* Remplissez les informations requises, puis cliquez sur `Terminé`

<div align="left"><figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/google_service_account_details.png" alt="" width="442"><figcaption></figcaption></figure></div>

* Sélectionnez votre compte dans la liste

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/google_account_list.png" alt=""><figcaption></figcaption></figure>

* Choisissez le type JSON

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-87c8de30aa0c5d31219274b0fff67c0baa0618c7%2Fgoogle_create_key.png?alt=media" alt=""><figcaption></figcaption></figure>

Maintenant, votre fichier de clé a été téléchargé sur votre ordinateur

#### Configuration GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-0cea474253c902fcfdcc6387f6f8ba8a01ca59fd%2Fprovider_google.png?alt=media" alt=""><figcaption></figcaption></figure>

### Alibaba

#### Créer des identifiants

Consultez la documentation sur la gestion des identifiants : [Documentation des clés Alibaba Cloud](https://www.alibabacloud.com/help/en/ram/user-guide/create-an-accesskey-pair)

Ou suivez simplement ces instructions :

* Connectez-vous à la [console RAM](https://ram.console.aliyun.com/?spm=a2c63.p38356.0.0.4f8b4688KexBmn) et connectez-vous avec votre compte Alibaba Cloud.
* Survolez l'image de profil dans le coin supérieur droit de la page qui s'affiche et cliquez sur **Gestion des clés d'accès**.
* Dans le message de note, lisez les conseils de sécurité et cliquez sur **Utiliser la paire de clés d'accès actuelle**.

<div align="left"><figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-5eaf81c1b5033bcc76d4f71da3c2f45198d59716%2Falibaba_access_key_id.png?alt=media" alt=""><figcaption></figcaption></figure></div>

* Sur la page **Paire de clés d'accès**, cliquez sur **Créer une paire de clés d'accès**.
* Dans le message Créer une paire de clés d'accès, affichez l' **ID de clé d'accès** et le **Secret de clé d'accès**.

  *Vous pouvez cliquer sur Télécharger le fichier CSV pour télécharger la paire \*\*AccessKey\** ou cliquer sur **Copier** pour copier la paire **AccessKey**.\_
* Enfin, sélectionnez J'ai enregistré le **Secret de clé d'accès**.

#### Configuration GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-11e770eeafbc9a8302e6a35f060172d792359058%2Fprovider_alibaba.png?alt=media" alt=""><figcaption></figcaption></figure>

### Entra

#### Créer des identifiants

Comment obtenir votre `Tenant ID` et `Client ID`

* Allez dans votre Tenant et enregistrez une nouvelle application

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/entra_add_application.png" alt=""><figcaption></figcaption></figure>

* Allez dans Aperçu pour obtenir le `Tenant ID` et le `Client ID`

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/entra_overview_application.png" alt=""><figcaption></figcaption></figure>

* Allez dans `Certificats et secrets`
* Ajoutez un `Nouveau secret client`
* Définissez l'`expiration`
* Puis enregistrez

***

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/entra_secret.png" alt=""><figcaption></figcaption></figure>

La valeur `Secret` sera affichée (4)

{% hint style="warning" %}
La valeur du secret client ne peut pas être consultée, sauf immédiatement après sa création. Assurez-vous de sauvegarder le secret lors de sa création avant de quitter la page.
{% endhint %}

* Allez dans **`Abonnement`** > **`Contrôle d'accès (IAM)`** > **`Ajouter une attribution de rôle`**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/entra_add_roles.png" alt=""><figcaption></figcaption></figure>

* Recherchez `Microsoft.ClassicCompute`
* Sélectionnez `Lecteur`
* Puis `Suivant`

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-43320de1f055564702e14e171406f538b8c58985%2Fentra_add_reader.png?alt=media" alt=""><figcaption></figcaption></figure>

* Sélectionnez `cloudinventory` (application) précédemment créée
* Puis cliquez sur `Examiner + attribuer`

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-f5d903abda1898f5f7af954a5cf4909be46630cc%2Fentra_overview.png?alt=media" alt=""><figcaption></figcaption></figure>

#### Configuration de GLPI

Allez dans **`Administration`** > **`Inventaire Cloud`** > **`+Ajouter`**

<figure><img src="https://github.com/glpi-network/gitbook-fr/blob/main/doc-plugins/.gitbook/assets/provider_entra.png" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Dans certains cas, des `points de terminaison globaux` sont disponibles.

Si vous avez plus d'une zone, ou si vous ne savez pas où se trouvent vos machines, les `points de terminaison globaux` sont disponibles :

* `Tester tous les points de terminaison` regroupe tous les `points de terminaison`
* `Points de terminaison Europe uniquement` regroupe les `points de terminaison` situés en `Europe`
* etc.

Cela signifie que la synchronisation prendra plus de temps.
{% endhint %}

## Droits

Le plugin offre une gestion complète des droits.

Allez dans `Administration` > `Profils` > `Inventaire Cloud`

* **Fournisseur**
  * Lire
  * Mettre à jour
  * Supprimer
  * Purger
  * Lancer la découverte
* **InstanceCloud**
  * Mettre à jour
  * Synchroniser
  * Obtenir les données de l'API
  * Purger
* **Tableau de bord**
  * Voir le tableau de bord

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-99f4ab4266b188c347054a2db994629c1879e112%2Fright.png?alt=media" alt="images/right.png"><figcaption></figcaption></figure>

## Découverte

Maintenant que notre fournisseur a été créé dans GLPI, nous pouvons commencer à travailler sur l'inventaire cloud.

* Pour chaque fournisseur, vous pouvez déclencher manuellement la synchronisation ici :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-ddb033033a192383d3dc476bc919ae81313f0ade%2Fview_discovery.png?alt=media" alt="images/view_discovery.png"><figcaption></figcaption></figure>

* Vous pourrez visualiser la progression de la découverte.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-9d50254b98b61d15bd6f72618a070297bbbba321%2Frun_discovery.png?alt=media" alt="images/run_discovery.png"><figcaption></figcaption></figure>

* Ou simplement configurer les actions automatiques associées (vous pouvez filtrer par nom de fournisseur (par exemple, OVH)) (voir [CronTask](https://glpi-plugins.readthedocs.io/en/latest/cloudinventory/crontask.html))

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-774d7af9ac67c9efa3322254f935c786ea1808b6%2Fautomatic_discovery.png?alt=media" alt="images/automatic_discovery.png"><figcaption></figcaption></figure>

## Instance Cloud

Chaque actif cloud trouvé est enregistré dans le plugin sous un objet `CloudInstance`.

* Vous pouvez trouver la liste des `CloudInstance` ici :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-b778a361f3588222ec2a3d449b22772568a296d8%2Fview_instances.png?alt=media" alt="images/view_instances.png"><figcaption></figcaption></figure>

* Ou depuis le fournisseur (et l'onglet dédié)

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-f854cc4767ba334b72a8ebe09e7e91683b2f9fba%2Fview_provider_instances.png?alt=media" alt="images/view_provider_instances.png"><figcaption></figcaption></figure>

{% hint style="info" %}
L'action `refresh` vous permet d'exécuter manuellement la synchronisation pour une CloudInstance.
{% endhint %}

{% hint style="info" %}
Le statut de la *CronTask* associée est affiché (voir [CronTask](#crontask)). Un bouton permet de l'activer ou de la désactiver.

<img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-ea5044544cc4905a38f5c20bd3161ca2e44e9fa1%2Fautomatic_action.png?alt=media" alt="" data-size="original">
{% endhint %}

* Cliquez sur le lien `CloudInstance` pour obtenir plus d'informations :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-b76b98c08546cffbfbeee5a4d96f4953dc158fc7%2Finstance_details.png?alt=media" alt="images/instance_details.png"><figcaption></figcaption></figure>

{% hint style="warning" %}
Les `Cloud Instances` synchronisées sont automatiquement assignées à la même `entité` que le `Fournisseur` dont elles proviennent.
{% endhint %}

* **Ordinateur GLPI**
  * Ordinateur GLPI associé trouvé
  * Type de rapprochement pour cette *CloudInstance* (nom ou MAC)

{% hint style="info" %}
**Ordinateur GLPI inconnu**

Plusieurs raisons peuvent expliquer cela :

* L'ordinateur n'existe pas encore dans GLPI (vous pouvez alors installer l'agent GLPI pour le faire apparaître, puis redémarrer la découverte des instances cloud pour établir le lien).

* Le rapprochement (en utilisant la MAC ou le nom de l'instance cloud) n'a pas pu trouver d'ordinateur.

* Vérifiez que l'adresse MAC ou le nom existe dans GLPI.

* Vous pouvez sélectionner manuellement l'ordinateur correspondant (N'oubliez pas de verrouiller l'ordinateur pour éviter que la prochaine découverte n'écrase votre sélection).

* Contactez-nous pour améliorer la méthode de rapprochement.
  {% endhint %}

* **Fournisseur**
  * Nom du fournisseur (lien vers le formulaire du fournisseur GLPI)
  * Bouton pour synchroniser cette instance maintenant

* **Instance Cloud**
  * Nom de l'instance
  * Nom d'affichage de l'instance
  * ID de l'instance
  * ID du projet
  * Nom du projet
  * Modèle
  * État
  * Emplacement
  * Centre de données

* **Sauvegardes**
  * A une sauvegarde ?
  * État de la sauvegarde
  * Liste des sauvegardes
  * Planifiée

Une section finale, `Données API`, vous donne un accès direct aux informations de l'`API` pour l'`Instance Cloud` associée.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-f7dcca536afb0ef70c9fde565557aff966daf65e%2Finstance_api.png?alt=media" alt="images/instance_api.png"><figcaption></figcaption></figure>

## CronTask

Pour chaque fournisseur et chaque type d'instance, une tâche automatique dédiée permet une synchronisation régulière entre les données des API et les données de GLPI.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-ab7e38e6d95ad7b7bec38809f38cd3ef4ce73a8d%2Fcrontask.png?alt=media" alt="images/crontask.png"><figcaption></figcaption></figure>

## Recherche

Le plugin ajoute de nouveaux critères au moteur de recherche d'ordinateurs.

Depuis la liste des ordinateurs, il est possible de filtrer les résultats sur les données de la `CloudInstance` associée (si la `CloudInstance` y est liée).

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-f225e07c926b5740cebc63ff4f0a9b3078eb426e%2Fsearch.png?alt=media" alt="images/search.png"><figcaption></figcaption></figure>

## Tableau de bord

Le plugin `CloudInventory` propose un tableau de bord pour afficher un résumé des `CloudInstance`.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-e0cb5d6612d8778e7618e50d632acc295931e607%2Fdashboard.png?alt=media" alt="images/dashboard.png"><figcaption></figcaption></figure>

## Règles d'actifs

Le plugin ajoute de nouveaux critères aux `Règles métier pour les actifs`.

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-48895cadb0e248aee026b60e91b5c1bfe08a936a%2Frules_asset.png?alt=media" alt="images/rules_asset.png"><figcaption></figcaption></figure>

Chaque fois qu'un ordinateur est mis à jour (manuellement ou dynamiquement), s'il est lié à une `CloudInstance`, le moteur recevra les données suivantes (lorsqu'elles sont disponibles) :

* `Inventaire Cloud - ID de l'instance`
* `Inventaire Cloud - Nom d'affichage de l'instance`
* `Inventaire Cloud - Nom de l'instance`
* `Inventaire Cloud - Nom du projet`
* `Inventaire Cloud - A une sauvegarde`
* `Inventaire Cloud - État`
* `Inventaire Cloud - Emplacement`
* `Inventaire Cloud - Centre de données`
* `Inventaire Cloud - Type d'instance`

## Journal

Si le mode débogage est activé pour un fournisseur dédié :

<figure><img src="https://782257568-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJFKLcURHvFBybgf5dths%2Fuploads%2Fgit-blob-347935cf36565ae4b1eaeaee53cd82dc59359c6e%2Flog.png?alt=media" alt="images/log.png"><figcaption></figcaption></figure>

Un nouveau fichier journal sera automatiquement créé et contiendra diverses informations suite à l'exécution de la synchronisation.

Exemple : pour le fournisseur `Ovh` et la synchronisation `VPS`, un fichier nommé `ovh-{{instance-type}}-{{provider_name}}-error.log` sera créé dans le dossier `glpi/files/_log/` et contiendra les erreurs rencontrées lors de son exécution.

***

## FAQ

Si vous avez des questions concernant l'utilisation du plugin, n'hésitez pas à consulter notre FAQ

<a href="https://app.gitbook.com/s/VU1qbB9Oe25HAYDAQ4tR/plugins/cloud-inventory" class="button secondary">Aller à la FAQ</a>
