PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Test Orico DS500U3 : un boîtier USB avec 5 baies

mercredi 23 octobre 2019 à 13:45

I. Présentation

Orico est une société proposant des accessoires et solutions autour du stockage, avec notamment des produits liés au rechargement et au transfert de données en USB. Dans leur catalogue, ils proposent différents modèles de boîtiers pour disques durs, avec plus ou moins de baies. Au travers de cet article, je vais vous présenter l’un d’entre eux, le boitier Orico DS500U3.

Ce modèle permet de connecter 5 disques durs en SATA 3.0. Il dispose d’une connectique en USB 3.0 (compatible UASP) qui fournit jusqu’à 5 Gbps de débit. Ce boitier permet de bénéficier d’une capacité de stockage maximale de 50 To (5 x 10 To). Il est dimensionné pour accueillir des disques au format 3,5 pouces mais il peut également accueillir des disques 2,5 pouces.

Remarque : ce boîtier se décline également en version 2 baies, ainsi qu'une autre version 5 baies avec une connectique USB-C.

II. Package et Design

Intéressons-nous maintenu au contenu du carton : le boitier Orico est fourni avec son câble d’alimentation, un câble USB Type-A/M vers Type-B/M et le manuel utilisateur (en anglais). Le constructeur ne fournit pas de logiciel d'installation/configuration.

 

Sur la façade, il y a 6 voyants. Le voyant à droite s’allume à la mise sous tension du boitier. Les autres voyants servent à indiquer la présence d’un disque dur pour chacune des baies. Les voyants clignotent pour indiquer que les disques sont en activités. Ils restent fixes en cas d'inaction.

Le couvercle du boitier est noir brillant tandis que le reste est mate. La fermeture du couvercle est magnétique. Il y a un aimant dans chaque angle de celui-ci, ce qui présente l'avantage de ne pas nécessiter d'outil pour ajouter ou retirer un disque du boîtier.

A l’arrière du boitier il y a le port d’alimentation avec le bouton marche/arrêt et le port USB. Des alvéoles d’aérations sont aussi présentent, tandis qu'un ventilateur est installé sous le boitier directement afin d'assurer une bonne aération. A noter que ce boitier ne dispose d'aucune fonctionnalité réseau (port réseau ou wifi).

Le boitier est compatible avec Windows, Mac et Linux mais son utilisation d'un système vers un autre dépend du système de fichiers, forcément.

III. Utilisation du boitier

Pour ce test je souhaitais mélanger les types de disques (SSD et disques durs 7200tr/min) en utilisant la fonction de tiering. Cette fonctionnalité n'est malheureusement pas disponible sous Windows 10. Elle l'est seulement sur les versions serveurs.

J’ai donc à ma disposition 5 disques durs 3,5 pouces Seagate Barracuda, d'une capacité de 1 To et qui tournent à 7200 tr/min.

L’objectif du test est de créer un Storage Space sous Windows 10 regroupant mes 5 disques durs avec une résilience en mode parité, ce qui me protège en cas de défaillance d’un des disques.

Pour commencer il faut connecter les disques dans le boitier (étant Plug and Play les disques peuvent être connectés à chaud).

Une fois le boitier démarré et connecté en USB, mes 5 disques apparaissent séparément dans le gestionnaire des disques Windows.

Je peux maintenant créer un Storage Space avec mes 5 disques en mode parité.

Mes 5 disques forment désormais un volume unique. Cela me donne une capacité de stockage de 3 To.

👉 Au niveau des performances :

Avec cette configuration le boitier affiche environ 250 Mb/s en lecture et environ 70 Mb/s en écriture. J’ai également réalisé un test avec un disque seul dans le boitier et les performances étaient d’environ 200 Mb/s en lecture et en écriture.

Les performances vont forcément varier en fonction de la configuration choisie (fonctionnement en RAID ou non) et des disques durs utilisés (disques 5400 tr/min, 7200 tr/min ou SSD). Avec cette méthode mon volume sera détecté sur d’autre PC fonctionnant avec Windows 10.

A noter que s'il n'y a pas d'activité pendant 30 minutes le boitier se met en veille afin d’économiser de l’énergie, mais aussi étendre la durée de vie des disques durs.

IV. Conclusion

Pour conclure, avec un prix d’environ 140 euros l’Orico USD500U3 et ses 5 baies vont vous permettre d’avoir une alternative plus économique financièrement par rapport à un NAS avec les mêmes capacités (5 baies, notamment).

Je vous donne en plus quelques exemples d'utilisation du boitier :

Je me permet une dernière remarque. A mon avis, ce boitier n'est pas fait pour être mobile (utilisé comme "gros" disque dur externe). Cela reviendrait à se balader avec son serveur NAS sous le bras ce qui n'est pas très pratique 😉

A l'occasion de notre test, achetez ce boîtier à 111,99€ au lieu 139,99€ grâce au code "7DADRM33", valide jusqu'au 31/10/2019.

Si vous êtes intéressé plutôt par la version 2 baies, elle est proposée à 47,99€ au lieu de 59,99€ avec le code "CC9LBSGB" qui s'applique également sur Amazon : 📌 Orico 2 baies

En résumé :

👍 Points positifs

👎 Points négatifs

Test Deebot Ozmo 920 : complet et séduisant à la fois

mercredi 23 octobre 2019 à 08:10

I. Présentation

Dans la continuité des aspirateurs robots précédemment testés, je vous propose le test du Deebot Ozmo 920, membre de la gamme de produits Deebot Ozmo. Il s'agit du tout nouveau modèle du fabricant Ecovacs ! 👍

Ce modèle est hybride : il réalise l'aspiration comme les modèles classiques, mais il effectue également un nettoyage à l'eau en même temps.

Note : Cette marque n'est pas forcément très connue dans le domaine du high-tech mais en ce qui concerne les aspirateurs robots, Deebot à sa place dans les rayons de grandes enseignes comme Boulanger.

Afin de mieux faire connaissance avec cet appareil, voici ses caractéristiques :

- Aspirer et laver en un seul passage
- Navigation laser (LDS)
- Puissance d'aspiration : 2 niveaux, maximum 1 200 Pa
- Auto-boost sur les tapis
- Fonctionnalités de cartographie sur l'application
- Compatible Amazon Alexa et Google Assistant
- Autonomie : 110 minutes
- Dimensions : 350 * 350 * 93 mm
- Bruit : 67 dB
- Capacité de la réserve à poussière : 430 ml

Nous reviendrons plus en détail sur ses fonctionnalités, ainsi que sur ses capteurs dans ce test.

II. Package et design

L'imposante boîte Deebot contient beaucoup d'informations quant au robot aspirateur, sur toutes les faces du carton. Nous remarquerons également la mention "Reddot design award winner 2019" pour récompenser le design de cet appareil. Deebot a également reçu cette récompense pour deux autres de ses appareils. Vous comprendrez pourquoi, car l'appareil est vraiment sympa !

Comme vous pouvez le constater sur les deux photos ci-dessous, tout est impeccablement rangé et protégé 👏

Nous retrouvons de nombreux éléments dans la boîte, voici un résumé :

Le réservoir d'eau a une capacité plus importante que le modèle Eufy que j'ai testé récemment, et nous avons deux blocs réservoirs distincts. Toujours en comparaison du modèle Eufy, il est à noter l'absence d'un tapis de sol en plastique, qui se rajoute sous la base pour éviter que le chiffon microfibre reste en contact du sol. Deebot indique dans ses consignes d'utilisation qu'il faut retirer le chiffon et vider le réservoir à la fin d'un nettoyage.

Le robot propose deux modes d'aspiration différents : l'un via la brosse principale (préinstallée) et similaire à ce que l'on retrouve sur les autres modèles, et un second bloc d'aspiration (voir photo ci-dessous), qui n'a pas de brosse donc l'aspiration s'effectue en direct.

Au niveau de la base, elle est compacte et sur l'arrière elle contient une partie creuse qui sert à enrouler le surplus de câble afin d'avoir une installation propre.

Intégralement noir, si ce n'est les quelques notes de gris comme autour du capteur laser, ou encore la mention DEEBOT, le dessus du robot est très brillant et l'effet miroir bien présent.

Les réservoirs sont distincts : le réservoir à poussière est accessible en levant le capot du robot, alors que le réservoir pour le lavage est directement accessible depuis le flan du robot. En complément, lorsque l'on soulève le capot, on peut accéder à l'outil de nettoyage (gris).

En dessous, nous retrouvons les deux emplacements pour les brosses latérales, ainsi que la roue centrale qui permet au robot de tourner. De chaque côté de cette route, nous retrouvons deux contacteurs pour la recharge sur la base prévue à cet effet. Le pare-chocs est sur l'avant du robot, et il fait un demi-cercle complet.

III. Installation, efficacité, autonomie, accessoires

A. Installation

Après avoir connecté la base et connecté le robot dessus en le rapprochant, nous pouvons l'allumer. Le bouton pour la synchronisation Wi-Fi est accessible en levant le capot, tout comme le gros bouton "On/Off" pour gérer l'alimentation de l'appareil. Notons également, et c'est pratique, l'intégration d'une poignet pour retirer facilement le réservoir.

L'application Ecovacs nécessite un compte, sur lequel nous allons associer le robot. Cette opération s'effectue simplement en scannant le QR code de l'appareil puis en suivant l'assistant ensuite, pour indiquer les paramètres Wi-Fi, par exemple.

B. Efficacité

En terme de fonctionnement, l'aspirateur robot va déterminer une zone à aspirer en dessinant les contours, pour ensuite la nettoyer. Par rapport aux autres modèles que j'ai pu tester (d'autres fabricants), ce modèle a tendance à dessiner des zones plus conséquentes. Je note qu'il y a une vraie logique et une cohérence dans les déplacements. Dans l'ensemble il est assez silencieux, enfin il faut dire aussi que cela dépend du mode choisi, par contre il y a des couinements assez désagréables par moment lorsqu'il y a un léger blocage.

Lorsqu'un nettoyage est déclenché, le robot va aspirer et laver au fur et à mesure, en un seul passage. Bien entendu, le lavage utilise l'eau du réservoir et le système s'enclenche grâce à une pompe intégrée au robot.

En réglant le débit d'eau sur "haut" et après 35 minutes de fonctionnement (33m²), il reste encore la moitié du réservoir d'eau. J'en ai profité pour utiliser une lavette jetable, comme vous pouvez le voir sur les deux photos ci-dessous. Deebot précise qu'il faut utiliser de l'eau sans produit additionnel, comme les autres fabricants en fait.

Note : le robot détecte la présence ou non d'une lavette, il sait donc s'il doit juste aspirer ou laver et aspirer.

Au sujet des deux options d'aspiration, voici ce qu'en dit Deebot :

Dans le même esprit que la technologie BoostIQ de chez Eufy, ce modèle adapte sa puissance d'aspiration lorsqu'il aspire un tapis pour mettre un coup de boost. Lorsque l'aspiration s'intensifie, on le sait rapidement, car le bruit est plus important. Lorsqu'il lave, il est capable de détecter un tapis pour ne pas réaliser l'action de lavage sur ce dernier.

Cet aspirateur robot est relativement compact, car il fait 93 mm de hauteur, ce qui est idéal pour se faufiler sous les meubles. D'ailleurs, il a pu accéder à des endroits où le robot Eufy L70 Hybrid ne pouvait pas aller. Il est conçu pour surmonter des obstacles de 2 cm de hauteur, pour ma part, je l'ai vu faire et il a tendance à "s'énerver" pour forcer le passage et passer par dessus l'obstacle. Il y arrive mais cela peut prendre quelques minutes.

Mise à part ça, je l'ai trouvé silencieux (60 dB (A) en mode normal) par rapport aux autres modèles que j'ai pu tester, et j'avoue que c'est agréable. Par contre, au niveau de la navigation je l'ai trouvé plus lent que certains modèles, mais au moins le nettoyage est bien réalisé.

C. Autonomie

Avec une autonomie évaluée à 110 minutes, c'est finalement insuffisant si vous avez une grande maison. Tout en sachant que cela est variable en fonction des paramètres sélectionnés, notamment la puissance d'aspiration. Dans ce cas précis, il est plus pertinent de s'orienter vers le modèle Ozmo 950 qui a plus grande autonomie.

La recharge est longue puisqu'il faudra compter 4 heures pour une charge complète, ce n'est pas négligeable.

IV. Contrôle de l'appareil

L'application ECOVACS Home est indispensable pour contrôler l'appareil et exploiter toutes ses fonctionnalités. Elle sert également à piloter son robot à distance, à partir du moment où vous êtes connecté à Internet avec votre smartphone (ou votre tablette). Une fonctionnalité nommée "Nettoyage continu" permet à toutes les tâches d'aboutir, c'est-à-dire que si le robot n'a plus de batterie, il va retourner à sa base se recharger, et lorsque la batterie sera pleine, il retournera finir la session de nettoyage. Par contre, j'ai constaté qu'il n'y avait pas de télécommande virtuelle (ni physique) pour permettre un nettoyage ou contrôle manuel.

📌 Technologie Smart Navi 3.0 : Pour optimiser les déplacements de l'appareil et permettre un meilleur contrôle, la cartographie réalisée par le robot peut être utilisée pour définir des zones à exclure, uniquement pour le lavage, ou à exclure complètement. Sur la carte, on peut faire un zoom avant/arrière et cela s'avère pratique pour dessiner avec précision les zones.

Pour aller encore plus loin avec le système de zones, l'application va préconfigurer des zones sur la carte, ce qui permet de lancer un nettoyage sur une zone prédéfinie très rapidement, sans devoir la dessiner. Super intéressant ! Par contre, ces zones ne sont pas ajustables ce qui est dommage. En complément, il est aussi possible de dessiner manuellement une ou plusieurs zones précises à nettoyer.

L'application intègre la gestion des cartes : si votre habitation dispose de plusieurs étages, il suffit de déplacer le robot et sa base d'étage en étage, et celui-ci va cartographier chaque étage de votre maison. La fonction localiser sert à le retrouver en cas de besoin, bon il faut déjà avoir une très grande maison pour en avoir l'utilité 😉

Comme c'est la grande mode, DEEBOT intègre le support d'Alexa et de Google Assistant pour piloter son robot à la voix grâce à votre enceinte Amazon Echo ou Google Home. Enfin, les mises à jour sont déployées directement en mode OTA à partir de l'application DEEBOT.

Cette association avec Alexa active des commandes, comme : "Alexa, demande à Deebot de commencer le nettoyage", "Alexa, demande à Deebot de retourner sur sa base", ou encore "Alexa, demande à Deebot de suspendre le nettoyage", ce qui peut s'avérer pratique.

Un bon point également, le support de la langue française pour la voix du robot, il faudra penser à faire la modification, car l'anglais est définit par défaut. Ces robots ayant tendance à communiquer pour annoncer la fin du nettoyage ou signaler un dysfonctionnement, il faut avouer que c'est plus agréable en français.

Pour finir sur le contrôle de l'appareil, sachez qu'il est possible de planifier un nettoyage, mais aussi de gérer la puissance d'aspiration et le débit d'eau. Une fonction "Ne pas déranger" sert à déterminer une plage horaire pendant laquelle le robot se fera discret : il ne reprend pas un nettoyage en cours s'il s'était arrêté pour se recharger, ne démarrage pas un nouveau nettoyage, mais aussi il ne parlera pas et les LED seront éteintes.

V. Conclusion

Ecovacs nous livre un beau produit avec ce Deebot Ozmo 920 qui est bien entouré : le package est très complet notamment avec des pièces de rechange, les lavettes jetables ainsi que les accessoires pour le robot. Le robot est plutôt classe, entièrement noir, avec des surfaces brillantes. Au niveau de l'apparence, il est top et bénéficie d'une très bonne qualité de fabrication !

Le nettoyage est efficace et la fonction de lavage apporte un complément à l'aspiration classique. Cependant, il faut garder à l'esprit que le lavage à l'eau ne lavera pas un sol sale, c'est plus un complément à l'aspiration pour apporter une finition au nettoyage. Finalement, c'est le même constat à chaque fois sur les appareils 2-en-1.

Concernant la partie applicative, l'initialisation est simple et rapide, ensuite au niveau de l'utilisation je dirais que la page d'accueil pour le contrôle de l'appareil est intuitive, par contre si l'on rentre dans les paramètres c'est un peu fouillis. Il aurait pu être intéressant de catégoriser les paramètres. Au-delà de cela, l'application Ecovacs Home est vraiment puissante notamment avec le système de zones et de cartes que j'ai beaucoup apprécié.

Le robot Ecovacs Deebot Ozmo 920 est un appareil très complet, qui se montre efficace et qui est accompagné par une application riche en fonctionnalités.

Cet appareil est disponible sur Amazon, au prix de 499,99 €, ce qui correspond au prix pour un modèle qui titille le haut de gamme comme celui-ci.

👍 Points positifs

👎 Points négatifs

Migration vers Microsoft 365 : Microsoft rachète Mover

mardi 22 octobre 2019 à 13:32

Afin de faciliter et d’accélérer la migration vers Microsoft 365, le géant Microsoft a acquis la jeune pousse Mover. Cette entreprise Canadienne, créée en 2012, est spécialisée dans la migration vers OneDrive et SharePoint.

Si vous utilisez un service Cloud comme Dropbox, Google Drive, Amazon S3, ou encore Box, et que vous souhaitiez migrer vers le couple OneDrive/SharePoint de Microsoft, alors Mover est là pour vous aider. L'objectif de Microsoft est d'utiliser le savoir-faire de Mover pour compléter ses outils de migration existants, à savoir SharePoint Migration et FastTrack.

De son côté, Mover compte parmi ses clients de grandes entreprises comme Symantec et AutoDesk. Concernant le montant de l'acquisition, celui-ci n'a pas été révélé.

Comment installer et configurer Puppet sous Linux ?

mardi 22 octobre 2019 à 09:20

I. Présentation

Je vous propose dans ce billet de vous présenter l’outil d’automatisation appelé Puppet. Il s’agit d’un outil de pilotage très pratique, permettant la centralisation et l’automatisation de la gestion des configurations des serveurs administrés. Ce mode de pilotage consiste à enregistrer de manière précise les informations décrivant les logiciels (ou dans le cadre d’une distribution Linux, les ressources telles que les packages, les systèmes de fichiers, les utilisateurs…), ainsi que le matériel d’une infrastructure, tout en les enregistrant de façon détaillée et pouvoir alors les reproduire autant de fois que nécessaire.

L’outil s’articule autour de deux couches, à savoir :

• un langage de configuration décrivant l’aspect des machine.
• une couche d’abstraction permettant à l’administrateur la mise en œuvre de configuration sur les différentes plateformes ou distributions du parc informatique.

L’administrateur peut ainsi coder la configuration de n’importe quel service, sous la forme de règles que Puppet peut alors contrôler et appliquer. Le logiciel est développé en langage Ruby et diffuse sous licence publique. Le grand intérêt de cette solution réside dans son support multi-plateformes (grâce au langage Ruby) et sa sécurité (basée sur la couche Transport Layer Security ou TLS et une mini PKI ou Public Key Infrastructure).

Par ailleurs, de nombreux développeurs ont partagé leurs codes sous forme de modules Puppet, au sein d’une forge, dont le développement reste ainsi très actif et favorise une mise en œuvre de la solution grandement facilitée. Le langage déclaratif Ruby est un grand contributeur du déploiement de la solution, car il permet la création et la gestion des modules, utilisant les ressources et les classes au sein de ses manifestes (il s’agit ni plus ni moins d’un synonyme pour le terme module), afin de définir les différents états d’un service ou d’une application.

Les utilisateurs de Puppet apprennent rapidement le fonctionnement de l’outil, car celui-ci reste intuitif et dispose d’un contrôle de code intégré. Il s’appuie sur un modèle client/serveur où les nœuds administrés synchronisent les configurations avec le serveur maître. Puppet se décompose en trois grandes fonctionnalités :

• le nœud maître appelé Puppet master
• les bases de données nécessaires à l’historisation appelé Puppet backend
• le panneau de visualisation central appelé Puppet dashboard

Pour pouvoir installer et utiliser Puppet, il est nécessaire de respecter les quelques prérequis suivants :

• disposer des droits d’administration.
• disposer d’une connexion à Internet opérationnelle et configurée.
• disposer d’un parc de serveurs à administrer (sinon ça n’est pas vraiment utile).
• faire très attention lors des modifications

En effet, une erreur dans la configuration de Puppet peut alors entrainer un blocage de l’ensemble des serveurs concernés et pas uniquement d’un seul serveur. On peut donc considérer un manifeste (aussi appelé module) comme l’empilement des trois couches suivantes :

• le système d’exploitation (au plus bas niveau)
• les applications (au niveau intermédiaire)
• les configurations (au plus haut niveau)

La représentation ci-dessous en découle donc, mettant en évidence la facilité d’utilisation selon les différents types de systèmes d’exploitation, de distributions ou d’équipements :

En résumé, l’architecture Puppet tourne autour de quatre grandes fonctions :

• le serveur principal (ou Puppet master)
• le serveur de bases de données (ou PuppeDB aussi appelé Puppet backend)
• le serveur de visualisation (ou Puppet dashboard)
• les clients (ou agents Puppet)

Aussi, de façon pragmatique, il convient d’installer en premier lieu Puppet master afin de le configurer et autoriser la gestion des agents. Ensuite, nous verrons comment installer la base servant à stocker les rapports, également appelée Puppet backend. Nous terminerons notre tour d’horizon avec la configuration du service de visualisation appelé Puppet dashboard, en fournissant quelques règles simples d’utilisation de la commande puppet.

REMARQUE : pour illustrer clairement les différentes fonctionnalités, nous adopterons une architecture à trois serveurs : un pour le Puppet master, un pour la Puppet backend et un dernier pour le Puppet dashboard. Dans notre exemple, il s’agit de trois machines virtuelles en CentOS6.8. Les clients, quant à eux, font partie d’un parc de serveurs en CentOS6, RedHat 6 ou CentOS7.

II. Installation et configuration de Puppet master

Pour cette partie, il faut alors installer le package puppet-server en utilisant le gestionnaire de package de la distribution sur laquelle on se trouve. Dans notre exemple, nous adopterons une distribution CentOS 6.

REMARQUE : entre la version CentOS6 et CentOS7 il existe une véritable rupture applicative. En effet, dans le premier cas, la version Puppet fournie est la version 3.8 alors qu’en CentOS7 il s’agit de la version 4. Comme on s’en doute les deux ne sont pas compatibles et seule, la version 3.8 pourra gérer les plateformes les plus anciennes.

Suite à cette remarque, il faut donc choisir judicieusement la version Puppet à activer sur le nœud maître. Afin de faciliter un peu les choses on peut autoriser le site http://yum.puppetlabs/com/el pour pouvoir se créer un dépôt et récupérer les différentes versions de l’outil, depuis le site officiel. Selon la version du nœud à administrer, on pourra ainsi récupérer l’une des deux versions Puppet agent ci-dessous:

# wget -nc --reject *.html -np -r http://yum.puppetlabs.com/el/7Server/products/x86_64/
# wget -nc --reject *.html -np -r http://yum.puppetlabs.com/el/6Server/products/x86_64/

Dans notre cas, nous opterons pour un dépôt constitué du fichier puppet.repo suivant, placé dans le répertoire /etc/yum.repos.d (où reposrv représente le serveur contenant l’ensemble des dépôts officiels de notre parc):

[puppet_products]
name= Puppet products $releasever - $basearch
baseurl=http://reposrv/repo/yum.puppetlabs.com/el/6Server/products/$basearch/
enabled=1
gpgcheck=0

[puppet_dependencies]
name= Puppet dependencies $releasever - $basearch
baseurl=http://reposrv/repo/yum.puppetlabs.com/el/6Server/dependencies/$basearch
/
enabled=1
gpgcheck=0

[puppet_devel]
name= Puppet devel $releasever - $basearch
baseurl=http://reposrv/repo/yum.puppetlabs.com/el/6Server/devel/$basearch/
enabled=1
gpgcheck=0

On peut alors procéder à l’installation du service Puppet sur le Puppet master via l’instruction suivante :

# yum install puppet-server puppet

Dès lors, on se retrouve alors avec une nouvelle arborescence /etc/puppet, dans laquelle on devrait alors découvrir les trois fichiers suivants :

puppet.conf : contenant la configuration utilisée par le logiciel, tant pour la partie cliente que pour sa configuration de serveur maître. On peut y préciser, entre autre, le nom du serveur Puppet, l’intervalle entre chaque demande des clients vers le serveur.

REMARQUE : la plupart du temps, la configuration par défaut convient parfaitement. Il est à noter que dans le cas du serveur maître, il faut le configurer à la fois en tant qu’agent mais aussi en tant que serveur. Donc, ce fichier contiendra deux rubriques, contrairement aux nœuds administrés qui n’en contiendront qu’une seule.

auth.conf : ce fichier spécifie les clients ou le nœuds pouvant accéder aux différents modules (ou manifestes). Par défaut, l’ensemble des nœuds auront accès à l’intégralité des modules.

Hors ces fichiers, il existe également deux sous-répertoires manifests et modules. Mais, nous ne les utiliserons pas tels que. En effet, nous préférons positionner un sous-répertoire environments, dans lequel nous placerons deux sous-répertoires :

• un sous-répertoire pour l’environnement de tests appelé staging
• un sous-répertoire pour l’environnement de production appelé stable

On aura ainsi la possibilité de tester dans un environnement dédié, l’ensemble des développements ainsi que le code, des différents manifestes réalisés. L’arborescence aura donc la présentation suivante :

ATTENTION : une ancienne version du package puppet-server existe également dans le dépôt EPEL. Il faut obligatoirement effectuer l’installation du package avec celui diffusé depuis le dépôt, mentionné ci-dessus, et référencé dans le fichier puppet.repo du répertoire /etc/yum.repos.d.

Il est possible avant installation de vérifier la version du package que l’on s’apprête à installer en exécutant la commande suivante :

# yum info puppet-server
Installed Packages
Name : puppet-server
Arch : noarch
Version : 3.8.7
Release : 1.el6
Size : 10 k
Repo : installed
…

Le service Puppet, au niveau du Puppet master s’exécute via le daemon puppetmasterd (le service, quant à lui s’appelle puppetmaster), sur le port TCP/8140, via l’utilisateur puppet, créé automatiquement dès l’installation du package. Les communications entre le serveur et les nœuds administrés sont chiffrées et fonctionnent au travers d’une PKI intégrée et d’un serveur de fichiers.

Contrairement aux autres services client/serveur, dans le cas de Puppet, c’est le client qui pousse les informations à l’intention du daemon puppetmasterd, grâce à la notion de "facter", permettant d’extraire sous forme de variables d’environnement les différentes caractéristiques du client. On pourrait donc représenter le protocole d’échange de la façon suivante :

ATTENTION : afin de ne pas perturber les échanges entre clients et serveur, il est fortement conseillé de désactiver tout service type SELinux ou AppArmor.

La PKI utilisée par Puppet sert à sécuriser les échanges entre le serveur et ses clients. Ces derniers réclament alors une signature de leur certificat auprès du Puppet master. Cela offre également la possibilité de révoquer ledit certificat à tout instant. Ce système est adossé au protocole REST (REpresentational State Transfer).

REMARQUE : il s’agit d’une architecture permettant de construire des applications web, utilisant les spécifications originelles du protocole http plutôt que de réinventer une nouvelle surcouche, comme le font les modèles SOAP et/ou XML-RPC. Si l’on détaille alors les échanges entre le client et son service, on pourrait schématiser les messages transmis comme ci-dessous :

On notera également que l’ensemble des machines (clients ou serveur) sont exprimées au format FQDN (Full Qualified Domain Name), nécessitant de fait, une déclaration officielle au sein d’un ou plusieurs serveurs de noms DNS. Il s’agit ni plus ni moins de la condition sine qua none pour que la PKI puisse fonctionner correctement.

Éditons maintenant le fichier de configuration puppet.conf et détaillons un peu les principales variables qui s’y trouvent. En premier lieu, on va voir deux sections :

• la section [main] décrivant les variables principales.
• la section [master] décrivant les variables propres au Puppet master.

Dans la section [main], on peut laisser les trois variables suivantes :

logdir décrivant l’emplacement des journaux de traces
rundir décrivant l’emplacement du fichier où est stocké le n° de processus (pid)
ssldir décrivant le répertoire où se trouvent le matériel de chiffrement SSL.

Par défaut, tout changement ou modification génère automatiquement un rapport situé sur le serveur maître, dans le répertoire /var/lib/puppet/reports. Mais, on peut tout fait choisir une autre destination en modifiant alors la variable reportdir. Au niveau de la rubrique [master], on devrait avoir les lignes suivantes :

[master]
# ssl_client_header = HTTP_X_CLIENT_DN
# ssl_client_verify_header = HTTP_X_CLIENT_VERIFY
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules
reports = store
# reports = puppetdb, http
ca = true
storeconfigs_backend=puppetdb
storeconfigs=false
# external_nodes = /etc/puppet/external_node
# node_terminus = exec

REMARQUE : les lignes commençant par le caractère ‘#’ représentent des commentaires. On peut les supprimer. La variable $confdir représente l’emplacement où a été installé Puppet. Dans notre exemple, il s’agit de /etc/puppet. De même, la variable $environments représente l’environnement staging ou stable (selon le cas). Elle sera renseignée en fonction des commandes appliquées.

Lorsque l’on n’utilise pas Apache, on peut désactiver les champs concernant SSL. Afin de s’assurer que le service Puppet fonctionne correctement, dans un premier temps, nous allons générer uniquement des rapports au format texte, impliquant le paramètre reports=store. Par la suite, on pourra commenter cette ligne et la remplacer par celle positionnée en dessous : reports = puppetdb, http.

A ce stade, on doit alors éditer le fichier site.pp se trouvant dans le répertoire /etc/puppet/environments/stable/manifests pour décrire la liste des nœuds à administrer en commençant par le Puppet master :

node srv-puppet {

}

Le daemon puppetmasterd peut alors être démarré en exécutant la commande ci-dessous :

# /etc/init.d/puppetmaster start

La vérification peut s’effectuer au travers de l’interrogation du port d’écoute du service grâce à la commande netstat :

# netstat -anp|grep 8140
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 896/ruby

Le Puppet master, comme nous l’avons déjà souligné est également client (ou agent) de sa propre architecture. C’est pourquoi, dans le fichier puppet.conf on doit également déclarer la configuration en tant qu’agent :

[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = srv-puppet.mydmn.org
report = true
environment = stable
runinterval = 30m
pluginsync = true

REMARQUE: contrairement à Ansible, Puppet nécessite un agent sur les clients pour dialoguer avec eux. Bien évidemment, le serveur maître est à la fois le maître et l'agent.

En tant que tel, on peut donc également interroger les certificats du serveur et vérifier que celui-ci est bien signé (c’est-à-dire préfixé par le symbole ‘+’ :

# puppet cert –la
…
+ "srv-puppet.mydmn.org" (SHA256) 80:8C:D4:…::93:CD (alt names: "DNS:puppet", "DNS:srv-puppet.mydmn.org", "DNS:srv-puppet.mydmn.org")

III. Installation et configuration de Puppet agent

Côté client, on peut installer le package puppet sur les deux premiers serveurs Puppet backend et Puppet dashboard, en exécutant l’instruction suivante (et en ayant au préalable ajouté le fichier puppet.repo dans /etc/yum.repos.d):

# yum install puppet

Le fichier de configuration puppet.conf se trouve également dans le répertoire /etc/puppet et on doit y déclarer les lignes suivantes :

[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl

[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = srv-puppet.mydmn.org
report = true
environment = stable
runinterval = 30m
pluginsync = true

On doit alors sauvegarder ce fichier et initialiser le service puppet afin de le rendre automatique lors des prochaines phases de redémarrage du serveur :

# chkconfig puppet on

REMARQUE : l’ensemble des mises à jour peuvent être exécutées manuellement grâce à la commande suivante :

# puppet agent -t

Dans le cas contraire, un délai de 30 minutes sera respecté entre chaque synchronisation, comme spécifié dans le fichier de configuration puppet.conf via la variable runinterval. Dans le cas où l’on veut tester ce mécanisme de façon automatique, on peut repasser cet intervalle à 1minute. En règle générale, cela devrait fonctionner. Mais, si l’on reçoit le message ci-dessous, c’est que l’on a oublié d’autoriser le port au niveau du pare-feu :

Info: Creating a new SSL key for srv-backend.mydmn.org
Error: Could not request certificate: No route to host - connect(2)
Exiting; failed to retrieve certificate and waitforcert is disabled

On doit alors autoriser le port TCP/8140 à traverser le firewall et exécuter la commande iptables suivantes :

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8140 -j ACCEPT

Comme on vient de modifier la configuration du pare-feu, on doit alors redémarrer le service iptables :

# service iptables restart
Dans le cas où la vérification se passe bien, on devrait recevoir un message du type "Exiting; no certificate found and waitforcert is disabled". Cela signifie que l’on peut manuellement signer le certificat des nouveaux clients :
# puppet cert -s srv-backend.mydmn.org srv-dashboard.mydmn.org

On notera que l’on peut signer les certificats de plusieurs clients en simultané, simplement en les passant les un après les autres sur la ligne de commande. A l’opposé, la révocation d’un certificat se fait en exécutant la commande ci-dessous :

# puppet cert -rc <Server FQDN>

De façon plus Générale, si l’on souhaite révoquer un certificat de façon définitive, il suffit d’exécuter la commande ci-dessous au niveau du Puppet master :

# puppet cert clean <Server FQDN>

Si on rencontre un problème avec le certificat d’un client, il suffit de se placer dans le répertoire /var/lib/puppet du client concerné et supprimer le sous-répertoire ssl afin qu’il soit automatiquement recréé lors de la phase de signature du certificat:

# cd /var/lib/puppet
# rm -fR ssl

REMARQUE: il faut se souvenir de correctement déclarer les clients au niveau des serveurs de noms DNS. Dans le cas contraire, l’automatisation ne fonctionnera pas correctement.

Lorsque l’on déclenche manuellement une première découverte du client, on obtient l’affichage suivant :

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find default node or by name with 'srv-backend.mydmn.org
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Cela s’explique par le fait que l’on ne dispose pas encore de fiche descriptive (même vierge), comme on l’a fait précédemment pour le serveur srv-puppet, au sein du fichier site.pp. On peut alors considérer avec ces deux configurations que le serveur Puppet master est prêt à fonctionner correctement. Mais, avant d’aller plus loin, il faut peut-être expliquer comment décrire un manifeste.

ATTENTION : à ce stade, on peut copier le fichier site.pp (du répertoire /etc/puppet/environments/stable/manifests/), dans le répertoire /etc/puppet/environments/staging/manifests afin de disposer de la même configuration que pour l’environnement de production.

IV. Création d'un nouveau module

Dans le cadre de Puppet, tout nouveau module doit disposer d’un fichier init.pp équivalent, placé dans le répertoire /etc/puppet/environments/stable/modules/<Module>/manifests. Ce fichier va alors décrire la ou les ressources à configurer. Ces dernières peuvent être :

• des packages
• des utilisateurs ou des groupes
• des fichiers
• des systèmes de fichiers
• des partitions
• des jobs
• des processus

Chaque répertoire de module doit contenir au minimum trois sous-répertoires :

• un répertoire manifests contenant le fichier init.pp de description
• un répertoire files contenant les fichiers manipulés
• un répertoire templates contenant les modèles des fichiers à manipuler

Lorsque l’on souhaite exécuter un test d’un module en particulier il est également possible de préciser l’environnement dans lequel on souhaite le faire :

# puppet agent -t --environments=staging

V. Tâche d'auto-signature et déclaration de modules

Afin de rendre Puppet encore plus pratique à utiliser, nous allons maintenant faire en sorte de signer automatiquement les certificats des nouveaux clients. Il s’agit effectivement d’une tâche répétitive qu’il est fortement conseillé d’automatiser au travers d’une tâche cron. Pour se faire, sur le Puppet master, on va générer un script puppet-autosigne (que l’on peut placer dans le répertoire /root/bin, servant à scanner l’ensemble des fichiers ‘srv-‘ disponibles et générer, dans la foulée, la signature du certificat associé :

#!/bin/bash
host=`puppet cert -la |grep -e srv- | grep -v "+" | awk {'print $1'}`
fqdn=`echo $host | sed -e 's/"//g'`
puppet cert -s $fqdn 2>&1 > /dev/null

la tâche planifiée crontab ne présente alors aucune difficulté. Il suffit simplement d’appeler le script précédent toutes les minutes permettant ainsi de scruter l’architecture Puppet à la recherche de nouveaux clients déclarés :

* * * * * /root/bin/puppet-autosign > /dev/null 2>&1

REMARQUE : il faudra adapter à vos besoins le filtre ‘srv-‘ en fonction du préfixe ou des noms données à vos serveurs. Par ailleurs, si l’on souhaite enrichir les fonctionnalités de Puppet, on peut aller sur le sorte de la forge https://forge.puppetlabs.com. On peut alors télécharger les fichiers tar.gz, les décompresser pour les placer dans le sous-répertoire modules de l’environnement souhaité.

En supplément de l’automatisation de la signature des certificats, on doit également déclarer une classe principale appelée classe ‘common’ permettant d’intégrer par défaut les principaux modules que l’on souhaite voir activés sur de nouveaux clients Puppet. Pour se faire, il faut éditer le fichier site.pp et y déclarer les lignes suivantes :

class common {
include base
include yum
}

# Serveurs Puppet
node srv-puppet {
class{'::common':}
}

node srv-backend {
class{'::common':}
}

node srv-dashboard {
class{'::common':}

Il ne reste plus alors qu’à initialiser les trois modules mentionnés ci-dessus :

• le module base permettant d’initialiser les packages principaux
• le module yum permettant de positionner les fichiers .repo nécessaires
• le module puppet permettant d’initialiser le package puppet

Pour le module base, on souhaite, par exemple disposer obligatoirement des packages wget et iotop, on devra alors déclarer dans le fichier init.pp (dans le répertoire /etc/puppet/environments/modules/base/manifests) les lignes suivantes:

class base {
  package { 'wget':
  name => wget,
  ensure => installed
}
package { 'iotop':
  name => iotop,
  ensure => installed
  }
}

En ce qui concerne le module yum, on souhaite positionner automatiquement les fichier .repo dans le répertoire /etc/yum.repos.d du client. Pour se faire, on va placer un exemplaire de ces fichiers dans le répertoire /etc/puppet/environments/stable/modules/yum/files et déclarer le fichier init.pp suivant :

class yum {
  file { "/etc/yum.repos.d/epel.repo":
  path => '/etc/yum.repos.d/epel.repo',
  source => [ "puppet:///modules/yum/epel.repo" ],
  }
  file { "/etc/yum.repos.d/puppet.repo":
  path => '/etc/yum.repos.d/puppet.repo',
  source => [ "puppet:///modules/yum/puppet.repo" ],
  }
  …..
}

Afin de sécuriser un peu plus chaque fichier manipulé, on peut ajouter la notion de group, mode et owner, permettant de préciser respectivement le groupe, les attributs (lecture/écriture/exécution) et le propriétaire du fichier :

  file { "/etc/yum.repos.d/epel.repo":
  path => '/etc/yum.repos.d/epel.repo',
  source => [ "puppet:///modules/yum/epel.repo" ],
  group => ‘0’,
  mode => ‘640’,
  owner => ‘0’
  }

Pour connaître les propriétés "facter" d’un fichier, il suffit simplement d’exécuter l’instruction suivante (par exemple, ici avec le fichier epel.repo):

# puppet resource file /etc/yum.repos.d/epel.repo
file { '/etc/yum.repos.d/epel_lan.repo':
ensure => 'file',
content => '{md5}fc7834fa379dc542830b7ef072fd0776',
ctime => 'Thu Sep 13 08:48:06 +0200 2018',
group => '0',
mode => '644',
mtime => 'Tue Oct 11 09:37:47 +0200 2016',
owner => '0',
type => 'file',
}

De façon plus générale, on peut aussi interroger l’ensemble des propriétés "facter" du serveur, en exécutant la commande ci-dessous :

# facter

REMARQUE : de la même façon que l’on a déclaré un module pour positionner les fichiers .repo dans le répertoire /etc/yum.repos.d, on peut également envisager de créer un module pour fixer les fichiers /etc/resolv.conf, /etc/hosts, etc.

VI. Initialisation du Puppet dashboard

Dans les grandes lignes, le serveur Puppet master est maintenant correctement configuré. Il est temps de s’intéresser à la configuration du serveur de visualisation (aussi appelé Puppet dashboard). Pour que le serveur WebUI puisse dialoguer avec son serveur de base de données le Puppet backend, il faut installer les deux packages suivants :

# yum install puppet-dashboard mysql

Le premier permet d’installer les deux programmes de l’interface graphique :

• le script puppet-dashboard qui est l’interface finale de l’application
• le script puppet workers qui est l’interface finale du Puppet backend.

L’application pilotant le programme frontend est localisée dans le répertoire /usr/share/puppet-dashboard. On y trouve le répertoire config ainsi que le fichier de paramétrage de l’interface web, appelé settings.yml (qui comme son extension le suggère est écrit en langage Yaml). On va commencer par configurer les paramètres de la base de données en éditant le fichier database.yml, se trouvant dans le sous-répertoire config. On doit notamment y déclarer les lignes suivantes :

production:
  database: puppetdashboard_stable
  username: dashboard
  password: ********
  encoding: utf8
  adapter: mysql
  host: srv-backend

Il n’est pas utile de déclarer le paramétrage d’un environnement de tests car pour les réaliser, il suffit d’utiliser la commande puppet en fournissant le paramètre d’environnement qui est préemptif. On peut donc commenter cette partie et laisser uniquement la déclaration de la rubrique ‘production’ décrite ci-dessus.

Par contre, il peut s’avérer utile de modifier le paramètre time_zone et déclarer alors la ligne suivante :

…
time_zone : ‘Paris’
…

Il faut alors redémarrer le service puppet-dashboard afin de prendre en compte les modifications :

# service puppet-dashboard stop
# service puppet-dashboard start

VII. Initialisation du Puppet backend

Sur le serveur hébergeant les bases de données de Puppet, on doit maintenant installer le serveur MySQL et le configurer :

# yum install -y mysql-server
# /etc/init.d/mysqld start

ATTENTION : si l’on dispose d’un pare-feu local, il faut penser à autoriser le port TCP/3306 de l’instance MySQL en ce qui concerne les filtrages des tables netfilter et recharger la configuration du pare-feu:

# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# service iptables reload

A l’initialisation de l’instance MySQL, le compte root n’a aucune valeur. Mais, après la création de la base de stockage des rapports Puppet, l’accès sera sécurisé. Cette création s’effectue en exécutant les commandes suivantes (en remplaçant les ‘*’ du mot de passe par votre propre mot de passe) :

# mysql -u root
mysql> create database puppetdashboard_stable;
mysql> create user 'dashboard'@'%' IDENTIFIED BY '*******';
mysql> GRANT ALL PRIVILEGES ON puppetdashboard_stable.* TO 'dashboard'@'%';
mysql> ALTER DATABASE puppetdashboard_stable CHARACTER SET utf8;

Une fois cela réalisé, on peut d’ores et déjà tester la connectivité depuis n’importe quel client MySQL (par exemple depuis le serveur srv-dashboard) via l’instruction ci-dessous :

# mysql -h srv-backend -u dashboard -p puppetdashboard_stable

Si tout est bien configuré, on devrait alors voir apparaître le prompt ‘mysql>’ en guise de réponse à notre commande. On va alors pouvoir intégrer les structures de données propres à la base Puppet dashboard. On doit donc se connecter au serveur WebUI et se placer dans le répertoire /usr/share/puppet_dashboard et y exécuter la commande ci-dessous :

# rake RAILS_ENV=production db:migrate

Ceci dit, une base de données possède une vie propre, il peut donc être judicieux de purger régulièrement la base, via un script flush_oldreport.sh que l’on pourra placer dans le répertoire /root/Scripts du serveur Puppet dashboard :

# cd /usr/share/puppet_dashboard
# rake RAILS_ENV=production reports:prune upto=1 unit=mon 2>&1 > /var/log/rake_flush.log

Il ne restera plus alors qu’à créer une tâche planifiée permettant de réaliser ce ménage, par exemple, tous les quatre mois à l’occasion du premier samedi du mois concerné:

0 6 * */4 7 /root/Scripts/flush_oldreport.sh

Il est alors possible de démarrer le service puppet-dashboard en exécutant la commande suivante :

# /etc/init.d/puppet-dashboard start

REMARQUE: le service puppet-dashboard doit toujours être démarré en premier, avant le service puppet-dahsboard-workers. Il faut malgré tout rendre ces deux services totalement automatique lors des redémarrages :

# chkconfig puppet-dashboard on
# chkconfig puppet-dashboard-workers on

On peut ensuite démarrer le second service puppet-dashboard-workers. Toutefois, les rapports sont pour le moment générés au format texte et ne sont donc pas reportés sur la console Web. Si l’on souhaite les voir apparaître, il faut alors modifier le fichier de configuration puppet.conf du Puppet master et mentionner les lignes ci-dessous dans la rubrique [master]:

…
reports = store, http
reporturl = http://srv-dahsboard:3000/reports/upload

De ce fait, il faut penser aussi à autoriser le port TCP/3000 au niveau du pare-feu local. Après un redémarrage du service Puppet principal et en rafraîchissant la page web sur notre navigateur préféré, on devrait voir apparaître le message suivant :

Ceci est plutôt encourageant, même si ce n’est pas encore totalement satisfaisant. En fait cela s’explique par le fait qu’il n’y a pas encore de rapport dans la base, à présenter. Mais, dès l’exécution d’une tâche agent, depuis n’importe quel client Puppet, le premier rapport va alors apparaître et on devrait visualiser la fenêtre suivante :

En ce qui concerne les clients Puppet, il est possible de simuler une passe Puppet, en exécutant ce que l’on appelle un "dry run", exprimé via l’option noop de la commande :

# puppet agent -t --environment=stable --noop

Il est également envisageable d’activer les daemons Puppet dans ce mode noop afin de simuler les générations de rapports, sans les appliquer véritablement en journée et pouvoir les programmer pour la nuit suivante, après une vérification méthodique. Les changements effectués sur les différents clients apparaissent au niveau de l’interface graphique du tableau de bord avec des codes couleur distincts :

• en bleu pour un client modifié
• en gris pour une machine non accessible
• en rouge pour une connexion échouée
• en vert pour l’ensemble des clients non modifiés

VIII. Conclusion

Voilà, maintenant que la mécanique est en place, il ne reste plus qu’à écrire les différents modules. Mais, me direz-vous que peut-on faire encore ? Beaucoup de tâches répétitives peuvent être totalement automatisées :

• la découverte de nouveaux clients Puppet
• l’installation de nouveaux serveurs Linux
• la création de nouvelles machines virtuelles
• la modélisation des fichiers standards (resolv.conf, hosts…)
• l’installation de logiciels (Oracle, Shinken, Apache…)

Avec cette technique, on peut aller très loin dans les procédures d’automatisation. D'autant, que Puppet favorise le développement de bibliothèques de modules permettant d’appeler des modules déjà réalisés au sein de nouveaux manifestes. Ainsi, finies les corvées d’installation, de clonage ou de réplication. Il suffit simplement de rédiger la ou les recettes permettant d’effectuer les différentes tâches que l’on avait à mener à bien en plusieurs étapes auparavant en exécutant un simple appel à Puppet.

REMARQUE : ce tutoriel n’est qu’un aperçu, bien sûr de la puissance de Puppet, mais, je vous invite vivement à consulter la documentation concernant le langage de programmation de cet outil extraordinaire.

A ce jour, de nombreux autres programmes similaires à Puppet font leur apparition, tels que ansible, chef, expect, ou encore rudder. Tous ont leurs avantages et inconvénient et chaque administrateur a ses préférences pour l’un ou l’autre. Mais, il est essentiel de passer par l’un de ces logiciels pour gagner un temps précieux en mise au point et clarté d’administration.

Doogee S68 Pro : un nouveau smartphone IP68 et IP69k

lundi 21 octobre 2019 à 16:30

Le fabricant Doogee avait fait bonne impression avec ses modèles modulaires S90 et S90 Pro. Sur sa lancée, le fabricant nous dévoile aujourd'hui le Doogee S68 Pro, qui est taillé pour aller sur le terrain puisqu'il est certifié IP68 et IP69k.

Ce smartphone se veut robuste et pratique, plutôt que joli et fin. En effet, il intègre de nombreux capteurs notamment au niveau de la localisation par satellite (voir ci-après). Il est certifié IP68 et IP69k, ce qui signifie qu'il est étanche à la poussière, mais qu'il résiste également à une immersion prolongée ainsi qu'au situation extrême comme la vapeur et le nettoyage à haute-pression (d'après la norme IP69k). Les smartphones IP69k sont assez rares sur le marché. Il résiste également à une chute de 1,5m.

Il est équipé d'une triple caméra arrière avec des capteurs Sony : 21 MP + 8 MP + 8 MP, le tout pour un angle de 130° pour vos prises de vue. La caméra avant quant à elle est de 16 MP et propose un angle de vue de 80°.

Concernant l'énorme batterie de 6300 mAh, elle est compatible avec la recharge rapide et atteindra 55% en 30 minutes, avec un chargeur 2A. Il est à noter que le smartphone est compatible avec la recharge sans-fil, dans les deux sens : pour le recharger lui (10 watts), mais aussi pour l'utiliser afin de recharger un autre appareil (5 watts).

Au niveau des caractéristiques techniques :

- Ecran : full HD de 5,9" et une résolution de 1080 x 2280
- Puce Helio P70
- RAM : 6 Go (Samsung)
- Stockage : 128 Go (Samsung)
- Batterie : 6300 mAh
- Localisation satellite : GPS, Beidou, Glonass, Galileo
- Lecteur d'empreintes et reconnaissance faciale
- Android 9.0

Avec ce modèle, il est clair que Doogee veut concurrencer le smartphone Blackview BV9700.