Deblan blog

Divers

La vie d'un DSI

En début d'année, j'ai intégré le siège du groupe Zenitude. C'est une société qui gère aujourd'hui près de 25 résidences hôtelières partout en France. Mon rôle consiste à traiter l'informatique (au sens large) du groupe.

C'est un projet professionnel assez nouveau pour moi, car dès mon entrée dans la vie active, c'est dans une agence web où j'ai atterri avec l'étiquette de développeur. J'ai évolué vers de la gestion de projet technique pour devenir ensuite directeur technique dans une seconde agence. J'avais donc un profil très orienté développement web et j'ai développé l'administration système.

Je suis passé d'un environnement où les outils étaient assez bien maîtrisés (environnement de développement et d'hébergement) vers un environnement où l'informatique prend une échelle beaucoup plus importante. À ce stade, des outils et des processus m'échappaient parfois.

Voici quelques problématiques auxquelles je me suis confronté et quelques-unes des solutions mises en places.

Le contexte

Il faut savoir que Zenitude existe depuis 2009. On ne m'a pas attendu pour faire de l'informatique et je dois composer avec neuf ans d'histoire. Par ailleurs, comme nous récupérons la gestion d'établissements qui ont eux aussi leur passif, on n'a aucune uniformisation du parc.

Le parc informatique

Le groupe Zenitude, c'est une centaine d'ordinateurs sous Windows, 3 serveurs Debian GNU/Linux, 1 serveur avec Ubuntu, une tripoté de photocopieurs, des lignes téléphoniques SIP, des accès RTP sur 25 serveurs Microsoft Server, etc. Bref, il y a du monde et le premier truc que j'ai admis c'est qu'il est impossible d'avoir une maîtrise de tout ça.

Quand je parle de maîtrise, je pense déjà à l'inventaire du parc qui n'est absolument pas précis. Nous le verrons juste après mais l'objectif est de faire le plus de choses en ligne. Les machines tendent à devenir que de simples terminaux d'accès vers des outils déportés. Que ce soit bien ou pas, l'avenir nous le dira mais c'est un choix plutôt intéressant pour le moment. Quand une machine tombe, on ne se prend pas la tête et on la remplace. Les données sont en ligne donc il n'y a pas de perte.

Pour piloter le parc et assurer un minimum de sécurité et de support, nous avons déployé la solution Teamviewer permettant un accès avancé sur les machines via une console en ligne et un client manager. On peut harmoniser la politique de sécurité avec une solution anti-virus intégrée (IT Brain) et quelques règles définies en amont. Dès l'ajout d'une machine dans le parc, il suffit d'installer Teamviewer et je peux déployer ce que je veux dessus. Si quelque chose de bizarre est détecté, je suis averti par mail (Virus, problème de disque, etc.).

Teamview

Du côté des serveurs, les machines sous Windows ne sont pas infogérées par Zenitude. J'ai installé les serveurs sous Linux et c'est aussi moi qui les administre. Pour assurer l'accessibilité des services, j'ai déployé une instance Zabbix pour les monitorer. Dès qu'un service est inaccessible ou qu'un problème système est détecté, je suis averti par mail et par SMS suivant le niveau gravité.

Zabbix

Globalement, ça fonctionne bien. Je rencontre cependant deux problèmes récurrents. Le premier est l'installateur Windows 10 pour paramétrer la machine après l'achat. Le second émane des programmes préinstallés par les fabricants. L'un n'est pas toujours évident pour tout le monde et l'autre implique de faire du ménage qui prend du temps.

Le collaboratif

C'est un enjeu important pour les entreprises et c'est loin d'être simple à mettre en place. À Zenitude, on a donc des établissements hôteliers éparpillés partout en France, pilotés en partie par le siège où je travaille.

Chaque établissement a une équipe qui édite des documents communs. On retrouve une majorité de fichiers Excel et Word. La direction a choisi de s'orienter vers Office 365 pour traiter cette problématique. Il faut accompagner les équipes, expliquer le pourquoi du comment, les aider à configurer les logiciels et les former aux bons usages.

Dans les problématiques du tout collaboratif, on retrouve aussi les limitations techniques comme des accès à l'Internet pas toujours fiables et des machines pas toujours à la hauteur. Par ailleurs, quand on sort des sentiers battus, ça devient rapidement une vraie galère (cf Sharepoint sous Debian).

Cependant, j'ai l'opportunité de travailler sur des outils qui réduisent la quantité de problèmes. En effet, même si Office Online reste assez efficace, il est parfois beaucoup trop compliqué pour finalement saisir des données simples. On a lancé des développements en interne et particulièrement une plateforme nommées Tools, sous Symfony 3, qui tend à remplacer les tableurs par des formulaires en ligne. Ça permet de mieux contrôler les saisies et de pouvoir exploiter les données convenablement (graphiques dynamiques, tableaux, déploiement d'API, etc.). On a également remplacé des services externalisés et coûteux, ce qui permet de reprendre la main sur nos données. Aujourd'hui, cette application fait de l'analyse de budgets et de chiffres d'affaire, elle récupère et met en page des données de e-réputation pour les établissements, elle centralise les demandes pour les supports de communication, elle permet de mettre en ligne des offres de recrutement, elle intègre le processus d'achat du groupe, une messagerie instantanée est inclue, etc. C'est une véritable valeur ajoutée pour le groupe.

Zenitude Tools

Le changement par l'accompagnement

Comme je l'ai évoqué, quand on met en place de nouvelles solutions, il est primordial de penser à l'accompagnement. Cet accompagnement doit se faire autour de deux problématiques majeures : l'adoption de l'outil et son utilisation. En effet, quand on demande à des directeurs d'établissements, des responsables d'hébergement ou des réceptionnistes de changer leurs habitudes, ils doivent comprendre la nécessité de le faire.

Ce qui suit le « pourquoi », c'est le « comment » et voici une étape complexe à franchir. Même si j'ai acquis de l'expérience en pédagogie, je me suis rendu compte que des choses simples n'étaient pas acquises. Pour illustrer un peu, certains utilisateurs ne font pas la différence entre la version d'Outlook en ligne et le logiciel installé sur leur machine. Ça peut faire sourire mais c'est un fait. Je dois mesurer chaque mot que j'utilise pour expliquer des outils et je travaille beaucoup les interfaces que je produis. J'essaye aussi de réaliser de la documentation dans différents formats : des pages de contenus sous forme de Wiki, des tutoriels vidéos et des présentations.

Wiki

Intrinsèquement lié à l'accompagnement, le support informatique avec le suivi et l'historique des demandes est essentiel pour les utilisateurs et pour moi. J'ai mis en place une plateforme de suivi qui s'appuie sur Redmine, interconnecté à Tools via des API. Nous pouvons ainsi avoir une vision globale des problèmes rencontrés, que ce soit sur les outils internes mais également les services externes que nous utilisons. Nous pouvons suivre l'évolution d'une demande et alerter les différents acteurs. Enfin, le jour où l'IT grossie, mes futurs collaborateurs seront en mesure de prendre le relais en toute transparence.

Support

Conclusion

D'autres sujets auraient pu être traités ici mais j'avais envi de partager l'essentiel de mon travail. Il y a eu des ratés mais il faut essayer des choses, en adapter d'autres et remplacer ce qui ne me parait pas judicieux. En l'espace de quelques mois, beaucoup de choses ont avancé et pas mal d'autres projets sont à venir. Je pense avoir beaucoup appris depuis mon arrivée à Zenitude et je suis très fiers des résultats obtenus.

Par ailleurs, si on enlève la partie collaboration avec Office 365, Teamviewer et les machines sous Windows, le logiciel libre a une place importante dans les outils déployés à Zenitude. Des applications métiers sont en partie libres, je développe sur des outils libres (ou assimilés) et ça prouve que ça fonctionne en entreprise et particulièrement dans les moyennes entreprises (sans rentrer dans une optique de tout faire en libre).


Afficher une webcam sur son site (version Linux)

Il y a déjà un article pour afficher sa webcam sur une page web mais en plus d'être un peu à la rue, il ne fonctionne pas sur Linux.

Nous allons voir comment intégrer une webcam sur son site web sous Linux.

Il nous faut :

  • Un serveur web
  • Un accès SSH
  • Une webcam
  • Un ou deux logiciels en local

Note : je travail sur Debian, il faut donc transposer mes commandes pour votre distribution.

Étape 1 : les logiciels en local
# aptitude update
# aptitude install openssh-client vgrabbj rsync imagemagick screen
  • openssh-client : notre client SSH
  • vgrabbj : il permettra de capturer les images de la webcam
  • rsync : il sera notre outil d'upload d'image et va s'appuyer sur SSH
  • imagemagick : pour faire un traitement sur l'image (ajouter du texte)
  • screen : pour lancer le script sans monopoliser un terminal
Étape 2 : préparation des répertoires de travail

On va créer un répertoire qui accueillera le script et la capture :

# le répertoire du script
$ if [ -d "$HOME/bin" ] || mkdir "$HOME/bin"
# le répertoire de la capture
$ if [ -d "$HOME/.webcam" ] || mkdir "$HOME/.webcam"

Création du fichier :

$ cd "$HOME/bin"
$ touch webcam
$ chmod +x webcam
Étape 3 : Et on édite le script

Je propose de faire ça en simple shell, donc pas de bash mais un bon vieux sh (ou dash sur Debian).

#!/bin/sh

On prépare des variables de configuration :

# Le login et le serveur
SSH_SERVER="simon@exemple.com"
# Des options à passer au client SSH
# -p indique le port de connexion
# -i permet de paramétrer une clé SSH
SSH_OPTIONS=" -p 22 -i $HOME/.ssh/id_dsa" 

# Chemin vers l'image que va générer la webcam
IMG_LOCAL="$HOME/.webcam/webcam.jpg"

# Le chemin de l'image sur le serveur distant
IMG_REMOTE="/services/web/www/exemple.com/public_html/ressources/webcam.jpg"

# Qualité de l'image générée (de 1 à 100 et plus c'est grand, plus c'est zoli)
IMG_QUALITY=75

# Les dimensions de l'image
# sqcif= 128x96,     qsif = 160x120,
# qcif = 176x144,    sif  = 320x240,
# cif  = 352x288,    vga  = 640x480,
# svga = 800x600,    xga  = 1024x768,
# sxga = 1280x1024,  uxga = 1600x1200
IMG_SIZE=sif

# Je vais afficher du texte sur l'image donc je paramètre sa couleur et sa position
IMG_TEXT_COLOR=black
IMG_TEXT_X=8
IMG_TEXT_Y=16

# Le périphérique webcam à utiliser
VIDEO_INPUT=/dev/video0

# Le temps entre deux captures (en secondes)
WAIT=5

# la fonction text va retourner le texte à afficher sur la webcam
text() {
	# ça donnera : login @ mm/jj/aa hh:mm:ss
	echo "$USER @ $(date +'%D %r')"
}

On ajoute une sécurité : ne pas avoir deux scripts qui tente un accès à la webcam en même temps :

LOCK="$HOME/.webcam/.lock"

while [ -f "$LOCK" ]; do
	sleep 1
done

touch "$LOCK"

On termine par les commandes de capture, d'écriture du texte et d'upload :

# On capture l'image
vgrabbj -i "$IMG_SIZE" -f "$IMG_LOCAL" -d "$VIDEO_INPUT" -q "$IMG_QUALITY" -a 3 -n

# On ajoute le texte
mogrify -fill "$IMG_TEXT_COLOR" -pointsize 11 -annotate +"$IMG_TEXT_X"+"$IMG_TEXT_Y" "$(text)" "$IMG_LOCAL"

# On upload 
rsync -avz -e "ssh $SSH_OPTIONS" "$IMG_LOCAL" "$SSH_SERVER":"$IMG_REMOTE"
# Note : certains seront peut-être plus à l'aise avec scp, c'est comme vous voulez

On termine par boucler tout ça :

# on délock l'accès à la webcam
rm -f "$LOCK"

# On fait attendre un peu le script
sleep $WAIT

# On l'exécute lui-même 
"$0"&

# Et on arrête l'exécution courante
exit 0

Le script complet (sans commentaire) :

#!/bin/sh

SSH_SERVER="simon@exemple.com"
SSH_OPTIONS=" -p 22 -i $HOME/.ssh/id_dsa" 

IMG_LOCAL="$HOME/.webcam/webcam.jpg"

IMG_REMOTE="/services/web/www/exemple.com/public_html/ressources/webcam.jpg"

IMG_QUALITY=75
IMG_SIZE=sif
IMG_TEXT_COLOR=black
IMG_TEXT_X=8
IMG_TEXT_Y=16

VIDEO_INPUT=/dev/video0

WAIT=5

text() {
	echo "$USER @ $(date +'%D %r')"
}

LOCK="$HOME/.webcam/.lock"
 
while [ -f "$LOCK" ]; do
	sleep 1
done

touch "$LOCK"

vgrabbj -i "$IMG_SIZE" -f "$IMG_LOCAL" -d "$VIDEO_INPUT" -q "$IMG_QUALITY" -a 3 -n
mogrify -fill "$IMG_TEXT_COLOR" -pointsize 11 -annotate +"$IMG_TEXT_X"+"$IMG_TEXT_Y" "$(text)" "$IMG_LOCAL"
rsync -avz -e "ssh $SSH_OPTIONS" "$IMG_LOCAL" "$SSH_SERVER":"$IMG_REMOTE"

rm -f "$LOCK"

sleep $WAIT
"$0"&
exit 0
Étape 4 : la page html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ma webcam</title>
<script>
// Deux helpers pour attacher un évenement à un object et un selecteur rapide d'élement par id
var addEvent = function(object, eventName, myFunction) {
	if(object.addEventListener) {
		object.addEventListener(eventName, myFunction, false);
	} else if(object.attachEvent) {
		object.attachEvent('on'+eventName, myFunction);
	}
}
var $ = function(id) {
	return document.getElementById(id);
}

// On ne veut pas de clignottement donc entre chaque
// chargement d'image, on attend que celui-ci soit 
// terminé pour mettre à jour l'image dans la page
var image_reload = function(id, time) {
	var img = $(id);
	if(img) {
		var _img = new Image();
		var src = (img.getAttribute('src')).split('?')[0]+'?'+Math.random();
		_img.src = src;
		addEvent(_img, 'load', function() {
			img.setAttribute('src', src);
		});
		window.setTimeout(function() {
			image_reload(id, time);
		}, time);
	}
}

addEvent(window, 'load', function() {
	// id de l'image de la webcam et temps de rafraissement
	image_reload('webcam', 2000); 
});
</script>
<body>

<p><img data-dimension="destroy" id="webcam" src="/ressources/webcam.jpg" alt="" title=""/></p>

</body>
Étape 5 : lancer le script
$ screen
$ ./bin/webcam

C'est terminé :)


Barbecue - Light Painting

le feu a toujours attiré des gogoles qui jouent avec. Ce soir, Bastien et moi avont décidé de triper avec les braises pour faire un peu de Light Painting ^^ Voici les meilleurs images :


Les jeux vidéos sont le mal !

Il y a toujours eu des gens cons qui aimaient coller des étiquettes sur le jeux vidéo en qualifiant ce loisir comme dangereux. Bien souvent, si un joueur pète une pile IRL, on clame que c'est les heures de jeux passer sur CS et Quake qui sont derrière tout ça.

J'ai toujours défendu le contraire et je ne suis pas le seul à le penser. Je considère que les jeux peuvent être des facteurs déclenchants mais ils ne sont pas la source des pathologies.

Aujourd'hui, c'est le gouvernement qui vient mettre son grain de sel en faisant un projet de loi débile à souhait et qui ne s'appuie sur aucune vraie étude (ça me rappel Hadopi) :

On considère qu'une personne est « accro » aux jeux lorsqu'elle passe plus de 2 heures par jour sur l'ordinateur ou sur console. Nous avons réalisé une étude dans notre école auprès d'un échantillon d'enfants âgés de 8 à 12 ans. Elle montre que les enfants ont tendance à enfreindre les règles de sécurité pourtant données par leurs parents et à adopter des comportements à risque. 42 % des enfants ne respectent pas les temps de jeux et 60 % la classification par âge du système européen d'information sur les jeux (PEGI).

C'est les parents qui ne font pas leur boulot et pas besoin de jeux vidéo pour le constater : les gamins portent la culotte. Quand j'étais môme, c'était 30 minutes sur le pc. Chaque minute en plus était une claque. Et puis, je crois que la majorité de joueurs n'ont pas 12 ans...

Alcool, tabac, drogue... Face à ces redoutables fléaux et risques pour la santé, force est de développer la prévention.
Son but : changer le regard des jeunes porté sur les jeux vidéo pour lutter contre les risques d'addiction.

Ouai t'as raison, comparez le jeux à ces merdes....*soupir*. Quand vont-il comprendre que leur pub anti-tabac ne fonctionnent pas ? Pourquoi cela marcherait-il avec les jeux ?

Dans un délai d'un an suivant l'entrée en vigueur de la présente loi, le ministre chargé de la santé élabore une charte éthique qui amène l'industrie des jeux vidéo à s'orienter vers une politique du jeu responsable, en favorisant notamment des sessions de jeu plus courtes et marquées de pauses obligatoires de trente minutes, voire plus pour des jeux de longue durée.

Article 3

J'imagine bien le mec, en plein rush, voir son jeu lui dire "Euh...Pause obligatoire mec" XD Ils sont vraiment sérieux ?

Les charges qui pourraient résulter pour l'État de l'application de la présente loi sont compensées à due concurrence par la création d'une taxe additionnelle aux droits sur les tabacs visés aux articles 575 et 575 A du code général des impôts.

Article 4

Alors comme toutes leurs lois de merdes non réfléchie coûtent du fric (oh, j'ai encore Hadopi en tête), il faut bien aller chercher de quoi les financer et aujourd'hui c'est une idée de génie : ce sont les addicts aux clopes qui vont payer la "prévention" pour les potentiels addict aux jeux vidéo XD Du grand n'importe quoi...

Vous n'avez rien d'autre à foutre sérieusement ?


Linux Identity

Alors que j'étais en Angleterre, la rédactrice Caroline Torner qui fait partie de l'équipe de rédaction du magasine « Linux Identity » m'a contacté pour me demander de rédiger un articles sur « Les trucs & astuces pour Debian ». Une proposition intéressante que je me suis empressé de remplir !

Linux Identity

Voila quelques images, je vais essayer de trouver une version PDF du magasine (ou au moins des trois pages qui m'ont été confiées).

Linux IdentityLinux IdentityLinux IdentityLinux Identity

Une expérience supplémentaire à ajouter au CV !