Blogulaire de Claneys

Notes techniques et expérimentations d'un SRE — Kubernetes, Linux, et divers

Cilium ExternalIP et service DNS pour le réseau local dans un cluster Kube

Cilium ExternalIP et service DNS pour le réseau local dans un cluster Kube

Le DNS est un composant central dans un réseau, ou alors on aime bien les chiffres (je ne juge pas). Alors dans mon précédent billet je parlais de la migration vers le cloud native, un gros mot marketing pour dire tout mettre dans des conteneurs et kube, et globalement la migration du DNS c’est toujours un peu une étape bloquante. Cela marche ou rien ne marche.

Dans mes essais rapides de migration de mon vénérable bind9, qui marchait très bien vers coreDNS dans Kubernetes, j’avais tenté d’utiliser le service du cluster qui tourne dans le namespace kube-system. C’était un raccourci qui ne fait pas bon prendre car si tu te foires dans ta configuration c’est tout le cluster qui ne fonctionne plus correctement. Tu peux facilement rollback heureusement. Dans une volonté d’itérer en revenant sur une bonne pratique d’isolation des services, la mutualisation du DNS n’est pas vraiment pas recommendable, les effets de bords sont trop important. L’essai date un peu mais globalement, je reprenais la configuration de base et j’ajoutais la zone DNS de mon réseau local et ajoutais un service LoadBalancer pour avoir une IP sur le réseau local qui puisse être adressé par le port 53 :D Pour cela, j’ai mis en place l’IPAM de Cilium, avec le support des externalIPs et l’announce sur la couche L2 du réseau pour mettre au courant le réseau local qu’on a une nouvelle IP disponible à l’adresse MAC d’un des nodes élus par Cilium pour host l’IP.

  • Romain Forlot
K8S suite: Migration CloudNative
bare metal

K8S suite: Migration CloudNative

AAAaaaah, un nouvel article ! Bon alors pas mal occupé et la migration de mon serveur Bare Metal a pris son temps. Content de pouvoir réécrire donc car la migration est terminée ! J’aurais pu faire plein d’articles pour chaque étape, mais booon. Tunnel vision toussa.

Bon j’ai menti, le DHCP qui est géré par DHCPD sur mon vieux serveur n’a pas migré mais ce sera migré sur le DHCP de la box ou quelque chose comme ça bientôt. Ce n’est quand même pas le plus exaltant. Qui plus est le faire tourner sur un Kubernetes n’est à mon avis pas une bonne solution. Seul intérêt serait que ce serait l’occasion d’utiliser une Gateway API plutôt que les ingress que j’utilise encore pour l’instant. On a connu mieux comme prétexte au POC.

  • Romain Forlot
Yubikey Yubico : le login facile

Yubikey Yubico : le login facile

Un petit soucis m’a fait perdre ce post, alors je le réécris avec un tantinet de retard. Ouai, c’était y a maintenant 10 mois. Un petit moment, certes. Le projet n’a pas eu d’avancement phénoménal et je n’ai pas eu plus de temps que cela à y consacrer. Il n’y aura même pas de nouveautés, mais peu importe, l’exercice est sympa.

J’ai écris un petit outil pour débuter dans Rust, mon premier projet Rust autant le dire, pour me faciliter la tâche de configuration linux pour me permettre d’utiliser ma Yubikey. Le setup n’est en soi pas complexe, cela dit j’ai pas envie de le réitérer à chaque fois que j’utilise un nouvel ordinateur. Exemple celui du boulot. Vous trouverez le code source de yubico_helper sur gitlab. Pourquoi pas Github ? Ce n’est pas le sujet, peut-être plus tard :D

  • Romain Forlot
S'embarquer dans Kubernetes from scratch (ou presque).
#Import 2023-08-15 20:39

S'embarquer dans Kubernetes from scratch (ou presque).

Dans ce retour d’expérience, je partagerai mes impressions et mes observations sur l’utilisation de Kubernetes dans différents contextes et je vous donnerai mon point de vue sur les avantages et les défis de cet outil passionnant.

Tout d’abord, il existe plusieurs manières de tester Kubernetes et pas mal de distributions avec tout un outillage déjà fourni autour. Petit florilège :

  • k3s: version minimaliste de kube
  • microk8s: dérivé Canonical de kubernetes
  • minikube: version simple upstream de kube pour maquetter et prendre en main le tout
  • k8s: Upstream vanilla
  • OKD: version upstream communautaire de la distribution Kubernetes OpenShift de Red Hat
  • MicroShift: dérivé minimaliste d’OpenShift
  • Tanzu: Distribution de VMware pour Kubernetes
  • Rancher: Distribution de SUSE pour kube

Je ne vais pas expliquer ici comment on utilise Kubernetes, abrégé en K8S, chose couverte partout, dans toutes les langues. Ce sera simplement un retour sur comment j’ai abordé le sujet à ce moment-là, des erreurs que j’ai pu faire, des conseils sur comment ne pas tomber dans certains pièges ou problèmes et quelques astuces qui m’auront bien aidé et m’aident toujours d’ailleurs.

  • Romain Forlot
Hashicorp Vault : mise en place sur un kube vanilla
#Import 2023-08-15 20:39

Hashicorp Vault : mise en place sur un kube vanilla

Hashicorp est bien connu des DevOps grâce à ses outils toujours bien foutus, permettant de gagner du temps un peu partout. Ici, intéressons-nous à leur outil Vault.

Cet outil vous permettra de gérer vos secrets de votre infra et voir même de les générer dynamiquement avec une gestion du cycle de vie et droits. Vous pouvez avoir votre app qui utilise un rôle que l’administrateur aura préalablement défini pour en limiter la portée, et qui utilisera un token pour elle seule. Ce token aura une durée de vie limitée dans le temps afin de réduire le risque d’être compromis. Et si celle-ci est compromise alors la portée de la compromission étant déjà basse, selon le rôle que vous lui aurez donné, pourra être révoqué sur ce crédential uniquement sans pour autant remettre en cause l’entièreté du Vault.

  • Romain Forlot
Troubleshooting encore... Résolution DNS avec du Cilium et des pods en HostNetwork.
#Import 2023-08-15 20:39

Troubleshooting encore... Résolution DNS avec du Cilium et des pods en HostNetwork.

Petite note de la soirée avec le setup d’une stack Elastic. Pour le setup de la stack, je vous laisse lire la belle doc upstream d’Elastic et l’installation de celle-ci par l’opérateur OLM (Operator Lifecycle Manager) qui va bien. Ce qui est intéressant ici c’est sa mise en oeuvre conjointement au CNI (Container Network Interface) Cilium. Cilium outre le fait qu’il soit très à la mode en ce moment, notamment parce qu’il utilise les eBPF (confer la doc: which is no longer an acronym for anything) du kernel linux. Projet très en vogue en ce moment permettant de tourner des scripts en eBPF en kernel space. Une bonne explication est donnée sur ce blog, je trouve. Cela permet d’avoir des performances incomparable avec les autres CNI utilisant netfilter.

  • Romain Forlot
Mettre à jour CentOS 7 vers 8
#Import 2023-08-15 20:39

Mettre à jour CentOS 7 vers 8

Apparemment Red Hat supporte la montée de version entre 2 versions majeures (je redébarque après qqu temps passé sans utiliser de RHEL). Confer la doc. Un nouvel outil a été développé pour effectuer la procédure de mise à jour, Leapp. Cet outil se veut être un framework générique de mise à niveau d’OS Linux. Bon cela à tout de même l’air d’être bien collé aux systèmes de paquets RedHat RPM. Je l’ai pas trouvé sur ma Manjaro donc bon ! Je vous mets le petit laïus de présentation de l’outil:

  • Romain Forlot
Problème de résolution DNS intempestive sur K8S
#Import 2023-08-15 20:39

Problème de résolution DNS intempestive sur K8S

Petite note vite fait pour ne pas oublier ce problème un peu chiant. Vous avez un cluster K8S qui fonctionne et vous vous apercevez que lorsqu’il essaie de sortir et résoudre un host tel que blog.claneys.net, le pod vous retourne une erreur de certificat SSL self-signed.

Mon serveur utilisant Traefik en tant que reverse proxy L7, L4 et LoadBalancer, même si je n’utilise pour l’instant pas cette fonctionnalité, et ce certificat retourné était le sien. Stupéfaction, Incompréhension, comment se retrouve t’il à résoudre sur lui-même une requête externe ? Je me lance donc dans le debug de ce problème en utilisant un pod à cet usage, confer la doc. Je définis le petit manifest de mon pod de debug puis lance un petit shell pour inspecter ce problème :

  • Romain Forlot
Correction syntaxique, grammaticale, orthographique, conjugaisonite dans VSCodium
#Import 2023-08-15 22:40

Correction syntaxique, grammaticale, orthographique, conjugaisonite dans VSCodium

Alors, il s’agirait d’écrire bien et d’éviter de crever les yeux des autres qui bon s’ils ne sont pas déjà crevé en lisant votre code serait au moins préserver en lisant les commentaires.

J’ai longtemps cherché, j’ai longtemps vite fait cherché, comment faire pour que mon VSCodium me permettent de correctement vérifier l’anglais ou français dans mon code. Et j’ai au moins un début de solution avec l’utilisation de LanguageTool en local pour corriger mes erreurs sur la doc que je rédige. Il supporte très bien le plaintext et le markdown. l’asciidoc est pas mal supporté aussi, sûrement dû à sa ressemblance avec le markdown.

  • Romain Forlot
VMware Nested ESXi: Petite chose à ne pas oublier pour avoir du réseau dans votre cluster nested
#Import 2023-08-15 22:40

VMware Nested ESXi: Petite chose à ne pas oublier pour avoir du réseau dans votre cluster nested

Après avoir installé vos ESXi en tant que VM dans votre Cluster VMware, il se peut que vous ne puissiez pas joindre les ESXi depuis le réseau interne nested ou une VM quelconque qui tournerais dessus. Au hasard un vCenter…

Alors pour faire sale et vite, vous pouvez tout simplement activer le mode “promiscuous” et “Forged transmits”. Voilà pour la version courte et moche.

Pour la faire propre, et en savoir un peu plus tout le problème se situe au niveau de la gestion des MAC adresses. Les VMs et tout ce qui tourne à l’intérieur de vos ESXi nested n’ont tout simplement pas accès à l’extérieur et vice-versa car leur MAC adresse est différente de celle de l’ESXi et les paquets se font droppés. En activant, le mode “promiscuous” et “Forged transmits” vous forcez un peu la main au réseau en autorisant tout. Alors qu’il existe depuis vSphere 6.7 la possibilité au dvSwitch d’apprendre les MAC adresses et les associés aux NIC qui vont bien. Tout est expliqué ici:

  • Romain Forlot
Purger les jobs systems d'UVB bloqués (Unitrends Virtual Backup)
#Import 2023-08-15 20:39

Purger les jobs systems d'UVB bloqués (Unitrends Virtual Backup)

Bon à savoir, voici la procédure pour purger des jobs systems restés actif alors qu’ils ont été terminés. C’est un bug qui peut arrivé, je n’en connais pas la raison mais j’ai constaté par exemple que des jobs de suppression de backups obsolètes ne se terminaient jamais et que visiblement la politique de rétention avait été respectée donc pour purger les jobs restant le support indique la procédure suivante (procédure donnée avec les logins/password par défaut évidemment) :

  • Romain Forlot
#Import 2023-08-15 22:40

Création d'un utilisateur chrooté avec accès à une DB Oracle

Pour commencer, j’ai tout simplement suivi de la note KB Red Hat : https://access.redhat.com/solutions/116773. Voilà les étapes décrites pour créer le chroot simple :

Ajout utilisateur “testuser”

# useradd testuser
# passwd testuser

Le home sera la base du chroot :

# mkdir /home/jails
# cd /home/jails
# mkdir -p bin dev lib64 etc proc usr/lib64 tmp sys home/testuser
# ln -s lib64 lib
# cd usr
# ln -s lib64 lib
# cd ..

Montages des pseudo fs :

  • Romain Forlot
#Import 2023-08-15 20:39

VMware ESXi/vCenter : No data available from performance overview

Une erreur aussi estrange que chiante et qui empêche le check des VMs ainsi que de l’ESXi par des scripts distants style check_esx3.pl ou check_vmware_api.pl, l’impossibilité de récupérer les valeurs de performances d’un hôte et de ses VMs.

Symptômes :
– Impossibilité de visualiser les données de performances depuis l’onglet performances dans le client vSphere. Chaque vignette affiche “No data available”, même en sélectionnent Real Time.
– Idem pour les VMs
– Impossibilité de récupérer les valeurs de performances et de statuts de l’ESXi et de ses VMs depuis une API (ie : Vmware Perl SDK)
– Les autres ESXi du cluster peuvent très bien fonctionner

  • Romain Forlot
RHEL7 : Résumé des changements apportés par Systemd
#Import 2023-08-15 22:40

RHEL7 : Résumé des changements apportés par Systemd

1. Présentation Systemd

Nouvelles gestions des services. Systemd remplace l’ancien SysV Init, il permet de paralléliser les démarrages de services et gère nativement les dépendances entre eux.
Les scripts dans /etc/init.d ne sont plus à l’ordre du jour. Ils ont été remplacés par des « unit file » de service (il existe des unit file pour les montages de fs, timer, socket, etc). La doc est disponible dans les pages de man avec la commande : man systemd.service, pour les services ou systemd.* pour tous les autres (ie : systemd.unit). Pour résumé, ces units file sont des fichiers de configuration avec des directives décrivant le comportement du système pour la gestion de l’unit.

  • Romain Forlot
#Import 2023-08-15 22:40

Activation Windows Server 2012r2 par téléphone

Si comme moi vous vous demandez par où on accède à l’interface d’activation par téléphone de Windows Server 2012R2, utilisez simplement la commande suivante avec une invite de commande avec les droits administrateur :

slui 4

Après quoi, laissez vous guidez par l’assistant. Simple.

Sinon méthode plus sioux, notez l’ID d’installation avec la commande (je conseil de faire des groupes de 7 chiffres):

slmgr.vbs /dli

Ensuite appeler le numéro adéquat pioché ici et suivre les instructions pour noter le numéro d’activation à utiliser avec la commande suivante :

  • Romain Forlot
#Import 2023-08-15 22:40

Oracle RMAN : connected to target database (not started) ORA-03113

Il peut arriver que bien votre instance Oracle soit démarrée, à priori, mais que vous ne puissiez pas vous connecter avec RMAN. Celui-ci vous retourne :


$ rman target /

Recovery Manager: Release 11.2.0.3.0 - Production on Mon Jul 6 14:18:16 2015

Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.

connected to target database (not started)

Dans ce cas. Il peut s’agir de plusieurs choses. Si vos outils accédant à Oracle n’observent pas de soucis et que par contre sqlplus et rman oui, il s’agit d’un problème de déclaration de path. En effet, avec un ‘/’ en fin de path ces deux outils ne fonctionneront pas. Plus d’infos ici.

  • Romain Forlot
#Import 2023-08-15 20:39

VMware : LUN détectées en tant que snapshot par erreur.

Je me suis retrouvé bloqué dans une situation où je ne pouvais pas agrandir une de mes LUN iSCSI. Alors que pas de soucis pour les autres qui étaient sur le même NAS. Je ne comprenais pas pourquoi le bouton Augmenter était grisé dans la fenêtre des propriétés de la LUN.

Cette situation arrive lorsque votre LUN est détectée en tant que snapshot ou réplique de LUN. Cela arrive quand deux LUN présentent le même UUID. Plus d’informations ici :

  • Romain Forlot
#Import 2023-08-15 22:40

Powershell : Utiliser foreach

Le passage shell unixien à powershell ne se fait pas sans mal… Le tout objet de MS a du bon, encore faut-il s’y faire.

Voici comment récupérer la liste de services d’un ordinateur et créer un fichier batch.


foreach ($svc in Get-Service) { "sc sdset "+ svc.Name + " D:(A;;CCLCRPRC;;;< --SID_USER-- >)D:(A;;CC;;;AU)(A;;CCLCRPRC;;;IU)(A;;CCLCRPRC;;;SU)(A;;CCLCRPWPRC;;;SY)(A;;KA;;;BA)S:(AU;FA;KA;;;WD)(AU;OIIOFA;GA;;;WD)" | Out-File -Encoding ascii -Append C:\sc.bat }

Analysons cela de plus près.

La condition du foreach, plutôt simple, on apprécie ici ne pas devoir encadré la commande Get-Service entre backquote ou $() pour faire comprendre au shell que c’est une commande. Ici Chaque objet retourné par Get-Service sera stocké dans la variable $svc.
Ensuite viens le traitement, entre accolades, ici je voulais créer un script batch. On écrit donc tout simplement la ligne en veillant à sortir $svc.Name d’entre accolade sans quoi cela sera la clé et non la valeur qui sera affichée. Puis petite subtilité, ne pas utilisé la redirection » ou > pour mettre le contenu dans un fichier directement. En effet,cela aura pour effet de stocker ce contenu en utf16… Préférez plutôt piper la ligne vers la commande Out-File (c’est en faite elle qui est appelée avec les > et » mais sans l’option d’encodage) à qui on spécifiera l’encodage de sortie, en n’oubliant pas l’option Append pour un équivalent des ».

  • Romain Forlot
#Import 2023-08-15 20:39

Graphite : Prendre en compte un changement dans la politique de rétention

La politique de rétention avec graphite est configurée dans le fichier storage-schemas.conf, que vous trouverez soit dans /opt/graphite/conf lorsqu’installé à partir des sources ou /etc/carbon lorsqu’installé par paquet RPM (et sûrement debian aussi). Je vous invite à lire la docs associée pour plus de détails sur comment ce fichier est construit.

L’édition de ce fichier ne suffit pas. L’espace pour stocker les métriques est pré-alloué et le fichier prévu pour acceuillir les nouvelles données. Il faut passer par une étape intermédiaire si vous voulez appliquer une nouvelle politique de rétention aux métriques déjà enregistrées qui redimensionnera le fichier. Ou bien il est possible aussi de supprimer les métriques à modifier qui seront recréer au redémarrage de carbon avec la bonne dimension.

  • Romain Forlot
#Import 2023-08-15 22:40

Màj TorrentCP : gestion de la musique aussi !

Et voilà, torrentCP gère désormais le téléchargement de musique !

Une fois le téléchargement terminé, il ira parcourir chaque fichier musical et d’après ses metadata créera les répertoires d’artiste et album approprié. Convient donc de télécharger des musiques correctement taguées et de ne pas télécharger d’archives… et de ne pas télécharger de compilation sinon ça en foutra partout.

Je m’attaquerais à ces problèmes dans les prochains commits.

C’est bête et méchant mais ça fonctionne bien.

  • Romain Forlot
#Import 2023-08-15 22:40

Mise à jour de torrentCP : utilitaire de gestion de téléchargement pour le client torrent Transmission

Grosse mise à jour pour torrentCP. Cela faisait 1 an sans nouvelles de ce script qui me rends de fier service pourtant.

En bref :
– amélioration de la détection du nom du film ou série, gestion
– Gestion de saison complète d’une série
– hard link et copy de fichier en fallback pour économiser de la place.
– Fichier de configuration séparé pour affiner la configuration et l’extraire du code en dur.
– Ajout d’arguments pour pouvoir appeler le script autant manuellement qu’automatiquement par transmission-daemon. Faire un –help pour découvrir les quelques options implémentées.
– refonte et multiple fix du code pour sa maintenabilité. Bon il reste du progrès à faire !
– …

  • Romain Forlot
#Import 2023-08-15 20:39

Memo : Utiliser un Active Directory pour l'authentification de Spacewalk.

Procédure utilisée pour avoir Spacewalk utilisant PAM pour l’authentification des utilisateurs. Le serveur est joint au domaine AD avec Winbind et on utilise Kerberos pour gérer l’authentification.

Après avoir suivi nombre de docs, posts de mailing-list, tuto en tout genre pour mettre en place toute la chaine d’authentification sur un AD. Voici ce qui a été déployé chez nous pour que Spacewalk puisse utiliser les utilisateurs de l’AD.

Spacewalk ne dispose pas de composants ou plugin permettant cette authentification. Il délègue cette tâche à PAM, le module utilisé par tout Linux pour authentifier les utilisateurs. PAM se branche sur à peu près tout et n’importe quoi permettant d’authentifier et je vous renvoie à leur site pour en apprendre plus.

  • Romain Forlot
#Import 2023-08-15 22:40

Spacewalk : Création de script avec mix de snippet et code.

# Brève présentation de Spacewalk

Spacewalk est un outil fort pratique pour ceux qui veulent gérer un parc de machine linux RedHat, ou dérivé. Grâce à Spacewalk vous pouvez suivre les mises à jour à effectuer sur chacune de vos machines, paramétrer des mises à jour automatiques, gérer vos dépôts, gérer des kickstarts et les utiliser par PXE ou sur un hyperviseur KVM/QEMU. Plus encore vous pouvez suivre des fichiers de configurations choisis et les administrer depuis Spacewalk. La dernière version 2.0 inclue même un support expérimentale des paquets deb et donc la possibilités de gérer les linux Debian et dérivés.

  • Romain Forlot
#Import 2023-08-15 20:39

VMware : épurer l'event log en base MS SQL du vCenter

Si vous avez encore vos vCenter sous Windows server avec la base MS SQL Server sans avoir installé le SQL Management Studio Express sur le vCenter vous permettant ainsi d’administrer la base de donnée du vCenter vous êtes sans doute un peu bloqué. Surtout quand les events log stockés en base prennent une taille folle. En effet, l’épuration des events log n’est pas configurée par défaut après une installation de vCenter…

  • Romain Forlot
#Import 2023-08-15 22:40

Propriétés OVF pour un déploiement de VM flexible avec VMware.

Permettre un déploiement flexible de VM, ne plus se poser de question lors d’une importation d’un OVF et pouvoir déployer ceux-ci sans inquiétude. En voilà une idée qu’elle est bonne et totalement faisable, assez facilement d’ailleurs.

Activer les options vApp sur les VM

Il suffira pour cela d’activer les Options vApp dans la ou les VM concernées. Petit point sur le vApp, il n’est pas nécessaire d’utiliser un container vApp pour utiliser les options vApp. Cette option permet simplement de pouvoir définir des propriétés personnalisées pour les VM et d’ajouter des identificateurs pour un déploiement ultérieur par export/import d’OVF.

  • Romain Forlot
Utilitaire de conversion: fichier de backup SMS VMG vers XML pour app Android SMS Backup Restore
#Import 2023-08-15 22:40

Utilitaire de conversion: fichier de backup SMS VMG vers XML pour app Android SMS Backup Restore

Création d’un petit script permettant de transformer nos gentils petits fichiers vmg récupérer par une sauvegarde de nos messages SMS. C’est bien gentils de récup un fichier de backup, encore faut il pouvoir le réimporter et avec le passage des dumbphones vers les smartphone, les formats ont bien évolués…. Et pas compatible évidement.

VMG est un format créé par Nokia pour la sauvegarde de ses sms, utilisé par d’autres constructeurs (Samsung entre autre) il est très commun dans le monde des dumbphones. Voici donc un petit script pour vous permettre de transformer ces sauvegardes en fichiers XML compréhensible par SMS Backup Restore une app Android assez populaire. :)

  • Romain Forlot
#Import 2023-08-15 22:40

Mémo : ORA-04063: view "SYS.DBA_REGISTRY" has errors.

En jouant d’un peu trop prêt avec les composants Oracle, on peut se retrouver face à cette erreur. Ou alors lors d’un passage de patch par exemple.

La résolution est simple encore faut-il le savoir. Il faut rejouer les scripts sql suivant en tant que sysdba :

oracle$ sqlplus / as sysdba
SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql
SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql

Je ne m’étends pas sur le sujet n’étant spécialiste Oracle et renvoi à la note metalink 457861.1.

  • Romain Forlot
#Import 2023-08-15 22:40

Etendre/Ajouter de nouvelles partitions à un disque virtuel agrandit. "No free sectors available"

Si comme moi, vous avez eu l’erreur “No free sectors available” alors que vous venez justement d’agrandir le disque virtuel sous-jacent, tout est normal. Rien de bien compliqué d’ailleurs, c’est très logique et cette situation ne se produit que si vous aviez déjà créé la partition étendue sur votre disque.

En effet, vous aviez créé la partition étendue afin de pouvoir gérer plus de 4 partitions primaires, et cette partition étendue a été définie selon l’ancienne taille du disque. Donc une fois agrandit cette partition n’a pas changé automagiquement et gére le même espace qu’auparavant. Il faudra donc supprimer la partition et la recréée, prenez tout l’espace restant comme d’habitude et recréer à l’interieur les anciennes partitions logiques dont vous aurez préalablement noté les blocs de début et de fin afin de les recréer à l’identique.

  • Romain Forlot
#Import 2023-08-15 20:39

Màj torrentCP : Amélioration de l'extraction du nom de fichier et meilleur détection d'un nom de film.

Pas mal d’amélioration depuis le dernier billet.

Le package python-IMDB fait son apparition comme dépendance, ce qui facilitera grandement la détection du nom du film détecté. Il faut cependant utiliser la version de dev, le site IMDB changeant régulièrement les règles pour accéder à sa base de données le paquet n’est sans doute pas suffisamment à jour pour pouvoir interroger correctement celui-ci.

Le nom du fichier (partie à gauche du point avant l’extension) est formaté puis envoyer en recherche à IMDB. Le résultat est le nom du film avec son année, ainsi il sera très aisé de pouvoir détecté à partir de son mediacenter favoris le film.

  • Romain Forlot
#Import 2023-08-15 20:39

Memo : Git

Créer une nouvelle branche à partir de la branche sur laquelle on se situe :

$ git branch -t <nouvelle_branche>

Pousser une branche local sur un dépôt distant :

$ git push origin <branche_locale>

où origin est le nom du dépôt distant, il est par défaut nommé origin mais il est possible d’en ajouter d’autre avec des noms choisis.

Supprimer une branche locale puis supprimer la branche distante :

$ git branch -d <branche> # Pour une branche complètement mergée
$ git branch -D <branche> # Pour une branche non complètement mergée
$ git push origin :<branche>

  • Romain Forlot
#Import 2023-08-15 20:39

Memo : Utiliser check_oracle_health avec Shinken =<1.4rc1

Ne pas oublier d’ajouter dans le script du service shinken l’inclusion du fichier de profile oracle permettant de positionner les variables d’environnements Oracle indispensable au bon fonctionnement du plugin.

Cela revient à ajouter les lignes suivante au fichier /etc/init.d/shinken :

# Load environment variables
. /etc/profile.d/oraenv.sh

A changer selon le nom du fichier évidement.

Et deuxième oubli qu’il faut éviter, ajouter le chemin des librairies Oracle installés dans la configuration de ldconfig en créant un fichier /etc/ldconfig.conf.d/oracle.conf avec la ligne correspondant au chemin des librairies Oracle :

  • Romain Forlot
#Import 2023-08-15 20:39

[Màj] torrentCP : Script python pour Transmission permettant de traiter les téléchargements terminés

Aaaaaaah, grosse mise à jour du script torrentCP. Nom pris à l’arrache, si y’a de meilleurs idées, dites le moi.

Comment ça marche ?

Avec transmission paramétré comme il faut, il exécute le script à chaque fin de téléchargement de torrent en transmettant des variables d’environnement permettant entre autre de récupérer l’ID du torrent géré par transmission. Le script tente de détecter si c’est un film ou une série basé sur une expression régulière. Simplement si dans le nom du torrent il détecte le format sXXeYY typique d’une série. Cela ne marche donc pas pour des dl de saisons entière, il faut que ce soit un épisode d’une série. (Ex: Community.S04E10.720p.HDTV.X264-DIMENSION )

  • Romain Forlot
#Import 2023-08-15 20:39

Memo : Changement d'hostname et nom de listener d'une base de donnée Oracle

Une astuce est d’utiliser vim et d’utiliser son moteur de remplacement par expression régulière ou bien d’utiliser directement sed. Dans vim, voici la commande à utiliser :

:%s/oldhostname/newhostname/

Et avec sed :

sed 's/oldhostname/newhostname/' fichiersAmodifier

Fichiers à modifier si changement hostname de base de donnée.
Sur l’host BDD :

/etc/hosts
$TNS_ADMIN/tnsnames.ora
$TNS_ADMIN/listener.ora

Sur l’host AS:

/etc/hosts
$ORACLE_HOME/network/admin/tnsnames.ora
$MW_HOME/frinst_1/config/OHS/ohs1/mod_plsql/dads.conf
$MW_HOME/frinst_1/config/tnsnames.ora
$MW_HOME/user_projects/domains/FormsReports/config/fmwconfig/servers/WLS_FORMS/applications/formsapp_11.1.1/config/formsweb.cfg

Fichiers à modifier lors d’un changement de nom du listener sur l’host BDD évidement:

~dba/script/init.d/.sydtab # Spécifique à mon installation pour une installation standard d'Oracle, il n'existe pas
$ORACLE_HOME/network/admin/listener.ora

  • Romain Forlot
#Import 2023-08-15 20:39

[Màj] script d'action automatique après modification de fichiers et présentation de Watcher

Suite au précédent billet sur comment sauvegarder sa configuration automatiquement en combinant git et incrond. Voici une petite mise à jour du procédé, le précédent étant bugger pouvant même mener à une surcharge de la machine avec des OOM à la clé |o/.

Plusieurs problème au script donc, notamment quand des accès successifs et rapprochés sont fais à certains fichiers binaires menant à une cascade, de processus git créer pour commiter et pull les changements dans les dépôts clones. Ou encore des boucles d’un service qui démarre donc écrit dans un fichier qui fait redémarrer le service qui réécrit dans le fichier qui redémarre le service…

  • Romain Forlot
#Import 2023-08-15 22:40

Création répertoire et groupes Domaine Locaux avec ajout de droits automatique

Des petites boucles pour des tâches d’administration possible lors d’une installation d’un annuaire AD. A décliner selon les besoins, évidement de l’optimisation peut être fait pour éviter 50 boucles alors qu’une ou deux suffisent.

Le principe pour appliquer des droits sur des répertoires partagés est simple. Chaque répertoire dispose de 2 groupes d’étendue Domaine Local, un pour la lecture seule et l’autre pour lecture/écriture. On ajoutera ces groupes à chaque répertoire avec les droits adéquats. Enfin on inclura les groupes globaux contenant les users dans les bon groupes domaine locaux pour chaque répertoires.

  • Romain Forlot
#Import 2023-08-15 20:39

Activer le presse papier commun entre le client vSphere et les VMs sur ESXi dans VMware

Voici un petit trick pour activer pouvoir copier/coller depuis votre poste sous MS Windows vers une VM sur un ESX. Il est indispensable d’avoir les VMware Tools d’installés et tant qu’à faire à jour.

Eteindre la VM puis éditer les paramètres et aller dans l’onglet Options. Dans dans Avancé –> Général, cliquer sur le bouton Paramètres de configuration et ajouter les lignes suivantes :

isolation.tools.copy.disable : FALSE
isolation.tools.paste.disable : FALSE

Redémarrer votre client vSphere et activer la VM. C’est bon vous pouvez copier/coller entre votre poste et la VM.

  • Romain Forlot
#Import 2023-08-15 20:39

[Màj] Importation depuis fichiers CSV d'OU, Groupes et Users dans AD

Mise à jour du script d’importation des OU, Groupes et Users dans AD. Avec la possibilité de créer des OU dans des OU.

Le format des fichiers csv est désormais le suivant :

Pour les utilisateurs :

Name;Firstname;Login;OU;Roaming

Pour les groupes :

Name;OU;Members

Et les OU :

Name;OU

Roaming est un champ optionnel permettant de définir les utilisateurs nomades. Ceux-ci seront intégrés dans un groupe pour les utilisateurs nomades en plus de leurs autres groupes. Peu importe la valeur spécifiée (mettre « Y » pour taguer un utilisateur comme nomade)
Les utilisateurs nomades sont les utilisateurs pouvant se déplacer avec leur poste de travail (eg : un ordinateur portable).

  • Romain Forlot
#Import 2023-08-15 20:39

Consolidation les fichiers du disque de la VM impossible!

Vous ne pouvez pas consolider les fichiers de snapshot d’une VM VMware avec l’erreur suivante :

“Impossible d’accéder au fichier car il est vérouillé” ?

Une solution est de redémarrer l’esx. Peu pratique…

Sinon faites un

lsof | grep nom_de_la_VM

lorsque celle ci est éteinte et tuer le processus responsable de ce lock.

Réessayer la consolidation qui devrait fonctionner cette fois.

  • Romain Forlot
#Import 2023-08-15 22:40

Filtre WMI appliqué à une GPO

Une bonne organisation AD demande des OU, des groupes, des ordinateurs et des utilisateurs.

On peut appliquer une GPO sur des groupes, ordinateurs ou groupe par le biais du filtrage de sécurité. Mais pour être plus fin, il est nécessaire d’utiliser des filtres WMI afin de pouvoir appliquer les GPO selon des critères très précis. (Eg: Version OS, Chassis, etc. Voir la liste des classes WMI disponible.)

Selon la version d’OS :

Pour appliquer sur du Windows XP :

  • Romain Forlot
#Import 2023-08-15 22:40

Parcourir une arborescence et la mettre en forme, ou tree sans tree

Après les pérégrinations autour de awk utilisons le tout pour mettre en forme une arborescence et en afficher les attributs voulus. A base de awk et sed \o/

find /path -type d -exec ls -ld {} \; | awk '{ DIR=""
if (NF>9)
{
    for (i=NF;i<=NF;i++)
    {
        DIR=DIR" "$i
    }
}
else
{
    DIR=$9
}
printf("%s [Usr: %s, Grp: %s]\n", DIR, $3, $4)}' | \
sed 's/[^/]*\//|   /g;s/| *\([^| ]\)/+--- \1/'

Ce qui nous donne un résultat pour /var/log par exemple :

  • Romain Forlot
#Import 2023-08-15 22:40

Afficher les X dernier champs d'une ligne avec awk

Problème simple, imaginons que vous vouliez parser la sortie d’un “ls” mais garder seulement quelques champs dont tout les x derniers champs suivant le nombre de champs.

Dans l’exemple, imaginons une sortie de ls :

drwxr-xr-x  3 user groupe     4096 Jan  9 09:07 /var/pok/example avec des espaces

Pour l’exemple qui nous occupe, avec awk comment faire pour prendre le champs 1, 3 , 4 et tous ceux après 9 pour avoir le nom du fichier/répertoire entier ?

  • Romain Forlot
#Import 2023-08-15 22:40

Memo : Consulter les rôles FSMO d'un contrôleur de domaine sur Windows Server 2008 r2

C’est peut être simple mais faut le connaitre, si quelqu’un connait par hasard d’autres manière je suis preneur.

En attendant, voici la commande à lancée pour découvrir qui fait quoi dans un domaine Active Directory :

C:/> netdom.exe query fsmo
Contrôleur de schéma dc1.domain.tld
Maître des noms de domaine dc1.domain.tld
Contrôle de domaine principal dc3.domain.tld
Gestionnaire du pool RID dc2.domain.tld
Maître d'infrastructure dc1.domain.tld

Breaking news: je viens de trouver une autre manière (lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, lire jusque bout les aides, …) :

  • Romain Forlot
#Import 2023-08-15 22:40

Importation depuis fichiers csv d'utilisateurs, groupes avec inclusion de membres dans les groupes.

Créer un fichier csv, encodé en UTF8, pour les users et un autre pour les groups formaté comme suit pour le premier :

Name;Firstname;login;email

Et comme suit pour le second :

Name;Members

Les membres peuvent être aussi bien des groupes que des utilisateurs existant. Le scope des groupe est réglé sur DomainLocal, adapté le au besoin mais il n’a pas été prévu de les gérer finement.
Cependant, il ne serait pas bien compliqué de le gérer. Pour cela ajouter une colonne au fichier csv des groupes avec Scope et modifier le paramètre lors de la création du groupe concernant le scope.

  • Romain Forlot
#Import 2023-08-15 22:40

Gestion de ses fichiers de configuration avec git

Je me demandais comment pouvoir update proprement avec les distributions ne fonctionnant pas en rolling release. La plupart ne le sont pas d’ailleurs. Bref, c’est quand même super lourd de devoir réinstaller tout les paquets, en n’oubliant aucun…, et de se retaper la config. Donc comment faire ?

Ajout des paquets au kickstart

Utilisant Fedora, le problème de réinstaller les paquets sans en oublier ne posait pas vraiment de problème avec Kickstart. Il suffit de faire un inventaire de ses paquets et de le mettre dans le fichier kickstart. Voilà une méthode pour le faire simplement :

  • Romain Forlot
#Import 2023-08-15 22:40

Renommer une machine virtuelle dans VMware Vsphere <= 5.0

Qui n’a jamais râler après avoir maladroitement nommé une VM de ne pouvoir réellement changer son nom?

Bien sûr vous pouvez la renommer dans l’interface vSphere Client, mais le dossier et les fichiers composants cette VM seront toujours avec le premier nom…

Il paraitrait qu’un Storage vMotion (froid ou chaud peu importe) résolve le soucis. Cela n’a pas fonctionné chez moi, mais voici la procédure :
Dans vSphere Client, renommer la VM
Faites un storage vMotion de la machine virtuelle

  • Romain Forlot
#Import 2023-08-15 22:40

USN rollback avec Windows 2K8 R2. Replication impossible.

Qu’est ce qu’un USN ?

le numéro USN permet de contrôler l’état d’une partition AD. A chaque modification dans la base d’AD est faite alors le numéro USN est incrémenté.

Qu’est ce qu’un USN rollback ?

Ce cas se produit typiquement lorsque vous restaurez un contrôleur de domaine ou revenez en arrière avec un snapshot d’une solution de virtu (VMware, HyperV…). Vous revenez en arrière dans le temps et si des modifs ont été faites entre temps sur le serveur restauré alors celui-ci reviendra avec le #USN qu’il avait au moment de la sauvegarde.

  • Romain Forlot
#Import 2023-08-15 22:40

torrentCP : Script python pour Transmission permettant de traiter les téléchargements terminés

J’ai créé un script en python me permettant de décompresser mes épisodes de séries téléchargées par transmission directement dans les bons dossiers. Pour les films c’est un simple lien hard avec le fichier téléchargé mais avec un nom formaté “titre (Année de parution).extension” pour enlever les informations sur la team, codec etc. Ainsi ce fichier peut être utilisé par des scrappers pour votre logiciel mediacenter préféré, le titre est IMDB compliant \o/.

  • Romain Forlot
#Import 2023-08-15 22:40

Erreurs de compilation des VMware-Tools sur des distributions récentes (UTS_RELEASE does not match)

Si vous voulez compiler les Vmware-tools sur une distribution récente vous risquer de vous heurter à l’erreur suivante :

The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match
your running kernel (version 2.6.42.9-1.fc15.i686). Even if the module were to
compile successfully, it would not load into the running kernel.

Pour la compilation, il cherche la variable UTS_RELEASE et comme cette variable n’existe plus dans les kernels récents, il ne lance même pas la compil. Donc il ne reste plus qu’à ajouter cette variable dans le bon fichier et l’affaire est réglée.

  • Romain Forlot
Comment modifier un dictionnaire en python tout en le parcourant
#Import 2023-08-15 22:40

Comment modifier un dictionnaire en python tout en le parcourant

Voilà une astuce pour modifier un dictionnaire en le parcourant. Si vous essayiez de le faire de la manière “naïve” vous obtiendrez l’erreur suivante :

example = { 'k1' : 'v1', 'k2, : 'v2' , ... }
for (k,v) in example.iteritems():
if k == 'k2':
del example[k]
RuntimeError: dictionary changed size during iteration

Python n’aime pas ça du tout, si vous le faites avec la méthode items() en revanche, aucune erreurs ne sera relevée var celle-ci renvoie une copy du dictionnaire si bien que la modification n’y est pas répercuté. Et si comme moi vous êtes en version 2.6 qui ne dispose pas des nouvelles méthodes viewitems(), viewkeys() et viewvalues() permettant la consultation d’un dictionnaire dynamique, il faudra passer par l’astuce suivante :

  • Romain Forlot