Zwindler's Reflection https://blog.zwindler.fr Ma vie parmi les lol-cats || je mine des bitcoins dans mon dressing Fri, 29 May 2020 21:17:32 +0000 fr-FR hourly 1 https://wordpress.org/?v=5.4.1 https://blog.zwindler.fr/wp-content/uploads/2017/03/nyanonimous_rond-150x150.png Zwindler's Reflection https://blog.zwindler.fr 32 32 126029280 Installer Microk8s dans WSL 2 https://blog.zwindler.fr/2020/06/01/installer-microk8s-dans-wsl-2/ https://blog.zwindler.fr/2020/06/01/installer-microk8s-dans-wsl-2/#respond Mon, 01 Jun 2020 06:25:00 +0000 https://blog.zwindler.fr/?p=5946 Tutoriel pas à pas pour installer Microk8s dans Windows 10 sans passer par une VM Virtual Box ou Hyper-V, via WSL 2

Cet article Installer Microk8s dans WSL 2 est apparu en premier sur Zwindler's Reflection.

]]>

Microk8s sur Windows 10

Dans un article que je vais bientôt sortir sur OPA et Gatekeeper, j’ai épuisé mon crédit mensuel et mon cluster AKS s’est éteint… "Qu’à cela ne tienne" me dis-je, "je vais installer Kubernetes dans mon Windows" ! Mais plutôt que de partir sur Microk8s (le titre de l’article, vous l’aurez noté), je suis initialement parti sur Minikube…

Ce n’est pas la première fois que je fais du me prend la tête avec Kubernetes dans un Windows 10, notamment avec Minikube.

Pour rappel, Minikube utilise une VM (bah oui, Docker partage le kernel et j’ai pas envie de faire des containers avec celui de Windows). Par défaut sous Windows, cette VM c’est via Virtual Box.

Et si vous utilisez Hyper-V à côté (au hasard, Docker pour windows) et ben vous aurez un conflit car Windows/Hyper-V interdit les autres logiciels de virtualisation quand il est activé. Me demandez pas pourquoi, c’est comme ça.

Bref, c’est relou.

En fait, les VMs tout court, c’est un peu relou

Des fois, je me demande si je ne me fais pas du mal pour rien…

Mon PC pro est sous Ubuntu, mais à la maison, les habitudes ont la vie dure (je joue un peu sous Windows du coup c’est mon OS)…

Heureusement pour moi, WSL (Windows Subsystem for Linux) a pas mal évolué. Quand je suis sous Windows, j’utilise beaucoup cette fonctionnalité, car, même si c’est effectivement une VM (moins lourde qu’Hyper-V), Microsoft fait beaucoup d’efforts pour que l’expérience utilisateur se rapproche le plus possible d’une machine classique.

Du coup, plutôt que me reprendre la tête avec Hyper-V et VritualBox, je me suis demandé s’il n’était pas possible maintenant de faire tourner Kuberbetes dans WSL2.

Et je ne suis pas le seul à avoir eu l’idée comme on peut le voir dans cette issue Github!

Les solutions disponibles

Pour l’instant, dans Ubuntu, je connais 4 façons de mettre un pseudo Kubernetes sur un PC/laptop de manière "rapide" :

  • minikube
  • microk8s (via les snaps)
  • k3s
  • kind (que j’ai pas encore testé)

La plus connue (pas forcément le plus simple), c’est minikube. Si vous me suivez sur Twitter, vous aurez vu que pour l’instant j’ai pas encore réussi à le faire marcher, malgré 2 méthodes différentes (driver=none et driver=docker).

https://twitter.com/zwindler/status/1264309851934556160?s=20

Pourtant, en théorie, c’est possible, car plusieurs témoignages dans l’issue Github et même des articles sur ubuntu.com et kubernetes.io en parlent.

J’y reviendrais donc quand je serais plus fâché ;).

Mon second plan était donc microk8s, qui est un déploiement de kube proposé par Canonical via les snaps d’Ubuntu.

C’est parti pour du fun !

Prérequis

WSL 2

Ici on part du principe que vous venez d’installer un Ubuntu sur votre Windows 10 avec WSL2 et que tout est correctement à jour.

Bon déjà ça commençait mal pour moi… Je pensais être sous WSL2 quand j’ai commencé l’article, mais en fait non…

Au moment de la rédaction de l’article, et comme l’explique cet article Docker in WSL2, WSL2 est disponible avec Windows 10 2004 (20h1). Avant, il n’est pour l’instant accessible que pour les Windows Insiders qui utilisent les versions previews.

Heureusement vous avez de la chance, depuis hier elle commence à être déployée sur tous les Windows 10 et vous allez pouvoir sauter l’étape suivante.

20H1 ou devenir Insider ? (oh la chance)

Si vous n’êtes toujours pas en 20H1, vous pouvez toujours faire comme moi et devenir Insider (bêta tester c’était moins sexy comme terme).

Équipez-vous d’un peu de temps libre et armez-vous de patience, vous en aurez besoin… Il faudra aussi accepter d’envoyer de la télémétrie à Microsoft (n’est pas Insider qui veut…).

On suit donc cet article pour devenir Insider, puis celui-ci pour upgrader de WSL à WSL2.

La modification est assez pénible, demande de redémarrer plusieurs fois et d’aller télécharger soi-même le dernier kernel WSL2 ici.

Migration WSL 1 => WSL 2

La "bonne nouvelle" quand même, c’est qu’il est possible de migrer des OS WSL existants vers la nouvelle version. Si vous avez déjà une machine WSL configurée aux petits oignons, vous pourrez éviter de tout réinstaller.

Dans un Powershell (en tant qu’administrateur), exécutez la commande suivante :

 wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Running         1

Si comme moi vous êtes en version 1, mettez à jour (et ouais, ça va prendre quelques minutes. Genre, euphémisme…).

wsl --set-version Ubuntu 2
La conversion est en cours. Cette opération peut prendre quelques minutes...
Pour plus d’informations sur les différences de clés avec WSL 2, visitez https://aka.ms/wsl2

#TREEEEES LONGTEMPS plus tard sur mon laptop
La conversion est terminée.

wsl --list --verbose
  NAME      STATE           VERSION
* Ubuntu    Stopped         2

Ok, on peut reprendre…

Docker

Même une fois WSL2 installé, si vous essayez d’installer Docker (CE) comme si on était pas dans WSL2, vous n’allez pas rigoler…

sudo systemctl status docker
Failed to connect to bus: No such file or directory

C’est un échec

(Pour ceux qui ne l’ont pas, c’est ici que ça se passe)

On va devoir passer par Docker desktop (ancien Docker for Windows) qui a une option pour installer Docker dans WSL2.

Allez sur cette doc de Docker, qui donne les instructions.

Une fois Docker Desktop installé (n’oubliez pas de cocher la case qui propose d’utiliser WSL2), on vous demandera de vous délogguer de Windows.

Au démarrage de la session, normalement Docker for Windows devrait vous informer qu’il a démarré. On peut vérifier que tout est bien configuré :

On utilise WSL2 comme moteur plutôt qu’hyper-V, fini les conflits avec virtualbox

Vous pouvez retourner dans votre WSL.

Note : normalement ça ne devrait pas être nécessaire, mais si vous comme moi pour une obscure raison, n’avez pas les droits de faire du Docker, il faut ajouter à votre utilisateur WSL le groupe qui va bien.

votreuser@awesomelaptop:~$ sudo usermod -aG docker votreuser
exit

Vérifier que maintenant Docker fonctionne correctement

Relancez WSL2, vous pouvez maintenant utiliser docker.

votreuser@awesomelaptop:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
votreuser@awesomelaptop:~$ docker container run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latest

Hello from Docker!

Maintenant qu’on a un Docker qui marche, on va pouvoir essayer de faire marcher Microk8s. Je préviens, il y a pas mal de bidouille, car WSL ne s’appuie pas sur systemd (contrairement à presque toutes les distribs mainstream aujourd’hui).

La procédure détaillée est disponible ici, ainsi que les scripts, dans le post suivant.

sudo apt install -y daemonize dbus-user-session fontconfig
  • /usr/sbin/start-systemd-namespace
  • /usr/sbin/enter-systemd-namespace
sudo chmod +x /usr/sbin/enter-systemd-namespace

Ajoutez les lignes suivantes dans les sudoers :

sudo vi /etc/sudoers
Defaults        env_keep += WSLPATH
Defaults        env_keep += WSLENV
Defaults        env_keep += WSL_INTEROP
Defaults        env_keep += WSL_DISTRO_NAME
Defaults        env_keep += PRE_NAMESPACE_PATH
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/enter-systemd-namespace

Et enfin, lancez la commande suivante pour que le script s’exécute au démarrage de la session :

sudo sed -i 2a"# Start or enter a PID namespace in WSL2\nsource /usr/sbin/start-systemd-namespace\n" /etc/bash.bashrc

Lancez un nouveau WSL2 en parallèle pour voir si ça fonctionne toujours (moi la première fois, j’ai loupé une étape et flingué mon Ubuntu…).

Si ça marche toujours, on passe à l’étape suivante !

DNS dans systemd

A priori, quand on bascule WSL2 vers systemd, on se retrouve avec des petits soucis de DNS. Le plus simple est d’ajouter en dur votre propre DNS ou un DNS qui respecte votre vie privée, du type 9.9.9.9 (quad9).

sudo vi /etc/systemd/resolved.conf
[...]

[Resolve]
DNS=9.9.9.9

Et redémarrez resolved. Si tout fonctionne correctement vous devriez pouvoir faire le apt update sans erreur.

sudo systemctl restart systemd-resolved
sudo apt update

It’s alive !

Et enfin, on tente l’installation de microk8s en lui-même, en croisant tous les doigts à notre disposition.

L’avantage de Microk8s est que la procédure d’installation est très très simple (vous pouvez la retrouver ici)

sudo snap install microk8s --classic --channel=1.18/stable

sudo microk8s status --wait-ready
  microk8s is running
  addons:
  [...]

Dernier point, par défaut vous risquez de ne pas avoir les droits pour faire du microk8s avec votre utilisateur. Pour éviter de faire des sudo à tout bout de champs, on se les rajoute, comme pour Docker :

sudo usermod -a -G microk8s votreuser
sudo chown -f -R votreuser ~/.kube

Délogguez vous puis rouvrez WSL pour prise en compte de la modification de droits.

microk8s.kubectl get nodes
NAME            STATUS   ROLES    AGE   VERSION
awesomelaptop   Ready    <none>   30m   v1.18.2

Conclusion

Bravo ! Vous faites partie des valeureux qui ont maintenant Microk8s dans WSL2.

Sur ce, je vais m’occuper des derniers cheveux qu’il me reste en espérant avoir la même procédure pour minikube dans quelques jours ;)

Cet article Installer Microk8s dans WSL 2 est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/06/01/installer-microk8s-dans-wsl-2/feed/ 0 5946
Kubernetes – Ressources utiles pour bien débuter https://blog.zwindler.fr/2020/05/25/kubernetes-ressources-utiles-pour-bien-debuter/ https://blog.zwindler.fr/2020/05/25/kubernetes-ressources-utiles-pour-bien-debuter/#comments Mon, 25 May 2020 06:45:00 +0000 https://blog.zwindler.fr/?p=5920 Ressources utiles sur Internet pour apprendre Kubernetes quand on débute

Cet article Kubernetes – Ressources utiles pour bien débuter est apparu en premier sur Zwindler's Reflection.

]]>
Kubernetes, ce n’est pas difficile

J’en parlais en partie dans mon article sur le « Kubernetes bashing ». Kubernetes, c’est « modérément » compliqué. Je dis modérément, car de mon point de vue, beaucoup de la difficulté perçue de Kubernetes vient des architectures microservices, qui demandent de changer un peu ses habitudes de développement et d’administration.

Pour autant, entendre à longueur de journée « Kubernetes c’est compliqué », induit forcément pour les néophytes une petite anxiété. Et parmi la masse d’information qu’on peut trouver sur le sujet, il n’est parfois pas facile de s’y retrouver.

Si j’essaye de rendre mes articles les plus accessibles possible, je traite parfois de sujets un peu pointus. Pas idéal non plus pour débuter.

Heureusement, plusieurs facilitateurs, notamment Français, mettent à disposition des ressources pour tous les niveaux. Je voudrais mettre à l’honneur aujourd’hui leur travail de pédagogie sur le sujet.

Une image vaut mille mots

On vous a peut-être rabâché cet adage, mais dans beaucoup de domaines techniques, un schéma c’est plus simple pour débuter.

Et d’ailleurs, c’est un des principes du sketchnoting (littéralement « prise de notes visuelle »). Pour ceux qui ne connaissent pas, c’est une technique de facilitation graphique qui permet de « favoriser la créativité, faciliter la mémorisation, produire et relire des notes de manière plus plaisante« .

Mon amie Ane avait pris le temps d’en faire un sur le talk que j’avais donné en 2019 à BDX I/O :

Depuis un mois, Aurélie Vache s’est mise à faire une série de Sketchnotes sur Kubernetes.

En plus d’être visuel et donc facile à appréhender, les sketchs sont vraiment hypers accessibles même pour les débutants, tant en brossant un tableau assez complet du sujet.

A l’heure où j’écris cet article, il y en a 26, hébergés sur dev.to (et Aurélie a commencé une autre série de sketchs sur Istio). Si vous débutez, je vous conseille vivement d’aller regarder ses Sketchs pour appréhender les concepts clés de Kube.

Autodidactes sur Youtube

Ça aurait été impensable il y a quelques années, mais aujourd’hui énormément de monde apprend voire se forme sur Youtube.

Revers de la médaille, les contenus sont pléthoriques. Il est difficile de faire le tri entre les amateurs pas très pédagogues, les entreprises qui en fait vous vendent un produit…

Si vous voulez apprendre sur Youtube, il y a un passionné qui a publié énormément de contenu pour apprendre de manière sérieuse et accessible aux débutants sur tous les sujets « DevOps ». Il s’agit de Xavier Pestel.

La chaine xavki contient plusieurs centaines de vidéos assez courtes (10 minutes environ) pour traiter de chaque sujet par petits bouts, de manière incrémentale. Ça ne se limite pas à Kubernetes, Xavier a également fait de nombreuses vidéos sur la CI/CD, la sécurité, Ansible, etc.

Pour vous aider à vous y retrouver, vous pouvez utiliser les playlists (il y a 66 vidéos sur Kubernetes par exemple) ce qui vous permettra de commencer un sujet donné et d’avancer à votre rythme.

Master course

Petit ajout, on m’a remonté à plusieurs reprises beaucoup de bien des Master Courses de Redhat sur Kubernetes (Beginner et Elementary), animée en français par Sébastien Blanc. Il a déjà donné ce master class il y a un mois je crois, et vous avez de la chance, c’est replannifié :).

Si vous voulez vous inscrire, c’est sur un créneau d’une heure à chaque fois, respectivement le 1er et le 3 juin.

Les inscriptions se passent ici et il y a aussi des sessions en anglais, en espagnol et en portugais (si jamais vous préférez).

https://developers.redhat.com/devnation/master-course/

Des blogs

Mon support préféré ;-) mais pas toujours le plus simple.

Dans mon réseau, j’ai découvert le blog de Thomas Rannou (architecte logiciel qui parle plutôt d’Azure et a fait quelques articles très sympa sur AKS mais pas que) ainsi que Thibault Le Reste qui vient tout juste d’ouvrir un blog tech avec quelques articles sur Kubernetes également et à qui je souhaite de continuer sur cette lancée ;-).

Dans une autre catégorie, certaines sociétés de conseil éditent un blog avec des posts techniques pour, entre autres, se faire connaitre. Sans avoir aucun avis sur la partie consulting et/ou formation de leurs activités, les blogs sont eux souvent de bonne qualité.

Note : pour un souci de transparence, je tiens à vous informer que je n’ai aucun intérêt à mettre en avant ces deux entreprises avec lesquelles je n’ai eu aucun contact.

Dans les ressources que je consulte TRÈS régulièrement, il y a le Twitter @learnk8s (avec le blog qui va avec) dans lequel je trouve souvent des tips and tricks intéressantes ainsi qu’une veille technique de qualité sur Kubernetes.

Un autre blog sympa, tenu par des Français cette fois-ci, c’est le blog de Padok, qui a publié quelques bons articles généraux sur Kubernetes (mais pas que).

Le mot de la fin

J’oublie forcément des gens qui font du contenu de qualité pour aider les débutants (et plus) à apprendre Kubernetes. Pour autant, je pense que c’est déjà une bonne base.

Néanmoins, si vous avez d’autres idées de sites, blogs, chaines intéressantes sur le sujet, n’hésitez pas à les citer dans les commentaires pour aider les copains :)

Cet article Kubernetes – Ressources utiles pour bien débuter est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/05/25/kubernetes-ressources-utiles-pour-bien-debuter/feed/ 5 5920
Résultats du sondage : LE backup versus LA backup https://blog.zwindler.fr/2020/05/18/resultats-du-sondage-le-backup-versus-la-backup/ https://blog.zwindler.fr/2020/05/18/resultats-du-sondage-le-backup-versus-la-backup/#comments Mon, 18 May 2020 06:40:00 +0000 https://blog.zwindler.fr/?p=5893 Sondage : dites vous LE ou LA backup quand vous parlez d'une sauvegarde d'un fichier ou d'un serveur

Cet article Résultats du sondage : LE backup versus LA backup est apparu en premier sur Zwindler's Reflection.

]]>
Il y a quelques jours, j’ai fait passé un sondage sur Twitter sur une question gravissime et capitale. Quand vous parlez d’une sauvegarde qui a été effectuée à une date donnée, parlez-vous du/de la « backup » (pour les non informaticiens : oui, on adore les anglicismes, ça fait partie du job), au féminin ou au masculin ?

Ce n’est la première fois que je pose ce genre de question aussi utile qu’indispensable. Je vous avais déjà demandé comment vous prononciez le terme JSON (pour JavaScript Object Notation).

Les devs Français préfèrent donc dire jizonne

Méthodo

Il faudrait être né avant la honte pour oser parler de méthodologie quand on fait un sondage sur Twitter mais j’ai essayé dans la mesure du possible d’être le plus carré possible.

Pour essayer de ne pas influencer les sondés, j’ai essayer de poster un message le plus neutre possible (un peu trop neutre en fait) :

Je n’ai pas poussé le vice jusqu’à me demander si l’ordre dans lequel j’introduisais les deux choix allait avoir un impact sur les réponses (en vrai, a priori ça peut).

Cependant, je me suis quand même attaché à ne pas :

  • donner mon opinion / vote (pendant le vote, je l’ai dit après)
  • répondre aux commentaires (surtout ceux qui argumentaient pour l’un ou pour l’autre)
  • pas posé la question en entier, juste mis les deux propositions LE/LA backup

Où est ce que je veux en venir avec ce dernier point ?

Initialement, j’avais envie de poser la question de la façon suivante :

Lorsque vous devez parler d’une sauvegarde d’un fichier ou d’un serveur, dites vous « LE » backup, ou bien ‘LA‘ backup ?

Mais j’avais peur que poser la question en ces termes influence le vote (à cause du « une » sauvegarde).

L’inconvénient, c’est que des gens ont eu un doute sur la question précise que je posais :

https://twitter.com/qsypoq/status/1256661976425652230?s=20

Et le sondage alors ???

Bon ok, j’arrête le suspense. Dans la très grande majorité, vous avez répondu LE backup.

https://twitter.com/zwindler/status/1256607854204780544?s=20

Avec seulement 14% des votants, la team « LA backup » est vraiment à la peine… ça tombe mal, j’en fais partie ;-).

Qui a raison ?

C’est pas parce qu’ils sont nombreux à avoir tort qu’ils ont raison

Coluche

Bon OK, j’arrête le troll. Rassurez-vous, la vraie réponse à cette question est que tout le monde a raison.

Mon ami M4vr0x a spoilé la réponse à tout le monde : en anglais il n’y a pas de genre pour les objets ou les concepts (à l’exception des bateaux et des vaisseaux spatiaux… oui c’est important).

Le fameux « it » avec lequel on vous a bassiné au collège n’est ni féminin ni masculin.

#NoFun #SpoilerAlert https://twitter.com/m4vr0x/status/1256898560366280704?s=20

Tout le monde a raison

Si tout le monde a raison, pour autant on peut s’interroger sur pourquoi les uns disent LA et les autres LE.

A l’oreille, je suis obligé de reconnaître que LE backup sonne mieux. Mais je ne sais pas dire pourquoi.

En revanche, si ma logique est de traduire implicitement l’anglicisme quand je l’utilise, alors pour moi, c’est forcément LA backup, car je pense à LA sauvegarde.

M4vr0x a lui le raisonnement inverse, puisque la première chose à laquelle il pense quand il pense à une sauvegarde (encore un « une », je peux pas m’en empêcher), c’est au job de sauvegarde (donc masculin).

Vos réponses

Vous avez tous joué le jeu et je suis super content de vos réponses.

La palme revient sans aucun doute possible à Cyril

Chapeau bas

Et je me suis bien marré aussi en échangeant avec @ncapeyronSABA et son opinion… tranchée !

https://twitter.com/ncapeyronSABA/status/1257030759384256512?s=20

Encore merci à tous et à bientôt pour un nouveau sondage débile !

(Et si vous voulez lire mes articles ayant trait de près ou de loin aux backups : c’est par ici)

Cet article Résultats du sondage : LE backup versus LA backup est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/05/18/resultats-du-sondage-le-backup-versus-la-backup/feed/ 1 5893
Stockage distribué et répliqué avec DRBD https://blog.zwindler.fr/2020/05/11/stockage-distribue-et-replique-avec-drbd/ https://blog.zwindler.fr/2020/05/11/stockage-distribue-et-replique-avec-drbd/#comments Mon, 11 May 2020 06:35:00 +0000 https://blog.zwindler.fr/?p=5765 Tutoriel pour installer et utiliser DRBD, la solution de stockage distribuée et répliquée de Linbit

Cet article Stockage distribué et répliqué avec DRBD est apparu en premier sur Zwindler's Reflection.

]]>

DRBD

En 2015, j’avais voulu essayer la solution de stockage distribué DRBD. Et oui, 2015. C’est mon plus vieux brouillon sur le blog que je sors enfin. Vous vous e doutez, j’ai du repasser dessus pour ne pas vous donner de versions antédiluvienne ;)

DRBD (pour Distributed Replicated Block Device) est donc un logiciel disponible sous Linux et Windows qui permet de gérer des périphériques de stockages virtuels utilisables dans des infrastructures.

Ces périphériques ont la particularité de pouvoir être « distribués » sur plusieurs serveurs sur un réseau de façon synchrone ou asynchrone et disposant de plusieurs méthodes de resynchronisation en cas de perte de lien ou d’incohérences.

L’avantage de cette solution est qu’elle est robuste (fiabilité éprouvée) et qu’elle permet de répondre à des problématiques de haute disponibilité et de performance que n’offre pas forcément toutes les solutions de stockage.

Si cette solution peut paraitre de prime abord un peu datée à l’époque des containers et de Kubernetes, sachez que Linbit a fait un effort assez conséquents justement sur cette partie, en essayant de se positionner comme un des acteurs du stockage distribué pour les architectures containerisées et/ou "cloud native" (surtout trusté par Ceph/CephFS, voire Gluster).

Prérequis

Pour tester DRBD, vous l’aurez compris, il va nous falloir au minimum deux serveurs. Pour faire simple, je vais utiliser des machines virtuelles (mais évidemment ça fonctionnera mieux sur un serveur physique) sur lesquelles j’ai installé une image Ubuntu 18.04.

Dans mon cas, j’ai rajouté des disques virtuels de 16Go, pour simuler des disques physiques à synchroniser. De même, j’ai également rajouté des interfaces réseaux supplémentaires pour simuler un réseau dédié « stockage ».

Installation du logiciel

La société LINBIT qui distribue le logiciel DRBD propose des packages précompilés pour la plupart des distributions Linux classiques. L’ensemble des packages des différentes versions de DRBD sont disponibles sur le site de Linbit. Cependant, ces packages « officiels » précompilés nécessitent d’avoir payé le support.

Note : Si les packages officiels sont réservés aux personnes qui payent le support, les sources, elles, sont bien entendu disponibles sur le site.

Heureusement, il est possible d’utiliser tout simplement les packages précompilés de votre distribution.

A la base, quand j’avais écris le tutoriel en 2015, j’avais des soucis de compatibilité entre la version du kernel et drbd de ma distribution CentOS (6.3 à l’époque…). Ma version, 2.6.32-279 alors que les versions 8.3 et 8.4 de DRBD nécessitent le kernel 2.6.32-431. Mais rien ne vous empêche d’installer le kernel demandé pour résoudre ce problème.

Pour ce tuto, voici les commandes que j’ai du utiliser pour installer DRBD 9 (la dernière stable même si la 10 arrive bientôt) sur mes Ubuntu 18.04.

sudo apt update
sudo apt upgrade
sudo apt install software-properties-common
sudo add-apt-repository ppa:linbit/linbit-drbd9-stack
sudo apt-get update
sudo apt install drbd-utils python-drbdmanage drbd-dkms

Une fois que c’est installé, testez que tout fonctionne avec la commande suivante :

sudo modprobe drbd

Si tout se passe bien, elle ne devrait remonter aucune erreur. En revanche, si vous n’avez pas un kernel avec une version compatible, vous devriez avoir une erreur du type "file not found". Dans ce cas là, il faudra compiler DRBD à la main.

Préparation des machines

Les serveurs doivent évidemment pouvoir se joindre et se résoudre. Le mieux étant bien sûr un DNS correct, on pourra se rabbatre dans le cadre d’un test sur a minima un fichier /etc/hosts contenant les informations nécessaires

192.168.100.11 drbd1 drbd1.domain.tld
192.168.100.12 drbd2 drbd2.domain.tld

Ensuite, j’ai créé, sur chaque serveur, deux partitions de 8 Go chacun sur le disque de 16. La première sera de type Linux, la seconde sera de type LVM.

On oublie pas de créer les objets LVM pour pouvoir les utiliser plus tard.

pvcreate /dev/sdb2
vgcreate vg_drbd /dev/sdb2
lvcreate -n lv_drbd -l 2047 vg_drbd

Configuration

Le fichier de configuration global de DRBD est /etc/drbd.conf. Il définit les fichiers unitaires qui doivent être modifiés. Le fichier /etc/drbd.conf en lui même ne doit donc pas être modifié directement ; sauf dans le cas où on souhaite changer les fichiers de configuration inclus de répertoire.

cat /etc/drbd.conf
# You can find an example in  /usr/share/doc/drbd.../drbd.conf.example

include "drbd.d/global_common.conf";
include "drbd.d/*.res";

Le fichier suivant doit contenir les paramètres et les commandes qui sont globaux à toutes les ressources DRBD.

cat /etc/drbd.d/global_common.conf
# DRBD is the result of over a decade of development by LINBIT.
# In case you need professional services for DRBD or have
# feature requests visit http://www.linbit.com

global {
[...]

Template de ressource

Pour rendre la configuration lisible, on sépare les fichiers de configuration de manière à faire un fichier texte par ressource, nommé avec la convention r[nombre].res. Ici on prendra l’exemple le plus simple d’une synchronisation synchrone (protocole C, par défaut) dans un modèle actif/passif.

Pour vous aider à créer vos premières ressources, DRBD met à disposition, dans /etc/drbd.d/drbdctrl.res_template un template dans lequel vous n’aurez qu’à modifier les valeurs.

resource .drbdctrl {
    net {
        cram-hmac-alg   sha1;
        shared-secret   "<your-shared-secret>";
    }
    volume 0 {
        device      /dev/drbd0 minor 0;
        disk        /dev/mapper/<vgname>-.drbdctrl;
        meta-disk   internal;
    }
    on <node_1> {
        node-id 0;
        address <ipaddress>:<port>;
    }
    on <node_n> {
        node-id <n>;
        address <ipaddress>:<port>;
    }
    connection-mesh {
        hosts <node_1> <node_2> ... <node_n>;
        net {
            protocol C;
        }
    }
}

Ressource pour un disque "simple"

Ici, c’est l’exemple le plus simple. On va indiquer que notre ressource est distribuée sur 2 serveurs sur un bête partition Linux. Les metadata sont elles stockées en local (ce qui n’est pas forcément le mieux mais pour commencer ça suffira).

vi /etc/drbd.d/r0.res

resource r0 {
  on drbd1 {
    device /dev/drbd1;
    disk /dev/sdb1;
    address 192.168.100.11:7789;
    meta-disk internal;
  }
  on drbd2 {
    device /dev/drbd1;
    disk /dev/sdb1;
    address 192.168.100.12:7789;
    meta-disk internal;
  }
}

Note : si le protocole de synchronisation n’est pas spécifié, on est en synchronisation synchrone par défaut.

Attention : chaque ressource déclarée réserve le port TCP pour la communication de la ressource. Il faut donc incrémenter le numéro du device drbd ET incrémenter le numéro de port à chaque nouvelle ressource (et aussi s’assurer que le port est libre…).

Pour mes tests, j’ai également utilisé la possibilité offerte par DRBD d’utiliser des volumes LVM plutôt que des partitions brutes. La configuration est la même à ceci près qu’on pointe sur le LV plutôt que sur une partition.

vi /etc/drbd.d/r1.res
resource r1 {
  on drbd1 {
    device /dev/drbd2;
    disk /dev/vg_drbd/lv_drbd;
    address 192.168.100.11:7790;
    meta-disk internal;
  }
  on drbd2 {
    device /dev/drbd2;
    disk /dev/vg_drbd/lv_drbd;
    address 192.168.100.12:7790;
    meta-disk internal;
  }
}

Initialisation

Maintenant que tout est configuré, on va pouvoir déclencher l’étape d’initialisation des métadata et des ressources nouvellement créées.

Lancez les commandes suivantes sur les deux nœuds :

drbdadm create-md r0
drbdadm create-md r1
drbdadm up r0
drbdadm up r1

Une fois que les commandes sont lancées, on peut afficher les informations sur l’initialisation des disques (état normal) avec drbdmon

Actuellement, les nœuds sont Inconsistant et en Secondaire/Secondaire car nous n’avons pas encore désigné le nœud principal. Nous allons "forcer" le sens dans lequel le disque doit être synchronisé.

Sélectionner un des nœuds, qu’on va désigner comme "serveur primaire" et exécuter les commandes suivantes (uniquement sur lui) :

root@drbd1:~# drbdadm primary --force r0
root@drbd2:~# drbdadm primary --force r1

ATTENTION : dans le cas d’un disque déjà créé, il faut bien ne pas se tromper de sens, au risque d’écraser le disque qui contiendrait les données.

Une fois la synchronisation terminée, on peut utiliser le disque /dev/drbdX.

C’est fini ?

En fait, pas tout à fait. On ne va pas pouvoir utiliser nos disques exactement comme des disques classiques. Si vous formattez ce disque en ext4/xfs/whatever et que vous essayez de le monter sur vos deux serveurs drbd1 et drbd2, vous allez avoir une drôle de surprise.

En effet, ces filesystems ne savent pas gérer les accès concurrents provenant de deux machines simultanées. On va donc devoir :

  • soit utiliser un filesystem capable de gérer les accès concurrents (page Wikipedia listant quelques clustered filesystems) comme OCFS2 ou GFS2. Si vous publiez les disques DRBD en iSCSI pour votre cluster VMware, vous n’aurez pas de problème non plus car le VMFS le gère très bien aussi.
  • soit s’assurer à tout moment que le disque n’est monté que sur un seul serveur à la fois.

Évidemment la 2ème option est à proscrire si vous êtes dans un contexte de production. Cependant, cela reste possible si vous montez un cluster Pacemarker ou RHCS par exemple, qui va s’assurer que les bascules de stockage se font de manière propre.

Enjoy !

Bonus : quelques commandes utiles

Pour une ressource données, afficher le rôle du serveur local

root@drbd1:~# drbdadm role r0
Primary
root@drbd1:~# drbdadm role r1
Secondary

Afficher de manière concise l’état d’une ressource sur les nœuds

root@drbd1:~# drbdadm dstate r0
UpToDate/UpToDate
root@drbd1:~# drbdadm dstate r1
Inconsistent/UpToDate

Afficher plus de détails sur une ressource avec drbdadmin pour un résultat simple ou drbdsetup pour avoir plus de détails :

drbdsetup status r1 --verbose --statistics
r1 node-id:1 role:Secondary suspended:no
    write-ordering:flush
  volume:0 minor:2 disk:Inconsistent quorum:yes
      size:8384220 read:0 written:1972628 al-writes:0 bm-writes:0 upper-pending:0 lower-pending:0 al-suspended:no blocked:no
  drbd2 node-id:0 connection:Connected role:Primary congested:no ap-in-flight:0 rs-in-flight:0
    volume:0 replication:SyncTarget peer-disk:UpToDate done:23.53 resync-suspended:no
        received:1972628 sent:0 out-of-sync:6411740 pending:3 unacked:12 dbdt1:92.39 eta:68

En temps normal, toutes les ressources sont actives par défaut. Cependant, on peut les activer ou les désactiver à la main :

drbdadm up r0
drbdadm down r1 
# utiliser le mot clé « all » pour désigner toutes les ressources

Si on modifier les fichiers de configuration global ou un fichier de ressource, il est nécessaire de mettre à jour la configuration sur les deux nœuds. Il est possible de reconfigurer les ressources même si elles sont opérationnelles grâce à la méthode suivante :

drdbadm adjust r0

Changer le statut du nœud courant (pour le passer en primary s’il est secondary par exemple)

drbdadm primary r1
drbdadm secondary r0

Cet article Stockage distribué et répliqué avec DRBD est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/05/11/stockage-distribue-et-replique-avec-drbd/feed/ 11 5765
Ma plateforme de travail collaboratif Nextcloud en 5 minutes https://blog.zwindler.fr/2020/04/27/ma-plateforme-de-travail-collaboratif-nextcloud-en-5-minutes/ https://blog.zwindler.fr/2020/04/27/ma-plateforme-de-travail-collaboratif-nextcloud-en-5-minutes/#comments Mon, 27 Apr 2020 06:45:00 +0000 https://blog.zwindler.fr/?p=5706 Tutoriel pour installer la plateforme de travail collaboratif Nextcloud en moins de 5 minutes à l'aide de scaleway et d'ansible

Cet article Ma plateforme de travail collaboratif Nextcloud en 5 minutes est apparu en premier sur Zwindler's Reflection.

]]>

C’est quoi Nextcloud ?

Par où commencer ? Nextcloud, c’est tellement de choses ;-)

Historiquement, Nextcloud est un fork du projet Owncloud, qui visait à fournir un service en ligne de stockage de fichier via une interface web. Un peu comme Dropbox, mais hébergé par vous, chez vous, et donc respectueux de votre vie privée !

Mais aujourd’hui, Nextcloud c’est bien plus que ça. C’est une véritable plateforme de travail collaboratif avec certes un service de gestion, de partage et de synchronisation de fichiers entre plusieurs devices/utilisateurs, mais aussi un serveur libreoffice/collabora de l’édition de fichiers collaboratifs (Office 365/Google Docs), un serveur Talk (visioconférence), calendrier, gestion de notes et bien plus encore.

La solution s’est même nettement étoffée depuis la version 18 qui vient de sortir, avec de très nombreuses extensions.

Pourquoi attendre si longtemps pour en parler ?

La première fois que j’ai testé Owncloud, c’était en 2014 lorsque j’ai créé (sans succès) une entreprise d’infogérence spécialisée dans les outils open source. Le but était de fournir, entre autre, un service autohébergé pour justement remplacer Dropbox. Cette annecdote fera peut être sourire certains de mes lecteurs, très impliqués dans Nextcloud :-p.

A l’époque, je n’avais pas du tout aimé Owncloud, que j’avais trouvé moyen en terme d’ergonomie, très lent, etc.

Récemment cependant, Nextcloud a gagné beaucoup de traction et c’est tant mieux, car ça m’a forcé à rester l’outil, qui a vraiment évolué pour le mieux.

Et comment on va faire pour le déployer si vite ?

Ahah ! En voilà une bonne question… Grosse surprise, on va déployer tout ça avec un playbook, bien sûr !

Pour ceux qui ne savent pas, à chaque fois que j’installe un soft, j’automatise ça avec ansible, car j’automatise TOUT avec ansible.

Je vous met à disposition sur Github cet ensemble de playbooks qui vous permettront d’installer un serveur Nextcloud de A à Z en partant d’un serveur Ubuntu 18.04 sur lequel vous avez un accès SSH.

Et pour ceux qui n’ont pas de serveur à disposition, je vous ai également mis un playbook permettant de déployer une machine sur le cloud provider français Scaleway.

Pourquoi Scaleway ? Pas parce que j’ai le moindre partenariat avec eux (pas pour l’instant en tout cas), mais parce :

  • ils sont français
  • ils ont une super API et des modules Ansible qui marchent très très bien (j’ai même fais un live coding avec) avec l’inventaire ansible dynamique (ce que d’autres n’ont pas forcément)
  • ils proposent des instances à moins de 4€ par mois, payable à l’heure, ce qui est parfait pour des petits tests

Mais n’importe quelle autre machine sous Ubuntu 18.04 fera l’affaire !

Créer une VM sur Scaleway

Je ne détaillerai pas l’instanciation de la VM sur Scaleway si vous choisissez cette option, car tout est expliqué en détail sur le README.md du dépôt Github. J’ai également abondamment parlé de ce sujet à l’occasion d’autres articles

Préparer l’installation de Nextcloud

Avant de pouvoir installer Nextcloud sur notre nouveau serveur Ubuntu 18.04 tout neuf, il est important de choisir un nom de domaine pour notre futur service Nextcloud. Ajoutez un CNAME permettant de mapper ce nom de domaine sur l’adresse IP de votre machine virtuelle Ubuntu.

Maintenant que le serveur Ubuntu 18.04 est disponible et que le futur service est résolvable, on dispose de 2 méthodes pour installer Nextcloud. Soit on lance le playbook ansible en local sur la machine Nextcloud, soit on l’installe à distance via ansible.

Si on le lance en local

Récupérer le repository zwindler/ansible-nextcloud directement sur le serveur via un git clone. Nous utiliserons le paramètre "-i hosts_local" quand on exécutera ansible-playbook.

Si on a généré une VM avec Scaleway

Dans ce cas, on profitera de la fonctionnalité d’inventaire dynamique fournie par Scaleway. Nous utiliserons le paramètre "-i dynamic_inventory.yml" quand on exécutera ansible-playbook.

Si vous voulez installer à distance

Il sera nécessaire de pouvoir se connecter en SSH à la machine distante mais aussi de générer un inventaire pour qu’ansible sache sur quel machine il doit se connecter. Pour le faire on créera un fichier texte avec l’IP du serveur distant, et nous utiliserons "-i hosts_distant" quand on exécutera ansible-playbook.

echo "IP_of_the_server" > hosts_distant

Installer Nextcloud

En partant du principe que vous avez utilisé la méthode Scaleway avec l’inventaire dynamique, voilà ce que vous devrez faire :

ansible-playbook -i dynamic_inventory.yml -u root nextcloud_install.yml

Le playbook vous promptera pour renseigner un certain nombre de variables qui correspondent à votre installation :

MariaDB root password: awesome_mariadb_password
Nextcloud MariaDB password: awesome_mariadb_user_password
Your domain: zwindler.fr
Nextcloud HTTPS port [8443]: 443
Nextcloud instance name (URL will be https://[thisvalue].[your_domain]) [nextcloud]: nextcloudscw

A l’issue du playbook, vous devriez pouvoir vous connecter sur votre instance pour finaliser l’installation. Lorsque vous vous connecterez pour la première fois, vous tomberez sur un écran qui vous demandera une partie des informations rentrées préalablement

Et la sécurité ?

Et oui, la sécurité pour un outil aussi sensible que vos documents, c’est important.

Heureusement, Nextcloud est un outil bien packagé et un projet pour lequel la sécurité est au cœur du développement.

Nextcloud met à disposition un scan de sécurité (scan.nextcloud.com) qui vous permettra de vous tester contre un certain nombre d’attaques connues.

Comme vous pouvez le voir, ça se passe plutôt bien ;-)

De même, la configuration nginx (le frontal de notre serveur) coté TLS est elle aussi sécurisée. Par défaut, je désactive TLS 1.0 et 1.1, ce qui peut poser des soucis pour les plus vieux appareil mais permet d’obtenir un joli A+ chez SSL Labs

Dans le cas où vous souhaiteriez les réactiver, c’est possible (il y a un flag dans le playbook) mais dans ce cas là la note sera rétrogradée à B.

Et c’est fini ! Have fun !

Cet article Ma plateforme de travail collaboratif Nextcloud en 5 minutes est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/04/27/ma-plateforme-de-travail-collaboratif-nextcloud-en-5-minutes/feed/ 8 5706
blog.zwindler.fr a 10 ans https://blog.zwindler.fr/2020/04/21/blog-zwindler-fr-a-10-ans/ https://blog.zwindler.fr/2020/04/21/blog-zwindler-fr-a-10-ans/#comments Tue, 21 Apr 2020 06:40:00 +0000 https://blog.zwindler.fr/?p=5745 Les 10 ans de blog.zwindler.fr, rétrospective et perspectives.

Cet article blog.zwindler.fr a 10 ans est apparu en premier sur Zwindler's Reflection.

]]>

10 ans déjà !!

Aujourd’hui est une date particulière pour moi. Vous l’aurez compris, le 21 avril 2010, il y a 10 ans jour pour jour, je postais mon premier article sur ce blog (pour dire que j’ouvrais un blog, ok… mais quand même).

Je venais de commencer mon stage de fin d’étude, j’avais un peu trop de temps libre et une passion dévorante pour mon métier que j’apprenais juste.

Il n’a pas fallu longtemps pour que je monte ma "salle serveur" (aka une tour avec un i7, beaucoup de RAM et 2 vieux disques dans un meuble Ikea).

En repensant à ça, je peux pas m’empêcher de sourire quand je vois des gens comme AtaxyaNetwork nous parler de "son DC" avec des paillettes dans les yeux (qui commence tout juste son propre blog).

On est vraiment tous les mêmes :-) et ça me fait chaud au cœur de voir qu’on est de plus en plus nombreux à vouloir partager notre passion.

Ah ben en fait, il y avait même pas le meuble au début…

Le but du blog

Le but du blog : mettre à disposition des articles techniques en français et sur des sujets peu traités par d’autres.

Mon objectif : être utile à des gens qui auraient des problèmes très spécifiques (comme moi) et qui ne trouvaient pas de ressource FR sur ces sujets.

C’est comme ça que j’ai commencé à parler de whiteboxing ESXi, mon premier gros sujet de l’époque car je me suis cassé les dents pour faire marcher VMware sur du matoss "petit budget" (oui, ESXi était compatible avec à peu près rien à l’époque) et quasiment personne n’en parlait.

Aujourd’hui bien sûr, le blog est un peu différent. Je traite de sujet parfois plus mainstream (Jitsi par exemple), j’ai finalement écris quelques billets d’humeur alors que j’avais dis que je ne le ferai pas (ici sur Cédric O ou là sur le "Kubernetes bashing") et un ou deux articles en anglais.

Upgrade de la salle serveur

Pendant longtemps, ma "salle serveurs" m’a permis de tester diverses technos, en particulier de bosser sur de la virtualisation grâce à mon hyperviseur et du stockage avec mon NAS fait maison (Synology, c’était trop cher pour moi en 2010). J’ai pu expérimenter sur ESXi puis Proxmox pour le premier, les technos pour un NAS/MediaCenter et ZFS pour le second.

J’ai aussi pu partager avec vous en 2014 la conception 3D de mon "rack" perso, sur une inspiration du mythique "Red Helmer", faite avec Sketchup, des panneaux de MDF et beaucoup de peinture rouge.

J’ai surtout découvert que penser l’airflow d’un boitier n’est pas si trivial qu’il n’y parait…

Une nouvelle façon de travailler

En 10 ans, mine de rien, on peut dire que le métier de Sysadmin a beaucoup changé. En 2010, la virtualisation complète commençait juste à se généraliser en entreprise. On faisait du Windows, de l’Unix bien fermé, le tout supervisé avec du Nagios. Aujourd’hui, je bosse quasiment à 100% avec des technos open source (comme Kube)

J’ai même pu contribuer (à mon petit niveau) à des projets comme Ansible et XWiki que j’affectionne particulièrement.

Vous avez vu cette maitrise de Gimp ? Impressionnant !

D’autres centres d’intérêt

Pendant longtemps j’ai hésité à en parler car ça ne collait pas totalement avec l’idée de départ là aussi, mais j’ai aussi posté quelques articles sur le droit du travail. C’est un sujet qui me tient à cœur, pas toujours facile à aborder car très technique et souvent mal compris.

Finalement, ces articles font partie des plus lus du blog, ce qui pour moi est une grande fierté (surtout que je ne suis pas juriste) :

Comment voir l’avenir ?

Le blog a eu des hauts et des bas, mais ni plus ni moins que n’importe quel projet qui s’étalerait sur 10 ans.

Quand on me demande combien de temps je consacre à la veille et à ce blog, souvent je répond "entre 2 et 5h par semaine". En réalité, je n’en ai aucune idée (probablement plus, écrire l’article n’est que le sommet de l’iceberg) mais ce qui est sûr, c’est que c’est parfois exigeant de rester constant dans l’effort.

Si vous me demandez ce que j’en pense, aujourd’hui en particulier, je répondrai "plus motivé que jamais". Notamment grâce aux retours enthousiastes de certains lecteurs, que je remercie chaleureusement, mais aussi, de temps en temps grâce à des échanges avec des pairs (ingés, bloggeurs, …), ce que je trouve vraiment enrichissant.

Et la suite ?

Vous vous en doutez, j’ai prévu 2-3 petites choses pour les semaines qui viennent.

Dans les tiroirs, j’ai deux articles sur Nextcloud (que j’ai déjà teasé sur Twitter le mois dernier) et Jitsi prêts à sortir et planifiés. D’autres sujets que je n’ai pas encore traités (Cryptpad) ou que je voudrais approfondir encore (Helm, un bot Slack, …) ne sont pas bien loin d’être finalisés aussi.

Du coup, on fait quoi ? On rempile pour 10 ans de plus ?

:-D

Cet article blog.zwindler.fr a 10 ans est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/04/21/blog-zwindler-fr-a-10-ans/feed/ 3 5745
Découvrir Prometheus et Grafana par l’exemple https://blog.zwindler.fr/2020/04/13/decouvrir-prometheus-et-grafana-par-lexemple/ https://blog.zwindler.fr/2020/04/13/decouvrir-prometheus-et-grafana-par-lexemple/#comments Mon, 13 Apr 2020 06:40:00 +0000 https://blog.zwindler.fr/?p=4608 Tutoriel de l'utilisation de Grafana et Prometheus par l'exemple pour découvrir comment créer des Dashboard, ajouter des variables, choisir la métrique, ...

Cet article Découvrir Prometheus et Grafana par l’exemple est apparu en premier sur Zwindler's Reflection.

]]>

Grafana et Prometheus

Ça fait plusieurs articles que je vous parle de Prometheus et de Grafana, notamment pour l’installer. Mais je n’avais pas encore pris le temps de faire un article pour vous montrer comment les utiliser (et pourquoi ces deux outils sont géniaux) !

Typiquement, ça va nous permettre de réaliser ce genre de dashboard, qui permettra aux équipes (production, dev, voire même équipes fonctionnelles) de voir en un coup d’œil si tout va bien ou au contraire, ce qui va mal.

Un cas utile

Et tant qu’à présenter les outils, je me suis dis que j’allais utiliser un des exemples que j’avais eu à mettre en place dans la vraie vie : tester que mes déploiements Kubernetes respectent bien l’anti-affinité.

Cet exemple est volontairement "un peu complexe", car il a vocation à vous permettre d’appréhender d’un seul coup plusieurs concepts qui seront utiles pour bien débuter dans Grafana et Prometheus. Notamment, la sélection de la bonne métrique, le langage PromQL, l’ajout de variables dans les dashboards, etc.

Note : Pour ceux qui ne l’ont pas, dans l’orchestrateur de containers Kubernetes, il est possible d’indiquer à l’outil que 2 replicas d’une même application (pour la redondance) ne doivent pas être exécutée sur la même ressource. Ça permet entre autre de garantir qu’il n’y a pas un SPOF au niveau de l’hôte qui exécute les containers alors qu’on croit avoir une application redondante.

Trouver les métriques dans Prometheus

Je vais partir du principe que vous avez déjà une plateforme opérationnelle, équipée d’un Prometheus et d’un Grafana. Si ce n’est pas le cas, je vous invite à faire une rapide recherche sur votre moteur de recherche préféré ou de consulter mes précédents articles sur le sujet.

La première étape avant de commencer à essayer de monter de beaux dashboards consiste à chercher la métrique qui nous intéresse. Car, il faut bien l’admettre, généralement Prometheus en collecte BEAUCOUP !

Rien que Prometheus lui même expose et stocke plus de 700 métriques

On va donc se connecter sur notre serveur Prometheus, puis requêter l’ensemble des métriques disponibles pour en trouver une qui permette de répondre simplement à notre problème.

Pour reprendre l’exemple que j’ai choisi, je veux :

  • pour tous les Pods
  • m’assurer que plusieurs Pods d’un même déploiement ne sont pas exécuté sur le même serveur

Pour ça, j’ai donc besoin d’avoir une métrique qui me permettre d’avoir tous les Pods, un information sur le Deploiement concerné, ainsi que le Node sur lequel le Pod est exécuté.

container_last_seen

Il y a probablement plusieurs façon de répondre à cette interrogation, mais une des solutions qui marchent plutôt bien pour moi est d’utiliser la métrique container_last_seen.

En recherchant des métriques dans la console de Prometheus, j’ai pu remarquer que cette métrique donne, pour tous les containers, la date à laquelle il a été vu pour la dernière fois, ainsi qu’un certain nombre d’information sur chaque container.

On valide sur un cas particulier

Pour vérifier que la métrique que je vous indique répond bien à notre problème, je vous propose de tester avec un exemple.

La requête PromQL suivante permet d’afficher les containers responsable de la résolution DNS interne de mon Kubernetes (déployé dans le namespace kube-system) :

container_last_seen{container_name=~".*dns.*",namespace=~"kube-system"}

container_last_seen{[...],container_name="dns",instance="node1",namespace="kube-system",pod_name="coredns-xxxxxxxx-yyyyy",[...]}	1577569793
container_last_seen{[...],container_name="dns",instance="node2",namespace="kube-system",pod_name="coredns-xxxxxxxx-zzzzz",[...]}	1577566730
container_last_seen{[...],container_name="dns",instance="node3",namespace="kube-system",pod_name="coredns-xxxxxxxx-aaaaa",[...]}	1577569313

Pour ceux qui débutent en PromQL, il s’agit du langage de requêtage de Prometheus, et qui permet entre autre de filtrer les timeseries affichées en fonction de critères (listés dans la partie entre les accolades).

Dans les résultats de la requête, on a bien :

  • le nom de notre Deployment (container_name)
  • le nom de l’hôte qui héberge le container (instance)
  • le nom du Pod (pod_name)
  • le namespace

Créer notre visualisation dans Grafana

Maintenant qu’on a trouvé la métriques qui nous intéresse, on peut aller dans Grafana et créer un nouveau Dashboard

Puis un nouveau Panel dans notre Dashboard fraichement créé :

A partir de là, on pourrait directement afficher les données de notre métrique, mais ça ne serait pas très informatif. On serait noyé sous une masse de conteneurs, chacun avec leurs variables.

Bref, on va devoir restreindre tout ça, notamment via des variables, pour que ça devienne exploitable !

Il y en a beaucoup trop

Dans la capture que j’ai faite juste avant, j’ai quand même été obligé de restreindre à un seul namespace, pour ne pas noyer Prometheus et Grafana. Et encore, c’est (toujours) parfaitement inexploitable.

Clairement, on ne va pas vouloir se contenter d’une sélection "statique" des namespaces, au risque de devoir faire un graphique par namespace Kubernetes (et vous en avez peut être beaucoup).

On va donc récupérer la liste des namespaces disponibles dans Prometheus et l’afficher dans une liste déroulante dans notre Dashboard. Cette liste permettra de filtrer les données par namespace pour ne pas faire planter Prometheus.

Les variables dans le Dashboard

Pour se faire, on va devoir de nouveau trouver la valeur la plus adaptée dans notre source de données Prometheus.

Je ne vais pas vous faire retourner dans Prometheus pour ça, celle que moi j’utilise, c’est celle ci :

kube_namespace_labels{namespace!~"kube-.*|default"}

Cette requête PromQL permet de lister l’ensemble des namespaces présents dans votre cluster Kubernetes, puis, entre les accolades, de filtrer pour retirer les namespaces respectant les regexp "kube-.*" et "default".

Pour autant, on est pas encore complètement sorti d’affaire puisqu’on doit maintenant récupérer uniquement la partie rouge dans ma capture d’écran, qui est la liste des noms des namespaces.

Arrive alors Grafana, qui fournit une fonction supplémentaire label_values, et qui permet, à partir d’une liste des timeseries Prometheus, de récupérer la valeur d’un seul champ de la timeserie :

label_values(kube_namespace_labels{namespace!~"kube-.*|default"},namespace)

Et tant qu’a y être, on va également se garder sous le coude une autre requête, quasiment identique, mais qui va nous permettre d’avoir la liste des déploiements présents dans votre cluster pour un (ou plusieurs) namespaces donnés :

label_values(kube_deployment_labels{namespace=~"$k8snamespace"}, deployment)

A partir de là, je peux ajouter des Variables dans mon Dashboard. Pour le faire, on doit cliquer sur la roue crantée en haut à droite de notre Dashboard :

Puis ouvrir le menu "Variables" et ajouter les variables

A partir du moment où votre source de données et votre requête est entrée dans les champs Data source et query, Grafana va vous donner un aperçu des valeurs qui seront disponibles (tout en bas du formulaire). Un bon moyen de vérifier que tout est bon avant de passer à l’étape suivante.

Dans le dashboard, nos variables apparaissent !

On sauvegarde et on retourne dans notre Dashboard.

Si tout s’est bien passé, on a maintenant, en haut de notre Dashboard, plusieurs variables avec des menus déroulant pour les sélectionner.

Mais ce n’est pas magique pour autant…

Point un peu pénible, on va devoir maintenant modifier toutes nos visualisations (graphiques) pour prendre en compte le fait qu’on ajoute une variable.

Je ne saurai donc que trop vous conseiller de bien réfléchir à comment vous allez variabiliser vos Dashboard avant d’avoir trop de visualisation statiques…

Ajout de la variable dans notre visualisation

On va donc ajouter la variable de manière à rendre nos graphiques dynamiques en fonction des valeurs sélectionnées dans le Dashboard, en modifiant la requête précédente par celle ci :

container_last_seen{namespace=~"$k8snamespace",container_name=~"$k8sdeployment.*",container_name!="POD"}

Qu’est ce qui a changé ?

Déjà, votre requête devrait répondre beaucoup plus vite ! Et pour cause, on vient non seulement de restreindre à un seul namespace (celui correspondant à la variable Grafana $k8snamespace et non plus la valeur fixe "kube-system") mais aussi à un seul Deployment donné (via $k8sdeployment).

Note: on a également dégagé les containers s’appelant "POD", qui vont fausser les statistiques.

Pour autant, notre graphique n’est toujours pas exploitable… On voit bien qu’il existe 2 Pods pour mon Deployment, et si on cherche bien on pourra voir dans la timeserie sur quel Node chaque replica tourne, mais c’est fastidieux…

La valeur de chaque timeserie monte de manière constante. C’est normal, c’est un « uptime »

Compter le nombre de Pod par Node

On va s’en sortir en tirant parti d’une autre variable présente dans nos timeseries (qu’on a justement remarqué plus haut) : instance, ainsi que d’une fonction d’aggrégation du PromQL : count.

Cette variable permet, dans notre requête de savoir sur quel Node Kubernetes se situe notre Pod.

Voilà ce qu’on obtiendra en modifiant la requête de notre visualisation :

count(container_last_seen{namespace=~"$k8snamespace",container_name=~"$k8sdeployment.*",container_name!="POD"}) by (instance)
Sans restriction sur le déploiement
Avec restriction sur le déploiement

Là, c’est encore fastidieux, mais on commence à entrevoir la réponse à notre question initiale.

Dans les derniers graphiques, les couleurs représentent les Nodes Kubernetes, et la valeur numérique le nombre de Pods qui tournent dessus pour un Namespace donné. On voit donc que globalement, pour cet exemple précis, les Pods semblent bien répartis (puisque qu’on sélectionne un seul Deployment, on a bien un Pod par Node).

Et la solution ?

Comment on fait pour voir tous les déploiements d’un coup ? Là, ça commence à devenir un peu plus touchy.

En vrai, la solution n’a plus vraiment d’intérêt en terme de découverte dans l’utilisation de Prometheus et de Grafana, dont j’ai montré les fonctionnalités lors des précédents paragraphes. Cependant, je ne vais pas vous laisser sur un cliffhanger ;-)

Je ne vais tout détailler, mais dans l’idée, la solution que j’ai trouvée (il y en a peut être de plus élégantes) est :

  1. de lister tous les couples nom du déploiement + nom de l’hôte qui l’héberge
  2. de regrouper par déploiement les items de la liste précédente et d’en faire une somme pour chaque déploiement
  3. de diviser chacun des items de cette dernière liste par le nombre total de container par déploiement
  4. d’afficher la liste des valeurs inférieures à 1
1. count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name,instance))

2. count(count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name,instance)) by (container_name)

3. count(count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name,instance)) by (container_name) / count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name)

4. count(count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name,instance)) by (container_name) / count(container_last_seen{namespace=~"$k8snamespace",container_name!~"^$|POD"}) by (container_name) < 1

Ainsi, avec cette dernière formule, on peut lister l’ensemble des Deployments Kubernetes dont il existe un nombre de replica supérieur au nombre de Nodes qui les hébergent (et donc, de dénicher des soucis sur l’anti-affinités et par extension, de potentiels SPOF).

CQFD :-D

Cet article Découvrir Prometheus et Grafana par l’exemple est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/04/13/decouvrir-prometheus-et-grafana-par-lexemple/feed/ 3 4608
Sécurité des mots de passes ESXi 5.X et 6.X https://blog.zwindler.fr/2020/04/06/securite-des-mots-de-passes-esxi-5-x-et-6-x/ https://blog.zwindler.fr/2020/04/06/securite-des-mots-de-passes-esxi-5-x-et-6-x/#respond Mon, 06 Apr 2020 06:50:00 +0000 https://blog.zwindler.fr/?p=1807 Gestion de la sécurité des mots de passe locaux dans vSphere ESXi via un module PAM

Cet article Sécurité des mots de passes ESXi 5.X et 6.X est apparu en premier sur Zwindler's Reflection.

]]>

Pourquoi tu nous parles d’ESXi 5 ?

En voilà une bonne question ! Comme la majorité des blogueurs tech, j’ai dans mes brouillons une bonne 30aines d’articles en attente depuis plus ou moins longtemps (demandez à Seboss666 ce qu’il en pense).

Ca fait presque deux ans que je n’ai pas touché à un serveur VMware et pourtant, cette doc était pratiquement "prête à poster". Tout comme "Intégrer un RHEL 7 dans un Active Directory avec Ansible" et "Mise en place de DRBD 8.4 sous CentOS 6.3", mais c’est une autre histoire…

Et comme je n’aime pas gâcher, je "profite" du confinement pour déconfiner des vieilles docs avant qu’elles ne soient plus définitivement plus d’actualité (trop tard, vSphere 7 vient de sortir).

Les mots de passe dans vSphere

Un truc que je n’ai pas trouvé très très clair et qu’il est possible dans VMware d’avoir des comptes utilisateurs internes à l’ESXi avec des mots de passe plutôt bof complexes. En effet, il est tout à fait possible d’avoir un mot de passe avec que des lettres minuscules (voire même des chiffres ??) ce qui -nous sommes d’accord- est absolument catastrophique.

Lorsqu’on sait qu’on a parfois besoin de se loguer sur la console à distance et que l’émulation des terminaux KVM des constructeurs est une bouse intergalactique qui vous transforme votre AZERTY en un gloubiboulga à mis chemin entre le QWERTY et DVORAK, c’est parfois tentant…

Bref, j’ai voulu comprendre la logique de VMware pour l’acceptation de la longueur des mots de passe.

En fait, tout est expliqué, en fonction des versions, dans ce KB. Vous avez également une version uniquement pour vSphere 5 disponible en français.

Password quality-control PAM module

Je ne savais pas, mais VMware utilise tout simplement le module PAM Password quality-control PAM. Il permet de réaliser des contrôles simples sur la qualité des mots de passe choisi pour les utilisateurs Linux.

Globalement, on dispose, via ce module, de différents flags pour valider une politique simple de gestion de mot de passe sur un système Linux (car oui, ESXi c’est un Linux).

Les arguments retenus par VMware sont uniquement basés sur une taille minimale de mots de passe en fonction du nombre de type de caractères différents dont dispose ce mot de passe. Voilà à quoi ça ressemble :

password requisite /lib/security/$ISA/pam_passwdqc.so retry=N min=N0,N1,N2,N3,N4

Par défaut, voici ce que vous allez trouver dans vSphere 6 :

  • retry=3 : Un utilisateur a droit à trois tentatives pour entrer un mot de passe suffisant.
  • N0=12 : Le mot de passe comportant des caractères d’une seule classe doit contenir au moins 12 caractères.
  • N1=9 : Le mot de passe comportant des caractères de deux classes doit contenir au moins neuf caractères, mais qui n’est pas éligibles aux conditions des passphrases.
  • N2=8 : Le mot de passe respecte les conditions des passphrases. Il comporte des caractères de deux classes et doit contenir au moins huit caractères.
  • N3=7 : Le mot de passe comportant des caractères de trois classes doit contenir au moins sept caractères.
  • N4=6 : Le mot de passe comportant des caractères des quatre classes doit contenir au moins six caractères.

Procédure pour modifier la politique de sécurité

Si pour une raison ou pour une autre, vous souhaitez modifier ces paramètres (pour les durcir, hein !), voici la marche à suivre :

  • Connectez-vous au Shell ESXi et obtenez les privilèges root.
  • Ouvrez le fichier passwd avec un éditeur de texte.
vi /etc/pam.d/passwd
  • Modifiez la ligne suivante :
password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=disabled,20,20,15,10

Cette commande vous permettra de désactiver la possibilité d’ajouter des utilisateurs dans ESXi dont les mots de passe n’ont qu’une classe de caractères et de complexifier fortement les autres types de mots de passe.

Il existe de nombreux autres paramètres. Je vous invite à aller lire la page man de ce module pour améliorer encore la sécurité des mots de passe dans vos ESXi.

Bonus GUI pour ESXi 6.0

Si vous êtes allergique à la console jaune et noire d’ESXi (ou que vous n’avez pas la main sur un KVM), sachez que depuis ESXi 6.0, il est possible de modifier directement les valeurs du module PAM depuis la console vSphere. Ça se passe dans les options avancées de l’hôte (cf cet article de Vladan).

Password Complexity Rules – change here where In previous versions of ESXi, password complexity changes had to be made by hand-editing the /etc/pam.d/passwd file on each ESXi host. In vSphere 6.0 now this can be done by adding an entry in Host Advanced System Settings, enabling centrally managed setting changes for all hosts in a cluster.

Ouah, cébo !

Cet article Sécurité des mots de passes ESXi 5.X et 6.X est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/04/06/securite-des-mots-de-passes-esxi-5-x-et-6-x/feed/ 0 1807
Épidémie de ruptures de périodes d’essai https://blog.zwindler.fr/2020/03/27/epidemie-de-ruptures-de-periodes-dessai/ https://blog.zwindler.fr/2020/03/27/epidemie-de-ruptures-de-periodes-dessai/#comments Fri, 27 Mar 2020 07:45:00 +0000 https://blog.zwindler.fr/?p=5631 En ce contexte de confinement, les ruptures de période d'essai suite au COVID 19 se multiplient. Pour autant, c'est illégal ! Je vous explique tout ici.

Cet article Épidémie de ruptures de périodes d’essai est apparu en premier sur Zwindler's Reflection.

]]>

COVID 19 + période d’essai = <3

Une fois de plus, je chamboule un peu l’ordre de mes publications relativement à l’actualité virale (aka. COVID 19). Après l’autohébergement d’un système de visioconférence opensource (Jitsi), aujourd’hui, on va parler de rupture du contrat de travail, dans le cadre particulier de la période d’essai.

Comme d’habitude pour tous les autres sujets dans cette catégorie Droit du travail, je rappelle que je ne suis pas juriste. Le droit du travail est un de mes hobbies et je fais un peu de veille là dessus.

Pour ceux qui ne veulent pas y passer du temps, je vous propose de vous résumer tout ça dans un seul et même article. Je commencerai par une petite remise en contexte, ensuite, je vous expliquerai les différents textes de loi ainsi que les jurisprudences et enfin je listerai tous les liens utiles en fin d’article.

Pourquoi parler de ça maintenant ?

Il ne vous aura pas échappé qu’il ne fait pas bon être indépendant ce mois ci (même dans l’informatique). Sur Twitter, je ne compte plus les messages du type "mon client vient de plaquer tous ses prestas, je suis en recherche d’une nouvelle mission". C’est un des aléas qu’on accepte lorsqu’on devient indépendant.

En revanche, là où c’est carrément plus craignosse, c’est quand des #ESN #BestPlaceToWork #BabyFoot #FreeBeerFriday, dans cette période peu faste en prospects, profitent des périodes d’essai pour se délester d’un peu de masse salariale a peu de frais.

Dans le microcosme Bordelais, où tout le monde dans l’IT se connaît, rien que cette semaine j’ai eu deux exemples en deux jours. L’un, consultant, était fortement incité à prendre des congés sans soldes sous peine de se faire virer (ce qui s’est finalement passé, dés le premier jour). L’autre a préféré céder et a accepté de signer un avenant pour décaler son embauche à juin (sans chômage ni rien, of course).

Et bien sûr, je ne vous parle pas de cas de PMEs qui risquent de couler du jour au lendemain si le gérant ne prend pas ce genre de mesures hein ? On parle de SSII avec les reins solides.

Au cas où c’était pas encore clair, ça me plaît pas beaucoup

Et au delà de Bordeaux ?

Vous vous en doutez, ça ne se limite évidemment pas à Bordeaux. La première personne que j’ai vu en parler c’est Shirley Almosni Chiche. Pour ceux qui ne la connaissent pas, je vous invite à aller voir son Twitter (ou LinkedIn), elle réinvente avec humour le recrutement dans l’IT.

Dans les premiers jours du confinement, elle a commencé à recevoir une pluie de message du type : "toutes les personnes en période d’essai ont été virée". A tel point qu’elle a commencé à en parler ouvertement, sous le hashtag #coronaviré et créé un fichier "d’entraide recrutement" où les entreprises qui recherchent même en cette période déposent leurs annonces.

https://twitter.com/shirleyalmosni/status/1240569333140590592?s=20

La presse commence à parler du phénomène : un journaliste de l’Obs a fait un article là dessus (attention, paywall).

Et alors que je pensais que ça ne pouvait pas être pire, il commence même à y avoir des mentions de rupture de 200 périodes d’essai d’un coup dans une ESN de 2700 personnes. C’est tellement énorme que j’ai du mal à y croire et j’espère sincèrement que c’est faux.

En revanche, des noms commencent à sortir dans la presse (je vous laisse lire l’article qui suit, ça vaut le détour).

https://france3-regions.francetvinfo.fr/occitanie/haute-garonne/toulouse/coronavirus-16-salaries-altran-toulouse-se-voient-remercies-fin-leur-periode-essai-1810108.html

Mais la période d’essai, c’est quoi finalement ?

OK, on a fait le constat. Maintenant on peut rentrer dans le vif du sujet.

Vous l’aurez compris, mon plaisir dans la vie, c’est de citer Légifrance (Article L1221-25). Mais il se trouve que sur service-public.fr, il existe des FAQ plutôt bien faites et bien plus digestes pour les gens normaux :

La période d’essai permet de s’assurer que le salarié embauché convient au poste sur lequel il a été recruté. Elle permet également au salarié d’apprécier si les fonctions occupées lui conviennent

Cette phrase a l’avantage d’être très claire. La période d’essai, c’est pour que l’employeur s’assure que le salarié correspond au poste (et accessoirement au salarié de savoir si le poste lui convient).

Elle a une durée limitée, potentiellement reconductible (avec un délai de prévenance et si le contrat de travail le prévoit). Elle peut surtout être rompue facilement, ce qui a l’avantage, pour l’employeur et pour le salarié de ne pas passer par la case licenciement/démission (et donc éviter indemnités pour l’un, et long préavis pour l’autre). Une fois de plus, moyennant un délai de prévenance qui dépend de la durée pendant laquelle le salarié a été présent dans l’entreprise.

Un employeur peut il justifier une rupture de période d’essai avec le COVID 19 ?

Je pourrais essayer de vous convaincre que c’est illégal (j’ai déjà essayé et bizarrement on ne me croit pas). Ceux qui en parlent le mieux, c’est les équipes du ministère du Travail. Difficile de dire qu’ils ont tort sur ce sujet ;-)

https://travail-emploi.gouv.fr/actualites/l-actualite-du-ministere/article/coronavirus-questions-reponses-pour-les-entreprises-et-les-salaries

La rupture de la période d’essai, peut on la contester ?

On a souvent tendance (moi le premier) à dire aux gens qui se voient notifier la rupture de leur période d’essai qu’ils ne pourront rien faire. C’est bien évidemment juridiquement inexact. Même si dans les fait, ça va souvent revenir à ça, mais on y reviendra.

Le compte Twitter @AuPalais (a priori tenu par une avocate) résume dans un thread en quoi ce n’est pas si simple :

https://twitter.com/Tux_Ben/status/1239925977595236352?s=20

Grosso modo, si vous vous retrouvez dans le cas des "coronavirés", voici ce que vous devez vérifier :

  • La clause de période d’essai existe-t-elle dans le contrat de travail que vous avez signé (et est valide juridiquement parlant) ?
  • Les délais de prévenance ont-ils été respectés ?
  • Est ce que la période d’essai était justifiée ?
  • Est ce que la période d’essai n’est détournée de sa finalité ?

Il existe déjà une jurisprudence très riche sur des cas de ruptures lors de la période d’essai, notamment pour des cas de discriminations. Le coronavirus n’est donc qu’une nouvelle fausse excuse pour réduire la voilure.

Contester la rupture de sa période d’essai

Je pense maintenant que nous sommes tous d’accord, rompre une période d’essai pour cause de COVID-19 (ou baisse d’activité ou autre), c’est illégal. Pour autant, puis-je le contester ?

Dans les faits, AuPalais a bien techniquement raison quand elle dit qu’une rupture de période d’essai abusive est bien évidement interdite et contestable. Mais que peux faire le salarié injustement remercié ?

D’abord, on peut commencer par un courrier recommandé pour contester la rupture de la période d’essai. Comme dit JC Dusse, sur un malentendu… Je vous met en fin d’article un modèle partagé par Shirley (encore elle ;-p).

Comme tout litige de ce genre, on va probablement surtout devoir saisir la juridiction prud’homale (les Prud’hommes) pour rupture abusive de sa période d’essai. Le but sera de prouver que la rupture n’était pas liée aux capacités du salarié. Simplement un moyen pour l’employeur de se débarrasser de la personne.

Parfois, ça sera relativement facile à prouver (preuves écrites, période d’essai rompue avant même que le salarié n’ait commencé à travailler à cause du COVID, …).

Mais dans tous les cas, l’issue sera toujours incertaine. Et quand bien même les prud’hommes donnent raison au salarié, la bataille n’est pas terminée pour autant puisque l’employeur peut se pourvoir en cassation. Un contentieux peut alors durer des années.

Pour quel effet ?

On voit bien que contester la rupture de sa période d’essai est hasardeux et sera probablement coûteux en temps comme en argent pour le salarié (là où l’entreprise a probablement déjà un conseil juridique à disposition).

Cependant, ça peut valoir le coup si le gain à l’issue du contentieux en vaut la chandelle, non ?

Spoiler alert : non.

Imaginons qu’après une longue bataille juridique, le salarié finisse par gagner. La rupture de la période d’essai devient donc un licenciement (par exemple pour raisons économiques ou sans cause réelle et sérieuse) et ouvre droit d’une part à des indemnités de licenciement, et d’autre part potentiellement à des indemnités de dommages-intérêts.

Commençons par les indemnités prud’homales.

Vous vous souvenez peut être de la loi Macron de 2017 avant qu’il ne soit président.

A l’époque, le patronat (surtout le Medef) écumait les plateaux TV/radio pour expliquer que si les dirigeants d’entreprises n’embauchaient pas, c’est qu’ils avaient peur des indemnités en cas de contentieux avec des salariés.

Si le Medef ne martelait pas depuis des années qu’aller aux prud’hommes, c’est risquer de perdre sa boîte, alors que ce n’est quand même pas ce qui se passe dans l’immense majorité des cas, les dirigeants ne seraient pas dans cette illusion.

Philippe Louis, représentant de la CFTC dans https://lentreprise.lexpress.fr/rh-management/droit-travail/plafonnement-des-indemnites-prud-hommes-on-a-monte-ce-sujet-en-epingle_1911319.html

Depuis cette loi, les indemnités sont donc plafonnées (minima/maxima) en fonction de votre temps de présence dans l’entreprise. Vous pouvez retrouver une autre fiche sur service-public.fr à ce sujet.

https://www.service-public.fr/particuliers/vosdroits/F33999

Ainsi, dans le cas d’une période d’essai, vous aurez nécessairement moins d’un an d’ancienneté (6-7 mois grand maximum). Vous aurez donc droit à une indemnité plafonnée à 1 mois de salaire. Et encore, si vous gagnez !

A noter : le plafond est de 6 mois dans le cadre de cas de discrimination, harcèlement, etc. Enfin c’est pas foufou non plus quand on vient de se faire harceler…

Et si vous touchez des dommages-intérêts qui vont au-delà des indemnités légales dont on vient de parler (on parlera alors d’indemnités supra-légales), sachez que ces sommes seront de toute façon déduites de vos allocations pôle emploi (via l’extension du délai de carence).

Elle est pas belle la vie ?

Et le chômage justement ?

Je vais partir du cas que je connais le mieux : l’IT.

Imaginons un développeur salarié qui vient de changer de boite. Il a donc démissionné, et commence dans la nouvelle.

Coronaviré, son nouvel employeur met fin à sa période d’essai, officiellement parce qu’il ne fait pas le taf. Officieusement pour réduire la voilure en cette période de confinement où il va être difficile de lui trouver une mission chez un client.

Si notre dev a cotisé 3 ans consécutivement juste avant, pas de problèmes. Au delà du fait qu’il vient de se faire jeter comme une vieille chaussette, il aura droit à l’allocation Pôle Emploi.

En revanche, s’il n’a pas cotisé assez (ou pas 3 années consécutives, ce qui peut arriver vu le turnover dans l’informatique), il est nécessaire d’avoir travaillé au moins 65 jours dans votre nouvel emploi pour y prétendre (Décret de 2019 sur l’assurance chômage).

https://twitter.com/tifok_/status/1242738453638516738

Tout ceci est expliqué en détail dans cet article de cadremploi.fr ou sur Légifrance.

Récapitulons

Rompre les périodes d’essai pour cause (affichée ou non) de Coronavirus est illégal.

Le faire peut conduire l’employeur a être condamné à verser des indemnités au salarié.

Cependant, encore faudra-t-il que le salarié :

  • engage un recours aux prud’hommes
  • gagne
  • éventuellement, gagne aussi en cassation (~2-3 ans de procédure)
  • obtienne une indemnité

Pour au final recevoir au mieux un mois de salaire (et tout ce qui sera au dessus sera déduit du chômage via le délai de carence).

Et enfin, si vous n’aviez pas cotisé 3 ans de suite, il y a de grandes chances pour que vous n’ayez pas le chômage non plus (délai de carence de minimum 4 mois).

Je sais pas ce que vous en pensez, mais moi j’ai l’impression que le salarié (seul) à tout à perdre et surtout rien à y gagner à aller aux prud’hommes. La solution est peut être que les salariés soient solidaires dans ces périodes et tentent de faire valoir leurs droits ensemble (CSE, association, …).

Tant que ça ne sera le cas, les employeurs peu scrupuleux continueront à faire comme bon leur semble.

Cet article Épidémie de ruptures de périodes d’essai est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/03/27/epidemie-de-ruptures-de-periodes-dessai/feed/ 6 5631
Visualisez les limites de votre confinement avec unkm.fr https://blog.zwindler.fr/2020/03/25/unkm-fr/ https://blog.zwindler.fr/2020/03/25/unkm-fr/#comments Wed, 25 Mar 2020 09:00:00 +0000 https://blog.zwindler.fr/?p=5625 Service en ligne permettant de tracer un cercle de 1km de rayon autour de votre habitation dans le cadre des sorties sportives suite au confinement COVID-19

Cet article Visualisez les limites de votre confinement avec unkm.fr est apparu en premier sur Zwindler's Reflection.

]]>
Aujourd’hui, je vais faire un bref article pour parler du side project [qu’un collègue](https://twitter.com/Pixeye33) vient de démarrer et que je trouve génial.

A moins d’avoir vécu confiné AVANT la crise du coronavirus (ahah), vous êtes probablement au courant que les déplacements sont très limités (restez chez vous). Cependant il existe une dérogation depuis le début du confinement décrété le 16 mars 2020 : aller brièvement faire du sport.

Au début, le flou était total, les consignes contradictoires. Beaucoup s’en sont d’ailleurs amusés (notamment les réponses du CM du Ministère des Sports sur Twitter).

Heureusement, depuis lundi soir, les règles ont été précisées :

Et alors ?

Sauf que 1km autour du domicile, à moins d’habiter au centre d’une route de la forme d’un cercle de 1km de rayon, c’est pas facile à délimiter. On peut bien prendre une carte routière et tracer un cercle (c’est très digital) mais avec le numérique on doit pouvoir faire mieux !

(vous avez vu le troll subtil digital/numérique?)

Long story short, mon collègue @Pixeye33 a eu la bonne idée de faire un petit service en ligne pour vous aider à faire ça.

Le site s’appelle https://unkm.fr et comme son nom l’indique il va vous tracer un cercle de 1km de rayon à l’endroit où vous allez cliquer sur la carte.

Pour le maire de Bordeaux ça donne ça

Point appréciable, il n’y a pas de trackers ;-). Ce qui n’est peut être pas le cas d’autres services en ligne…

Merci Kimetrak (ping NextInpact)

Mise à jour du 02/04/2020

Plusieurs nouvelles fonctionnalités très utiles ont fait leur apparition dans l’application :

  • la possibilité d’utiliser la position actuelle de votre navigateur pour accélérer la recherche de la position où vous vous trouvez
  • l’affichage des coordonnées GPS du point choisi dans l’URL, ce qui permet de la sauvegarder si vous voulez revenir ou partager cette position avec quelqu’un

Et surtout, grâce à une contribution de Jean-Marie Favreau

  • la possibilité de tracer un parcours (pour une promenade) circulaire aux limites du cercle de 1km de rayon de votre confinement. Cette nouvelle fonctionnalité est hyper utile ! Merci à lui

Cet article Visualisez les limites de votre confinement avec unkm.fr est apparu en premier sur Zwindler's Reflection.

]]>
https://blog.zwindler.fr/2020/03/25/unkm-fr/feed/ 6 5625