Général Stack Overflow Survey: 80% of developers are unhappy : Les raisons de la frustration seraient techniques (dette technique, complexité de la stack technique), organisationnels (réunions, planning, pression) ou plus globaux comme les licenciements massifs dans la tech. IoT Why has the Internet of Things failed? : Moins de 50% des objets IoT seraint effectivement connectés. 3 barrières principales : la configuration intiale, l’(in)utilité de l’objet en lui-même et l’énergie (alimentation et communication). Sans utilitée avérée de l’objet, il ne sert à rien d’optimiser les deux autres. Si on a l’utilité, alors il faut trouver les meilleurs compromis pour avoir une bonne UX de configuraiton initiale et une gestion énergétique du device. Peut être juste la fin de la cycle de hype pour l’IoT et en route vers la maturité ? Ops PyIfra 3.0 & 3.1 : pyinfra se veut une alternative à Ansible. Si pyinfra ne dispose pas (encore) d’un nombre équivalent de modules à celui d’Ansible, il se distingue d’Ansible par le fait que les tâches ne sont pas décrites au format YAML mais sont du code Python. La version 3.0 résoud principalement les limitations de PyInfra 2.x sur son mode d’exécution en deux étapes (préparation puis exécution). A tester et à surveiller à défaut de pouvoir complètement remplacer des playbooks Ansible pour le moment… Python pylyzer : vous aimiez Ruff sur la partie linter, alors vous pourriez aimer pylyser sur la partie typage. Le projet est encore jeune et incomplet mais semble prometteur. Une extension VSCode est d’ailleurs disponible. uv: Unified Python packaging : l’équipe Astral, celle derrière ruff semble bien avancer sur leur gestionnaire de packages pour python (mais codé en rust). Si la version précédente se concentrait sur le remplacement de pip, cette version va plus loin et vise poetry ou pdm voir pyenv en allant jusqu’à l’instalation de python en lui-même. En plus des apports fonctionnels, les performances semblent aussi être au rendez-vous. Peut-être encore un peu tôt pour migrer vos projets dessus mais définitivement à surveiller. Sécurité The End of Role-based Security and the Rise of Attribute-based Security : le modèle des rôles est vite imparfait - un modèle basé sur les attributs serait plus flexible et adapté ? Rendez-vous à la fin du mois prochain pour une nouvelle édiiton.
Cloud Traefik Proxy 2.4 Adds Advanced mTLS, Kubernetes Service APIs, and More : Support du Proxy Protocol pour les services TCP, support avancé pour mTLS (et possible intégration Consul Connect) et support initial de la nouvelle API Service de Kubernetes pour les principales avancées. Le programme pour la 2.5 semble aussi alléchant : support HTTP/3, migration vers networking/v1 de Kubernetes et une nouvelle documentation (encore ?!). OVHcloud obtient le Visa de sécurité ANSSI pour sa qualification SecNumCloud : OVHCloud obtient la certification SecNumCloud de l’ANSSI pour sa solution “Hosted Private Cloud”. Code GitLab release feature report : le code qui permet de générer le rapport ce qui a changé entre les versions de Gitlab. SSH is the new GPG : les dernières versions d’OpenSSH permettent de signer un fichier. Une solution intermédiaire entre de la signature de fichiers à base de MD5 & co qui donnent des informations de conformité mais sans indiquer qui a signé le fichier et une solution GPG plus complexe à mettre en oeuvre ? Container et orchestration Using Podman and Docker Compose : podman, le “daemonless container engine” va permettre d’être utilisé avec docker-compose dans le cadre de la version 3.0. De quoi favoriser l’adoption de podman ? Infra as code New LibSSH Connection Plugin for Ansible Network Replaces Paramiko, Adds FIPS Mode Enablement : Ansible change de librairie pour les connexions ssh en remplaçant paramiko par libssh. Elle se veut plus performante et peut être requis dans un contexte demandant du FIPS. Pensez à installer le paquet libssh-dev(el) suivant votre distribution pour pouvoir installer ansible-pylibssh. Mes premiers essais ne notent pas une amélioration sensible des performances… à voir sur d’autres machines et dans la durée… IoT openHAB 3.0 Release et Release Notes : OpenHAB est une plateforme open source de gestion de périphétiques IoT et d’automatisation autour de ces périphériques. Elle est développée en Java, support 2000 “Things” (objets, équipements, protocoles). La version 3.0 apporte une refonte et l’unification de l’UI et des composants, le passage à Java 11 et plein d’autres choses. La migration depuis une version 2.x se fait assez simplement. Avec le nouveau moteur de règle, j’ai pu supprimer mon code spécifique. Reste encore la partie “Pages” à appréhender… J’avais préféré OpenHAB à Jeedom et Home Assistant Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 : la fondation Raspberry Pi se lance dans les micro-controlleurs avec le Pico au prix de 4$. Raspberry Pi PICO la carte Microcontrôleur de la Fondation : un article très détaillé sur la prise en main du pico. Observabilité Métriques, monitoring, push vs pull, Riemann, Vector : Panorama sur le push/pull dans le monde du monitoring et tour d’horizon des solutions existantes pour arriver à Vector dont je vous parlais le mois dernier. Une introduction à Vector : Tout est dans le titre, mise en place de quelques outils remontant des métriques et des logs et ingestion des métriques dans InfluxDB via Vector. OVHCloud > Logs Data Platform > Using Elasticsearch API to send your logs - Use Case: Vector : Si vous utilisez l’offre Logs Data Platform d’OVHCloud pour vos logs, vous pouvez utiliser le sink elasticsearch de Vector pour envoyer vos logs vers Logs Data Platform. First-class Kubernetes Integration for Vector : Dans le cadre de la release 0.11, Vector a annoncé un support de Kubernetes avec une phase de collecte et d’enrichissement des logs. Cela mériterait d’être creusé… Système CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) & Buffer overflow in command line unescaping: il est temps de patcher vos systèmes linux utilisant sudo - l’attaque permet de faire une élévation de privilèges si le fichier sudoers est présent sur le système (en général: /etc/sudoers). Les versions 1.8.2 à 1.8.31 et 1.9.0 à 1.9.5-p1 sont impactées, il faut passer en version 1.9.5-p2. Time Series Erlenmeyer and PromQL compatibility : OVHCloud, dans le cadre de leur offre OVH Metrics, a développé Erlenmeyer, un proxy qui permet de convertir différents format de séries temporelles (Promql, Influxql, OpenTSDB, etc) au format Warp 10 qui est utilisé pour stocker ces métriques. Le billet porte sur leur retour d’expérience sur l’utilisation du “PromQL compliance tester” pour valider qu’Erlenmyer supportait bien les requêtes PromQL. TimescaleDB 2.0 GA : User Defined Functions, Multi-Nodes, les fonctionnalités de la version Entreprise dans la version Communautaire et plein d’autres améliorations/corrections/optimisations. Cf TimescaleDB 2.0: A multi-node, petabyte-scale, completely free relational database for time-series Paris Time Series #9 : Comment gérer la labellisation des séries-temporelles et la détection d’anomalies grâce à InfluxDB ? : Présentation de Julien Muller d’ezako sur la labellisation de séries temporelles et de la détection d’aonomalies en s’appuyant sur InfluxDB pour le stockage de ces données temporelles. InfluxData closes 2020 with exponential cloud growth, expanding user base, and big new customers : bilan 2020 pour InfluxData avec quelques chiffres sur la croissance de leur offre cloud (x13), utilisateurs du free tier InfluxCloud (x5), Répartition des (nouveaux ?) cllients (OInfluxCloud) 55% USA et 45% Europe, 450K instances OSS actives, quelques grosses références et un développement à venir en Asie/Pacifique. Telegraf 1.17 : version pour laquelle je découvre le processeur Starlark. Ce processeur permet de définir une fonction sur les métriques permettant par exemple de ne remonter une valeur que si elle est différente de la précédente. Cela peut économiser des données dans des systèmes contraints. Infographic: What happened in 2020 for SenX? : retour de SenX sur l’actualité autour de Warp 10 (mais pas que) Parution des premiers tutoriels FLoWS : FLoWS Basic et FLoWS vs WarpScript Warp 10 2.7.2 : version de maintenance. Alerts are real time series : et si les alertes étaient elles-mêmes des séries temporelles ? S’il était assez évident de dissocier la partie génération de l’alerte (traitement) de la partie notification, on peut aller encore plus loin en matérialisant ces données d’alertes sous la forme d’une série temporelle. Une approche intéressante qui ouvre des possiblités de traitement et d’analyses complémentaires alors que les logiciels actuels ne persistent pas souvent/longtemps cette information. Utilisation des séries temporelles dans le cadre du Vendéee Globe : Vitesse et amures pour le bateau de Boris Herrmann - Seaexplorer Yacht Club de Monaco avec Warp 10 et l’ensemble des données du même bateau mise à disposition : Live data from Seaexplorer - Yacht Club de Monaco. Il y a des séries temporelles plus intéressantes que d’autres ! 😉 High Performance Sailing Monitoring for the Vendée Globe : le making-off du tweet ci-dessus et bien plus encore !
IaC Ansible Molecule 3.0 : l’outil de test des rôles Ansible est passé en version 3.0. Pas mal de changement avec l’externalisation des providers d’infrastructure sous la forme de module python et d’autres rationalisation. Une check list de migration est disponible Langages What Tens of Millions of VMs Reveal about the State of Java : NewRelic publie une synthèse des versions et configuration de Java déployées dans la nature. ~85% tourne encore sur Java 8 et 11% sur Java 11 et le tout principalement avec les versions fournies par Oracle. On se moquait des communautés PHP (pour PHP 5 à PHP 7) ou Python (2 vers 3) mais visiblement chaque langage d’un certain age rencontre les mêmes soucis. Time Series RedisTimeSeries Version 1.2 Is Here! : ce module qui apporte des fonctionnalités de séries temporelles à Redis (sans pour autant en faire une base de données orientée séries temporelles) passe en 1.2. On y trouve surtout des améliorations au niveau de la compression des données, des améliorations de performance et une rationnalisation de l’API. SenX publie un guide indiquant les propriétés d’une base de donnée timeseries et comment Warp10 se positionne sur les différents axes. Un joli travaille pédagogique. Warp10 a dépassé les 1000 fonctions InfluxDB 2.0 - beta 6 : améliorations de l’ensemble et l’apparition des premières fonctions géospatiales dans Flux. Le site du Paris Time Series Meetup est en ligne ; à défaut de meetup, vous pourrez y retrouver les vidéos et supports des précédentes éditions.
Cloud Announcement: Amazon S3 will no longer support path-style API requests starting September 30th, 2020 : Pour le stockage S3, AWS ne supportera plus le mode //s3.amazonaws.com/<bucketname>/key mais seulement le mode //<bucketname>.s3.amazonaws.com/key Container et Orchestration Rook v1.0 — A Major Milestone : Rook atteint le stade de la version 1.0 avec une amélioration de l’opérateur Ceph (simplification de la configuration, gestion des mises à jour, prise en charge des dernières versions de Ceph, etc), le driver Ceph CSI passe en bêta, le support d’EdgeFS passe en bêta également, l’opérateur NFS supporte l’approvisionnement dynamique et l’opérateur Minio a reçu également des améliorations. KubeDB 0.12 : cette version apporte principalement le support du sharding MongoDB et du Clustering MySQL et divers correctifs pour les autres “backends”. Announcing NGINX Ingress Controller for Kubernetes Release 1.5.0 : nouvelle version de l’ingress nginx avec une nouvelle configuration, des métriques (via prometheus), simplification de la gestion des certificats, etc. Grafana v6.2 Stable Release! : améliorations de sécurité sur le chiffrement des données des datasources, une nouvelle gauge et pleins d’autres améliorations. OpenEBS Project Update and whats coming in v1.0 : la solution de stockage sous kubernetes vient de sortir en version 0.9 et de rejoindre la CNCF. C’est l’occasion de faire un point sur le projet et la route vers la version 1.0 (Big) Data Kafka : Migrer un consommateur vers Streams et Connect : retour d’expérience intéressant sur la migration d’une intégration Kafka basée sur les producteurs/consommateurs vers une approche basée sur Kafka Connect et Kafka Streams. Security for Elasticsearch is now free : ces fonctionnalités, prélablement disponibles uniquement dans la version commerciale, font partie de la version gratuite : chiffrement des flux via TLS, authentification et gestion des rôles. IAC Ansible 2.8 : de nombreuses améliorations au rendez-vous, la liste est très longue. Pour ma part, je note l’arrivée du support de “docker stack” pour gérer des déploiements sur un cluster docker swarm. IDE Remote Python Development in Visual Studio Code & VS Code Remote Development : Lors de PyCon 2019, Microsoft a annoncé la sortie de plusieurs extensions qui permettent d’améliorer l’expérience utilisateur du développeur python via des “remote containers”, du “remote ssh” ou du “remote WSL”. Sécurité The inception bar: a new phishing method : sur mobile, dès lors que l’utilisateur fait défiler sa page, la barre de navigation va disparaitre et du coup il est possible d’injecter une fausse barre de navigation et faire croire à l’utilisateur qu’il est sur un autre site. Time series Zabbix, Time Series Data and TimescaleDB : le billet explique en quoi Zabbix doit faire face à l’enjeu des séries temporelles dans le cadre d’une solution de monitoring. Comme ils veulent avoir une technologie leur permettant d’utiliser SQL, ils ont fait le choix de TimescaleDB. Le point intéressant est en fin d’article lorsque les performances de Postgres 10 et TimescaleDB sont comparées.
Container et orchestration The Journey to Traefik Enterprise Edition: Product Evaluation Docker Security Update: CVE-2019-5736 and Container Security Best Practices : Vous avez sans doute tous entendus parlé de la faille de runc, sous le doux nom de CVE-2019-5736. Le billet indique qu’il faut utiliser une version 18.06.2+ pour Docker CE et rappelle quelques bonnes pratiques de gestion de containers. Il n’y a pas que les serveurs à mettre à jour, il y a aussi les postes de développeurs, tout aussi exposés. rancher/runc-cve : Pour les gens qui ne peuvent pas mettre à jour le binaire docker, l’équipe de Rancher met à disposition des versions du binaire runc pour les versions depuis docker 1.12.6 jusqu’à 18.06.1 CVE 2019-5736 dans runC : l’article indique une façon d’exploiter la faille de RunC. Ansible Operator: What is it? Why it Matters? What can you do with it? : Ansible ne fournit pas un “oprator” en tant que tel pour Kubernetes mais de quoi permettre de créer un operator en se basant sur des playbooks/roles ansible. Ainsi, si votre ressource change d’état par exemple, alors le playbook associé est joué. Idem pour la gestion d’un upgrade, etc. Cela s’inscrit dans la logique de pouvoir développer ses propres Operator sans avoir à les écrire en Go. Mastering the KUBECONFIG file : différentes astuces autour de la gestion du fichier KUBECONFIG. KubeDB : KubeDB est un operator kubernetes qui vise à pouvoir déployer et gérer différentes bases sur un cluster kubernetes. Les bases supportées sont MySQL, Postgres, Elasticsearch, Redis, MongoDB et Memcached. Le niveau de fonctionnalités dépend beaucoup de la base de données retenus (la réplication semble être gérée pour Postgres mais pas pour MySQL par ex). La version 0.10 vient de sortir, apportant le support du cluster Redis Managed Kubernetes Service : OVH vient de lancer son offre kubernetes managé et pour l’utiliser depuis deux mois maintenant, elle fonctionne plutôt bien. DNS Attaques récentes contre les noms de domaine, que se passe-t-il ? et Détails techniques sur les récentes attaques contre les noms de domaine : deux articles autour de l’actualité autour des attaques DNS évoquée ces derniers jours. Cela permet de distinguer le vrai du faux et de mieux comprendre le fonctionnement de ces attaques dans la chaine DNS. (No)SQL Contrainte d’exclusion : nous connaissons tous les contraintes d’unicité mais parfois cela ne suffit pas. L’exmple montre comment mettre en place une contrainte d’exclusion sur la base de filtre de plage de réseaux : 192.168.122.0/28 est compris dans 192.168.122.0/24, donc si le 2nd est entré dans la base, le 1er ne pourra jamais être ajouté car il y a recouvrement. On retrouve un autre exemple de cette contrainte d’exclusion sur des dates dans l’astuce de la semaine de l’édition 289 de Posrgres Weekly. Understanding Database Sharding : un billet très explicite sur le partitionnement (sharding) de base de données, pourquoi et comment le faire. Il rappelle aussi les inconvénients à le faire et ce qu’il vaut mieux faire avant d’en arriver au sharding. TiDB: Distributed NewSQL with Kevin Xu : TIDB est une base qui se déploie sur Kubernetes et qui s’appuie sur RocksDB. Elle se veut “NewSQL” dans le sens où elle veut supporter à la fois des transactions et de l’analytique. Elle veut offrir notamment un support de MySQL mais dans les faits, le support reste encore limité. Pour ceux qui veulemnt déployer du MySQL sur Kubernetes avec du sharding, il vaut mieux aller voir du coté de Vitess Farewell to fsync(): 10× faster database tests with Docker : alors que l’actualité était plutôt sur le fait que Postgres gérait mieux les erreurs lors d’un fsync(), l’astuce consiste ici à désactiver fsync() et/ou à mettre le dossier des données de votre base en RAM pour accélérer les temps de déroiulement de tests. Testé chez un client, c’est un gain d’au moins 20s qui a été constaté sur une opération de quelques minutes (< 5). Timeseries Tutorial: Time Series Analysis with Pandas : un tutoriel assez progressif et didactique sur la manipulation de données temporelles avec Pandas. TSL: a developer-friendly Time Series query language for all our metrics : L’équipe d’OVH Metrics a crée son propre langage de requêtage orienté séries temporelles pour Prometheus et Warp10. Le billet raconte leur épopée dans le monde des base de données temporelles et comment ils en sont arrivés à créer TSL. On retrouve une syntaxe fonctionnelle et qui se retrouve assez proche de celle de Flux, qui lui supporte InfluxDB et Prometheus.
Automatisation / DevOps L’inversion du modèle de connexion d’Ansible avec Ansible-pull : killer feature ? - l’article revient sur une fonctionnalité méconnue d’Ansible de pouvoir fonctionner en mode pull (la machine cible récupère le playbook à exécuter) plutôt qu’en mode push (la machine sur laquelle est installée Ansible se connecte à la machine cible pour exécuter le contenu du playbook). Au-delà des limitations, cela peut avoir son intérêt dans quelques cas précis, mais pas la peine d’envisager de basculer complètement en mode pull. Si c’est ce que vous recherchez, alors changez d’outil. ARA Project : Il s’agit d’une surcouche à Ansible qui permet de stocker dans une base le résultat de l’exécution des playbooks et avoir ainsi une visualisation plus agréable et aussi disposer d’un historique d’exécution. A tester… Ne prenez pas peur si vous voyez que le projet est dans l’organisation Gtihub d’Openstack, il n’y a aucune dépendance à Openstack. Container Introducing Docker Engine 18.09 : Docker 18.09 est (enfin) sorti. Pour rappel, le rythme des releases est maintenant de 2 versions / an en Mars et Septembre (au lieu de 4 / an). Les améliorations semblent surtout être sous le capot avec la poursuite des intégrations de containerd et surtout buildkit. Il faudra aller du coté des release notes pour avoir plus de détail. Si vous vous connectez à distance à votre démon docker, vous pouvez maintenant le faire au travers d’une connexion ssh. dive : c’est un outil qui permet d’explorer les images docker, les layers dans le but de découvrir des moyens d’optimiser la taille de ses images. Un score d’efficacité est d’ailleurs indiqué. Cloud HDFS vs. Cloud Storage: Pros, cons and migration tips : un article assez équilibré par les équipes de GCP (Cloud Google) sur les cas d’usages ou il vaut mieux utiliser un stockage cloud ou HDFS (la solution de stockage d’un cluster Hadoop). Mark Shuttleworth reveals Ubuntu 18.04 will get a 10-year support lifespan : à l’occasion de l’Openstack Summit, Mark Shuttleworth (le CEO de Canoncial) a annoncé que la version LTS Ubuntu 18.04 serait supportée pendant 10 ans (au lieu de 5 ans) pour tenir compte des besoins de ses clients cloud et IoT. Il viste aussi clairement les clients de Red Hat, habitués à ce cycle de support. Traefik — Spoiler Season — Episode 1 : Traefik avait annoncé une phase de refonte de son code suite à la sortie de la version 1.7. Le billet présente les changements à venir avec une réorganisation des composants internes et de leur ordre d’exécution. nginxconfig.io : un petit générateur de configuration pour nginx. Il est basique mais il fait le job. Dataviz Grafana v5.3 Stable released! : Support de la datasource Google Stackdriver, Mode TV amélioré, des rappels sur les alertes (si une alerte est levée, une notification de rappel toutes les X minutes), un éditeur de requêtes pour Postgres, et plein d’autres améliorations. Langages Java.Next : un billet de synthèse sur les évolutins du langage Java en terme de versionning, d’apports de ces différentes versions et de la nouvelle politique de support d’Oracle (et les alternatives qui vont bien) Python in RHEL 8 : Python3 par défaut dans RHEL8 - Intéressant, ils font l’impasse sur la PEP 394 qui dit que python == python2 pour le motif de ne pas se tirer une balle dans le pied et qu’il y a alternatives --set python /usr/bin/python3 pour ça. NoSQL Elastic Stack 6.5.0 Released : la version 6.5 de la stack Elastic vient de sortir - des points intéressants : le module APM gère maintenanat les applications Java & Go, Elasticsearch supporte (en alpha) les drivers ODBC permettant ainsi de requêter ES depuis Excel (!!), Kibana se dote d’une notion d’Espaces (Spaces) pour segmenter les usages et les dashboard avec une notion de permissions, Logstash a un runner (experimental) en java plutôt qu’en ruby, Beats se dote de capacités autour du serverless et de l’auto-enregistrement auprès d’ES/Kibana. Sécurité Une faille 0day dans VirtualBox : Comment vous protéger ? : une faille au niveau de la pile réseau permet de remonter à la machine hôte via la VM. Pas besoin de désinstaller VirtualBox dans l’heure si vous faites des choses normales avec vos VMs. Si vous êtes chercheur en sécurité, là par contre, vaut mieux prendre des précautions supplémentaires pour que votre malware reste dans la VM (si infectée). URLs are hard, let’s kill them : réflexion autour des urls et de leur disparition partielle dans les navigateurs mobiles notamment et de ce que cela peut avoir comme implications. A new security header: Feature Policy : à l’image des Content Security Policy (CSP), la directive Feature-Policy indique au navigateur les fonctionnalités nécessaires pour le bon fonctionnement du site et désactiver les autres. RFC 8484: DNS Queries over HTTPS (DoH) : cette RFC décrit comment requêter des DNS via le protocole HTTPS plutôt qu’en UDP ou TCP simple sur le port 53. DNS Over HTTPS (DoH) un objectif de lutter contre la censure, au filtrage DNS mais aussi de permettre aux applications web en javascript et tournant dans le navigateur, et ce en respectant CORS. Attention toutefois en utilisant DoH, dans la mesure où c’est sur HTTP(s), il y a quand même plus d’informations qui circulent (user agent, etc) - il faut donc bien choisir son client. Time series databases TimescaleDB 1.0 is Production Ready : la version 1.0 de TimescaleDB est sortie avec notamment une intégration de Grafana et de Prometheus et pas mal d’amélioration de la base de code. Web HTTP/3 : HTTP/3 est la prochaine version de HTTP qui utilise le protocole QUIC pour le transport. Quic a pour objectif de remplacer TCP sur de l’UDP. Commitstrip a publié un billet à ce sujet. Some notes about HTTP/3 : ce billet permet d’approfondir HTTP/3, QUIC et la couche de transport sous-jacente, les limites actuelles et les réponses que QUIC apporte.
J’ai eu le plaisir et l’opportunité de participer à la réalisation de l’épisode 10 de Dev’Obs, le magazine du DevOps, pendant lequel nous avons parlé de formation, d’innovation et des tests dans la mouvance Infrastructure As Code. Acquisition IBM to Acquire Linux Distributor Red Hat for $33.4 Billion : Red Hat racheté par IBM - les implications sont monstrueuses sur l’écosystème Linux, Cloud, Infrastructure et Automatisation - je suis presque étonné que les autorités de la concurrence autorisent cela. A suivre ! Automatisation Mitogen for Ansible : extension pour Ansible qui permettrait d’accélérer Ansible via une optimisation de la connexion à l’hôte distant. “Expect a 1.25x - 7x speedup and a CPU usage reduction of at least 2x, depending on network conditions, modules executed, and time already spent by targets on useful work. Mitogen cannot improve a module once it is executing, it can only ensure the module executes as quickly as possible.” Molecule : molelcule est un framework pour Ansible permettant de tester les rôles/playbooks au travers de linter (syntaxe yaml, python, etc), mais aussi de réaliser des tests unitaires, de valider l’omnipotence d’une tâche, etc. A tester, mais vous ne devriez plus avoir de mauvaises surprises à l’exécution d’un playbook et ainsi mettre fin au cycle “run, break, fix” que l’on a trop souvent avec Ansible. Ansible to adopt molecule and ansible-lint projects : les projets molecule et ansible-lint vont passer sous l’organisation Ansible sur Github et ont pour objectif d’accroitre la qualité des playbooks ansible. Cela fait apparamment partie aussi d’un objectif RedHat de péréniser les ressources liées au projet tout en étendant l’écosystème. The release of Red Hat Ansible Engine 2.7 : Pas de révolution dans cette version, essentiellement des améliorations de perfomances/stabilité/connectivité. Il faudra une version python 2.7+ ou 3.5+ pour qu’Ansible fonctionne correctement. Reboot Plugin for Linux in Ansible 2.7 : Avec l’arrivée de cette version 2.7 arrive également officiellement le module reboot. Il permet ainsi de piloter des playbooks pour lesquels un reboot est nécessaire (mise à jour de noyau, etc). 12 Factor CLI Apps : le principe des 12 factors apps appliqué aux outils en ligne de commande. Il y a pas mal de bonnes idées (et donc de travail à faire) pour améliorer ses scripts. (No)SQL [RELEASE] Redis 5 is out! : l’annonce de la version 5.0 de la base Redis vient de sortir avec pas moins de 19 nouveautés listées. Si les Streams sont la principale nouveauté de cette version, de nombreuses améliorations ont été apportées à la base. La montée de version se veut compatilbe à 99%, il y a néanmoins quelques incompatibilités. PostgreSQL 11 Released! : la version 11 de la base Postgres vient de sortir - ce que j’ai retenu de cette version majeure, c’est le support du catch-all dans le partitionning (si une donnée ne correspond à aucune clé de partitionnement, alors le catch-all récupère cette donnée) et la capacité à mettre à jour ces clés de partitionnement. D’autres nouveautés sont également intéressantes, je vous laisse le soin de les lire. Une traduction française de l’annonce est disponible sur le blog de Loxodata. Sécurité Around 62% of all Internet sites will run an unsupported PHP version in 10 weeks : Pour les sites développés en PHP, à compter de janvier 2019, il faudra être minimum en version de PHP 7.1 pour avoir les mises à jour de sécurité - le support de PHP 5.6 et 7.0 se finit à la fin de l’année. Extended Validation Certificates are Dead : le bandeau avec l’intitulé de l’organisme propriétaire du certificat est en train de disaparaitre des navigateurs. Il ne sert donc plus à rien d’en acheter un. Removing Old Versions of TLS : TLS 1.0 et 1.1 ne seront plus supportés en mars 2020 dans les navigateurs. Dès aujourd’hui, ces deux versions ne représentant que ~1% du traffic observé par les navigateurs, il peut être judicieux de n’utiliser que du TLS 1.2+ et voir s’il n’y a pas quelques vieux programmes à mettre à jour d’ici là… Announcing the HashiCorp Learn Platform for HashiCorp Vault : pour ceux qui veulent se faire la main sur Vault et mieux gérer leurs secrets applicatifs, Hashicorp vient de lancer une plateforme gratuite et avec des contenus sous licence libre (un dépot sera prochainement mis à disposition) pour se former à leur outil Vault. Firefox 63 Lets Users Block Tracking Cookies - Firefox va incorporer un mécanisme expérimental de gestion des cookies pour limiter le pistage inter sites. A activer selon vos préférences.
Avant de commencer cette revue de presse, un peu d’auto-promo, vu que j’ai eu le plaisir et l’honneur de participer au numéro de rentrée (épisode 59) du BigData Hebdo. Cloud Multi-Cloud Is a Trap : sujet à la mode, le multi-cloud selon l’auteur du billet est inutile/idiot et ne serait qu’une distraction/perte de temps et d’argent dans la plupart des cas ; certaines exceptions sont acceptées en fin de billet). Un point intéressant étant de dire qu’en voulant éviter le “lock-in”, on se prive de profiter au maximum de la plateforme cloud et que l’on se créée du coup un coût de “lock-out”. Containers et Orchestration The Future of Docker Swarm : Etat des lieux et perspectives sur Swarm par un Capitaine Docker. Le projet n’est pas mort et il peut suffire dans bon nombre de cas. Docker Config, how to always use base image with Docker Swarm! : Depuis Docker 17.06 et dans un contexte Swarm, il est possibile d’utiliser les configs. Les configs permettent de stocker un fichier de configuration au sein du cluster swarm et de le mettre à disposition des containers. Ainsi, en cas des modifications de la configuration, plus besoin de rebuilder l’image, il suffit de mettre à jour le service pour qu’une nouvelle version du container la prenne en compte. Pros and Cons of running all Docker Swarm nodes as Managers? : Revue par le Docker Captain Bret Fisher des avantages/incovénients d’utiliser que des nodes de type “managers” au sein d’un cluster Swarm. Trop est déconseillé (> 5) et ensuite c’est un compromis entre la sécurité, la disponibilité et la résilience. Traefik 1.7 — Yet Another Slice of Awesomeness : dans les nouveautés principales : une image Docker pour windows, le support de l’authentification dans les frontends, le support d’AWS Fargate, HC2 Support et le support du challenge TLS pour Let’s Encrypt (plus besoin d’avoir le port 80 ouvert). Apparemment pour la prochaine version, l’équipe de dév va prendre quelques libertés pour introduire des nouveautés - il faut donc s’attendre à quelques incompatibilités à l’avenir. DevOps Ansible Tips : Reboot & Continue : Astuce utile pour gérer un reboot d’un serveur via ansible et reprendre ensuite la connexion et l’exécution du reste d’un playbook. IA Finding and fixing software bugs automatically with SapFix and Sapienz : Sapienz et SapFix ne sont pas des produits SAP mais des projets Facebook. Le premier est un agent de test automatique et SapFix est une IA qui est en mesure d’identifier des correctifs pour les bugs identifiés par le premier. Le fix peut être un retour partiel ou total au code précédent mais aussi de prospoer des correctifs sur la base de modèle de code. Une fois les correctifs testés et qu’aucune régression n’est identifiée, alors le fix est proposé pour validation aux développeurs. Ingénierie Software disenchantment : “That is not engineering. That’s just lazy programming. Engineering is understanding performance, structure, limits of what you build, deeply. Combining poorly written stuff with more poorly written stuff goes strictly against that. To progress, we need to understand what and why are we doing.” - un plaidoyer pour de meilleures pratiques d’ingénierie partant du constat que les applications développées sont de plus en plus grosses, de moins en moins performantes pour un niveau de fonctionnalité à peine meilleur. Heureusement que les machines ont progressé pour compenser cette “obésité logicielle”. (No)SQL So you have a broken Cassandra SSTable file? : que faire lorsqu’une SSTable est corrmpue, c’est tout l’objet de cet article, de la plus simple et moins impactante à la plus complexe/impactante. Sans aller jusqu’à la corruption, nous avons eu un cas similaire et un nodetool scrub <keysapce> <table> a été suffisant. Incremental Repair Improvements in Cassandra 4 : les réparations incrémentales, déconseillées jusqu’alors par les gens de The Last Pickle, semblent devenir la solution recommandée avec la sortie prochaine de Cassandra 4.0. Les réprations complètes (full) ne seraient alors utiles que dans certains cas, car moins efficientes. Introducing cstar: The Spotify Cassandra orchestration tool, now open source : Spotify ouvre le code de son shell distribué pour Cassandra, sous le nom de cstar Il a pour intérêt d’être conscient de la topology du cluster et donc de pouvoir faire les commandes de façon optimisées. Architecture Lambda, Cassandra et synchronisation des données : après un petit rappel sur l’architecture lambda, l’article présente les différents patterns permettant de garantir qu’une donnée stockée dans Cassandra et pouvant être mise à jour de façon concurrente par un flux batch et un flux temps réel ait toujours la valeur la plus fraîche. Why We Built an Open Source Cassandra-Operator to Run Apache Cassandra on Kubernetes : Instaclustr propose un Operator Cassandra pour déployer plus faciment Cassandra sur Kubernetes. Terraform InfluxDB Module : InfluxData a annoncé un partenariat avec Hashicorp et le premier livrable est un module terraform permettant de déployer InfluxDB OSS ou Entreprise sur AWS. (Open)Web Removing jQuery from GitHub.com frontend : Github raconte son adoption jusqu’au retrait de JQuery de sa base de code. Il est intéressant de voir que les standards ont permis de remplacer pas mal de fonctionnalités et il reste encore quelques polyfills. The Cost Of JavaScript In 2018 : l’utilisation de Javascript, en particulier sur mobile, n’est pas neutre. L’article revoit les bonnes et mauvaises pratiques. your web app is bloated : Etude sur la consommation de mémoire de différnts sites sous Firefox - cela va de 0.8Mo (Gmail Vintage) à 200 Mo (Google Inbox) Python High-Performance in Python with Zero-Copy and the Buffer Protocol : astuce utile d’utiliser memoryview pour accélerer les accès aux données et éviter de l’usage inutile de mémoire. Astuce du mois J’ai cru à un bug ansible sur les surcharges de variables mais en fait non - pour des variables de même niveau (ici group_vars), l’ordre de fusion des variables est :
Architecture Goodbye Microservices: From 100s of problem children to 1 superstar : L’article fait pas mal de “bruit” en ce moment mais je ne suis pas sur qu’ils arrivent à la bonne conclusion au final ; Partir de microservices et multiples dépots gits pour revenir à un monolithe/mono dépot git, j’ai l’impression que la réponse au travers des outils n’adresse pas le problème de fond à savoir la gouvernance de l’ensemble. En effet, si les versions différaient tant que cela, l’approche centralisé a peut être mis un terme en forçant tout le monde à se rencentrer sur une version donnée mais s’il n’y a pas de règles, le résultat sera le même prochainement mais ils auront moins de liberté. Miniservices as a Realistic Alternative to Microservices : du coup, pour réduire les frictions, certains proposent de faire des micro-services plus gros avec le risque d’arriver à plein de moyens monolites… Je mets donc pour rappel cet article que j’ai déjà mentionné : Enough with the microservices. Il rappelle que c’est surtout la modularité et une architecture propre du code qui donne de la flexibilité. Et puis tout le monde n’a ni le contexte, ni la maturité pour se lancer dans les micro-services. Automatisation Ansible 2.6: Your Time Has Come! : une version de consolidation avec des améliorations coté cloud et surtout sur l’utilisation de la mémoire lordque l’on utilise les “Dynamic Includes”. Container et Orchestration Blog: Kubernetes 1.11: In-Cluster Load Balancing and CoreDNS Plugin Graduate to General Availability : Kubernetes continue son travail de consolidation et de stabilisation. Service Mesh: Promise or Peril? : si les service mesh peuvent paraitre attrayant, leur intégration n’est pas forcément évidente et il faut aussi prévoir cette couche intermédiaire dans le développement de votre application. Leur utilisation n’est donc pas toujours recommmandée/souhaitable - l’article propose de faire le point sur le sujet. Container Native Development with Ralph Squillace : cet épisode de podcast petmet d’avoir une présentation d’Helm (package manager), Bridage (gestion de workflow kubernetes) et Draft (aide à la conteneurisation d’une app). D’autres outils sont mentionnés en fin d’épisode pour agrémenter son quotidien (extension vscode, etc). Extending Support Cycle for Docker Community Edition : A l’occasion de la sortie de Docker CE 18.06, quelques ajustements : les versions stables sortiront tous les 6 mois maintenant (et plus tous les 3 mois) et avec une période de maintenance de 7 mois, le canal edge (monthly release) est arrêté au profit d’un canal nightly, docker for Windows/Mac gardent une release mensuelle (pour le canal edge), plus de packaging par distribution pour mieux coller à l’actualité de la distribution. Dataviz Grafana v5.2 Released : L’alerting est disponible sur ElasticSearch, Builds ARM officiels, amélioration de la sécurité (support des secrets docker, gestion des mots de passe admin), amélioration coté InfluxDB et Prometheus, etc. Mapocalypse : Migrer depuis Google Maps, Maintenant 1/2 et Mapocalypse : Migrer depuis Google Maps, Maintenant 1/2 : si la partie 1 remet en contexte l’augmentation de tarifs de Google Maps, le second a pour intérêt de présenter et d’expliquer le fonctionnement des solutions alternatives. DevOps Une décennie DevOps, quels enseignements tirer ? : synthèse globale et assez factuelle sur 10 ans de DevOps qui a le mérite de signaler les points où ce n’est pas encore ça. Courage, la transformation/l’adoption est en cours malgré tout. (No)SQL Select all columns except one in MySQL? : Cela peut toujours être utile de le savoir… Timeseries Release Announcement: InfluxDB 1.6.0 OSS : InfluxData sort la version 1.6 de sa base de données temporelles avec comme améliorations significatives : fonctions supplémentaires sur InfluxQL, Accélération des backups via un meilleur parallélisme des tâches et l’arrive de la gestion du “back pressure” pour éviter la congestion lors des écritures. Flux (#fluxlang): a new (time series) data scripting language : présentation à date du design et des fonctionnalités de Flux (ex IFQL) Why We’re Building Flux, a New Data Scripting and Query Language : Paul Dix, CTO d’InfluxData revient sur les raisons de la création du langage flux et pourquoi SQL n’a pas été retenu. Chronograf 1.6 Released: Introducing Log Viewer and Additional Sharing Capabilities : J’en parlais le mois dernier, Chronograf se dote d’un visualiseur de log (log viewer) et semble aller plus loin que ce qui était annoncé dans la plateforme d’ingestion de logs. Les autres nouveautés tournent autour du partage des dashboards avec des tiers.
Automatisation Ansible 2.5: Traveling space and time : au programme de cette nouvelle version : des namespaces pour les “facts”, la capacité d’interdire des modules, des nouvelles “variables magiques” (les magic vars sont des variables spécifiques à Ansible et l’exécution des playbooks). On notera aussi des améliorations sur le support Windows, des nouveaux modules cloud (AWS, GCP, Azure, VMWare) et des nouveaux plugins. Container et Orchrestration Apache Spark 2.3 with Native Kubernetes Support : Intéressant de voir que Spark peut maintenant être exécuté comme un pod kubernetes. On sort ainsi du mode de déploiement standalone ou dans un contexte Yarn (Hadoop) ou Mesos. From open source to sustainable success: the Kubernetes graduation story : le projet Kubernetes sort d’incubation et devient un projet de 1er niveau de la CNCF. Le billet permet de faire un retour sur l’histoire du projet. CNCF Cloud Native Interactive Landscape : la CNCF a sortie un annuaire interactif de leurs projets et membres. Docker 18.03-ce : Pas de grandes nouveautés a priori, plutôt des efforts de consolidation et de stabilisation du produit. Kubernetes 1.10: Stabilizing Storage, Security, and Networking : la consolidation et la stabilisation de la plateforme se poursuivent : la nouvelle interface de stockage CSI (Container Storage Interface) et le “Local Storage” passent en béta, CoreDNS est disponible en alternative à kube-dns en attendant de le remplacer et enfin, coté sécurité en version alpha, kubectl peut gérer des identifiants de plateformes cloud. Dataviz Grafana v5.0 Released Superset, l’outil de DataViz de AirBnB : un tutoriel pratique pour la prise en main de l’outil de data visualisation Superset. d3.js 5.0 : la librairie de représentation de données d3.js passe en version 5.0 avec notamment une incompatibilité avec le passages aux Promesses Javascript plutôt que les callbacks. Java No Free Java LTS Version? : Oracle change ses pratiques de distribution du JDK Oracle (Une version majeure tous les 6 mois, moins de report de patches, etc). Let’s encrypt ACME v2 and Wildcard Certificate Support is Live : Let’s Encrypt va donc fournir des certificats wildcard (*.domaine.fr). Si je m’étais réjoui de l’idée au début, je ne vois finalement pas ou peu l’intérêt du fait de la méthode de validation (enregistrement DNS avec le temps de propagation associé). En dehors du cas où l’on dépassait les limites d’enregistrement de Let’s Encrypt en terme de nombre de certificats, la génération dynmique et unitaire via une méthode HTTP me semble plus simple. Surtout quand on utilise Traefik ;-) Postgres Publication des manuels de formations Dalibo ! : Dalibo rend publics l’ensemble de ses manuels de formation, pour permettre à un maximum de personnes de se former sur PostgreSQL. Python Python 2 EOL will be 2020-01-01 : Petit rappel, Python 2.x ne sera plus supporté au delà de 2020. Pour Python 3, la version supportée actuellement est 3.4+. Cf Status of Python Branches. TICK Release Announcement: InfluxDB 1.5.0 and InfluxDB Enterprise 1.5.0 : des améliorations surtout sur la partie sauvegarde/restoration et la disponibilité officielle du nouveau format TSI (Time Series Index) adaptés pour des séries épéhmères. Chronograf Adds Annotations, Smarter Dashboard Loading, Improved TICKscript Support, and More : Chronograf, la solution de dataviz de la plateforme TICK semble aussi bien avancer avec la sortie de la version 1.4.2. Peut-être pas encore de quoi concurrencer Grafana mais les progrès sont sensibles. Astuce(s) du mois J’utilise Ansible dans une logique d’IAC et pour automatiser un maximum des actions pour la gestion de l’infrastructure et des applications de mes clients. Toutefois, chaque client avait son arborescence et la réutilisation d’un composant d’un client à l’autre était fastidieuse (copier/coller).
On orchestre, on conçoit — et on code aussi. Parlons de votre plateforme, vos données ou votre projet IoT.
Contactez-nous →