<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Redhat on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/redhat/</link><description>Recent content in Redhat on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Wed, 11 May 2022 12:30:00 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/redhat/index.xml" rel="self" type="application/rss+xml"/><item><title>S'authentifier sur Proxmox VE avec Keycloak</title><link>https://blog.zwindler.fr/2022/05/11/s-authentifier-sur-proxmox-avec-keycloak/</link><pubDate>Wed, 11 May 2022 12:30:00 +0000</pubDate><guid>https://blog.zwindler.fr/2022/05/11/s-authentifier-sur-proxmox-avec-keycloak/</guid><description>&lt;img src="https://blog.zwindler.fr/2021/08/sign_in_with_google.webp" alt="Featured image of post S'authentifier sur Proxmox VE avec Keycloak" /&gt;&lt;h2 id="résumé-des-épisodes-précédents"&gt;Résumé des épisodes précédents
&lt;/h2&gt;&lt;p&gt;Cet article est la suite d&amp;rsquo;un article que j&amp;rsquo;avais sorti en aout dernier (time flies&amp;hellip;) sur &lt;a class="link" href="https://blog.zwindler.fr/2021/08/30/installer-keycloak-15-sur-ubuntu-20-04-sans-docker/" &gt;l&amp;rsquo;installation de Keycloak (sans utiliser l&amp;rsquo;image Docker)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J&amp;rsquo;avais bien entendu une idée derrière la tête (on installe pas un Keycloak pour le plaisir ?). cette idée était de tirer parti de l&amp;rsquo;authentification OIDC qui venait d&amp;rsquo;être ajoutée à Proxmox VE 7.&lt;/p&gt;
&lt;p&gt;Je pars donc du principe que vous avez un serveur Keycloak fonctionnel et on va s&amp;rsquo;en servir pour ajouter l&amp;rsquo;authentification OIDC à notre cluster PVE.&lt;/p&gt;
&lt;h2 id="getting-started"&gt;Getting Started
&lt;/h2&gt;&lt;p&gt;Dans l&amp;rsquo;article précédent, je vous avais laissé au moment où on se connectait à l&amp;rsquo;UI de Keycloak, et qu&amp;rsquo;on arrivait sur le &amp;ldquo;Getting Started&amp;rdquo;. Si vous voulez plus de détails sur cette étape, je vous conseille de lire &lt;a class="link" href="https://www.keycloak.org/guides" target="_blank" rel="noopener"
&gt;l&amp;rsquo;article de documentation associé sur le site officiel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/08/keycloak_admin.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Nous, on va commencer direct par la création d&amp;rsquo;un &amp;ldquo;Realm&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Dans un contexte multi client ou multi entreprise, les Realms vous permettraient d&amp;rsquo;avoir un Realm par client par exemple, chacun avec son propre système d&amp;rsquo;authentification (LDAP, AD, &amp;hellip;).&lt;/p&gt;
&lt;p&gt;Ici, on ne va pas d&amp;rsquo;embêter, je fais un realm pour mon Proxmox et il servira juste pour ça.&lt;/p&gt;
&lt;h2 id="créer-un-realm"&gt;Créer un Realm
&lt;/h2&gt;&lt;p&gt;C&amp;rsquo;est peut-être un manque d&amp;rsquo;habitude, mais j&amp;rsquo;ai pas trouvé la navigation entre &amp;ldquo;Realm&amp;rdquo; hyper intuitive, au début. En fait, par défaut vous êtes sur un realm &amp;ldquo;master&amp;rdquo; (visible tout en haut à gauche de l&amp;rsquo;écran, sous le logo Keycloak).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/08/keycloak_master.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;En cliquant sur la flèche qui va vers le bas, à droite de &amp;ldquo;Master&amp;rdquo;, on ouvre un menu déroulant, qui dévoile option &amp;ldquo;Add realm&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/add_realm.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On lui donne un petit nom et c&amp;rsquo;est bon.&lt;/p&gt;
&lt;h2 id="créer-un-client"&gt;Créer un client
&lt;/h2&gt;&lt;p&gt;Dans la terminologie Keycloak (OIDC en général), un client, ça va en fait être notre application qui va déléguer l&amp;rsquo;authentification à Keycloak.&lt;/p&gt;
&lt;p&gt;Dans le realm Proxmox, on va donc créer un client pour ProxmoxVE.&lt;/p&gt;
&lt;p&gt;On lui donne un petit nom, mais surtout l&amp;rsquo;URL de connexion qui va avec (on prend le premier serveur du cluster, car chaque serveur à sa propre URL de connexion à l&amp;rsquo;UI, mais on va gérer ça plus tard).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/add_client.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Vous devriez ensuite être redirigé vers les paramètres (plus complets) du client. De mémoire, il n&amp;rsquo;y a rien à changer, les paramètres par défaut sont bons, sauf si vous avez plusieurs URIs de connection.&lt;/p&gt;
&lt;p&gt;C&amp;rsquo;est mon cas, j&amp;rsquo;ai plusieurs serveurs proxmox VE en cluster, mais je n&amp;rsquo;ai pas de loadbalancer qui me redirige sur les backends :8006 sur même URL en frontal.&lt;/p&gt;
&lt;p&gt;Je dois donc renseigner dans la case &amp;ldquo;Valid Redirect URIs&amp;rdquo; autant d&amp;rsquo;URI que j&amp;rsquo;ai de serveurs PVE.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/redirect_uri.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="créer-un-utilisateur-dans-keycloak"&gt;Créer un utilisateur dans Keycloak
&lt;/h2&gt;&lt;p&gt;Avant d&amp;rsquo;aller configurer Proxmox VE, on va vouloir ajouter des utilisateurs dans Keycloak.&lt;/p&gt;
&lt;p&gt;Idéalement, vous avez déjà une base de comptes interne (LDAP, AD, etc) ou externe (Google Gmail, Azure AD, que sais-je encore). C&amp;rsquo;est cet &amp;ldquo;Identity Provider&amp;rdquo; que vous allez devoir connecter à votre Keycloak. Cependant, ça sort du scope de cet article.&lt;/p&gt;
&lt;p&gt;Pour info, j&amp;rsquo;ai réussi en très peu de temps, et en suivant cet article &lt;a class="link" href="https://web.archive.org/web/20240204123315/https://keycloakthemes.com/blog/how-to-setup-sign-in-with-google-using-keycloak" target="_blank" rel="noopener"
&gt;How to setup Sign in with Google using Keycloak (lien mort, j&amp;rsquo;ai utilisé Internet Archive)&lt;/a&gt;, à connecter mon compte gmail perso à Keycloak et je peux l&amp;rsquo;utiliser pour me logger dans ma console Proxmox.&lt;/p&gt;
&lt;p&gt;Pour rester simple, on va seulement créer un login dans Keycloak, car l&amp;rsquo;outil offre une base de comptes interne qui suffiront pour cet article.&lt;/p&gt;
&lt;p&gt;Dans le menu de gauche, sur le realm Proxmox qu&amp;rsquo;on vient de créer, allez dans &amp;ldquo;Manage / Users&amp;rdquo;, puis cliquez sur &amp;ldquo;Add User&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;On va vous demander des informations :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/create_user_in_realm.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Une fois validé, affectez-lui un mot de passe.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/user_set_password.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Normalement, une fois que c&amp;rsquo;est fait, on en a fini avec Keycloak.&lt;/p&gt;
&lt;h2 id="configurer-proxmox-ve"&gt;Configurer Proxmox VE
&lt;/h2&gt;&lt;p&gt;On peut donc aller configurer Proxmox VE. L&amp;rsquo;opération est relativement simple. Une fois loggé dans l&amp;rsquo;interface de management, on peut trouver le menu &amp;ldquo;Authentification&amp;rdquo; (dans le scope Datacenter).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/proxmox_add_oidc.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On crée un provider de type OIDC :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/proxmox_auth_openid.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Note: l&amp;rsquo;URL que vous devrez mettre dans issuer URL est de la forme &lt;a class="link" href="https://mykeycloak.myexample.org/auth/realms/myrealm" target="_blank" rel="noopener"
&gt;https://mykeycloak.myexample.org/auth/realms/myrealm&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Une fois que c&amp;rsquo;est fait, vous pouvez vous délogger. Dans le menu des &amp;ldquo;Realm&amp;rdquo; (les Realm au sens &amp;ldquo;Proxmox VE&amp;rdquo;, cette fois-ci) doit apparaitre maintenant &amp;ldquo;keycloak&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Une fois que vous le sélectionnez, ça doit donner ça :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/login_oidc_proxmox.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Si vous cliquez sur &lt;strong&gt;Login&lt;/strong&gt;, vous serez redirigé sur une mire de login de Keycloak qui devrait ressembler à ça :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2022/05/mire_login_keycloak.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;(Ou ça, si vous avez suivi le tuto pour gmail)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/08/sign_in_with_google.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Enjoy !!&lt;/p&gt;
&lt;h2 id="bonus--debug-oidc"&gt;Bonus : debug OIDC
&lt;/h2&gt;&lt;p&gt;En partant du principe que votre Keycloak est accessible à l&amp;rsquo;URL mykeycloak.myexample.org et que vous avez créé le realm myrealm, dans lequel existe un user proxmox avec pour mot de passe KEYCLOAKPASSWORD :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;curl https://mykeycloak.myexample.org/auth/realms/myrealm/protocol/openid-connect/token --user proxmox:cacf30e8-d71d-4cba-8dd6-cd1bf3661053 -H &amp;#39;content-type: application/x-www-form-urlencoded&amp;#39; -d &amp;#39;username=proxmox&amp;amp;password=KEYCLOAKPASSWORD&amp;amp;grant_type=password&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La requête doit renvoyer un access token en JSON&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-JSON" data-lang="JSON"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;access_token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;eyJaaaaaaaaaaaaaaa90A&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;expires_in&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;300&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;refresh_expires_in&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;refresh_token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;eyJaaaaaaaaaaaaaaa_Ks&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;token_type&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Bearer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;not-before-policy&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;session_state&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;f68a1fcc-7741-4ba7-bea6-51756e81f6e1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nt"&gt;&amp;#34;scope&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;profile email&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Installer Keycloak 15 sur Ubuntu 20.04 (sans Docker)</title><link>https://blog.zwindler.fr/2021/08/30/installer-keycloak-15-sur-ubuntu-20-04-sans-docker/</link><pubDate>Mon, 30 Aug 2021 06:30:00 +0000</pubDate><guid>https://blog.zwindler.fr/2021/08/30/installer-keycloak-15-sur-ubuntu-20-04-sans-docker/</guid><description>&lt;img src="https://blog.zwindler.fr/2021/08/sign_in_with_google.webp" alt="Featured image of post Installer Keycloak 15 sur Ubuntu 20.04 (sans Docker)" /&gt;&lt;h2 id="keycloak-sur-ubuntu-pour-faire-de-loidc-comme-un-chef"&gt;Keycloak sur Ubuntu, pour faire de l’OIDC comme un chef
&lt;/h2&gt;&lt;p&gt;J’en ai parlé un peu lors de l’article sur les soucis que j’ai rencontré lors de mon passage de Proxmox VE 6 à 7 : une des features (surprise en plus) de cette release a été le support d’&lt;strong&gt;OpenID Connect&lt;/strong&gt; pour l’authentification dans Proxmox VE.&lt;/p&gt;
&lt;p&gt;Ça fait très longtemps que j’ai envie d’ajouter une authentification externe de type SSO à mon cluster Proxmox VE perso, mais je n’ai pas eu le courage (l’envie) d’installer un LDAP et encore moins un Active Directory (&lt;a class="link" href="https://blog.zwindler.fr/recherche/?keyword=windows" &gt;heureusement cette période de ma vie est loin derrière&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Or, je sais que dans les produits permettant de faire de l’OpenID Connect (et du SAML), il y a &lt;strong&gt;&lt;a class="link" href="https://www.keycloak.org/" target="_blank" rel="noopener"
&gt;Keycloak&lt;/a&gt;&lt;/strong&gt;, le IAM récupéré par Redhat et qui cartonne pas mal depuis quelques années maintenant.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Add authentication to applications and secure services with minimum fuss. No need to deal with storing users or authenticating users. It’s all available out of the box.&lt;/p&gt;
&lt;p&gt;You’ll even get advanced features such as User Federation, Identity Brokering and Social Login.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et il se trouve aussi que j’ai pour plan d’installer, dans les jours / semaines / mois qui viennent un keycloak au boulot pour d’autres besoins qui n’ont rien à voir. Vous me voyez donc venir, j’ai pris les devant et j’ai installé keycloak sur mon infra perso ;-)&lt;/p&gt;
&lt;p&gt;Note : dans cet article, &lt;strong&gt;on ne va parler que de l’installation de Keycloak&lt;/strong&gt;. S’il n’y a que ça qui vous intéresse, ne vous inquiétez pas, la partie Proxmox sera traitée dans un autre article.&lt;/p&gt;
&lt;h2 id="pourquoi-pas-un-container-docker-"&gt;Pourquoi pas un container Docker ?
&lt;/h2&gt;&lt;p&gt;La plupart des gens installent keycloak de la façon qui est maintenant mise en avant par beaucoup d’éditeurs quand leur soft est un peu pénible à installer : un container Docker.&lt;/p&gt;
&lt;p&gt;Effectivement ça simplifie grandement l’installation, surtout comparé à la doc d’install sans docker qui est pas terrible terrible&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For more details go to &lt;a class="link" href="https://www.keycloak.org" target="_blank" rel="noopener"
&gt;about&lt;/a&gt; and &lt;a class="link" href="https://www.keycloak.org/documentation" target="_blank" rel="noopener"
&gt;documentation&lt;/a&gt;, and don’t forget to &lt;a class="link" href="https://www.keycloak.org/guides" target="_blank" rel="noopener"
&gt;try Keycloak&lt;/a&gt;. It’s easy by design!&lt;/p&gt;
&lt;p&gt;easy by design ??? p%$$£ç*µ !!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Alors qu’avec Docker, l’image est prête à l&amp;rsquo;emploi et « juste marche » (pour peu qu’on sache à peu près faire de l’OIDC ce qui n’était pas mon cas mais ça c’est une prochaine histoire ;-p).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="et-donc-du-coup-nous-on-va-linstaller-à-la-mano"&gt;Et donc du coup, nous on va l’installer à la mano
&lt;/h2&gt;&lt;p&gt;Eux disent que c’est une installation « baremetal ». Enfin, ça, c’est leur terminologie à eux. Moi je vais l’installer dans un container LXC, mais ça aurait très bien pu être installé sur une « vraie » VM Linux, un serveur physique ou un raspberry Pi (des gens l’ont porté sur ARM avec succès).&lt;/p&gt;
&lt;p&gt;Keycloak est relativement peu gourmand (surtout pour une application Java !!) et tourne sans broncher dans mon container LXC avec 512 Mo de RAM. Je suis certain que j’aurais pu mettre moins en tweakant la JVM.&lt;/p&gt;
&lt;p&gt;L’installation « baremetal » donc se base sur un serveur Wildfly à faire tourner sur un OpenJDK &amp;gt; 8. Une fois mon container LXC (ou ma VM) installée en Ubuntu 20.04, j’ai donc installé le dernier JRE disponible (16)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apt update
apt dist-upgrade
apt install openjdk-16-jre
java -version
openjdk version &amp;#34;16.0.1&amp;#34; 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-Ubuntu-120.04)
OpenJDK 64-Bit Server VM (build 16.0.1+9-Ubuntu-120.04, mixed mode, sharing)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans les autres prérequis que je m’impose moi-même, c’est la création d’un utilisateur Linux non privilégié (ne pas lancer un soft en tant que root sauf si c’est vraiment nécessaire !)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;groupadd keycloak
useradd -r -g keycloak -d /usr/lib/keycloak -s /sbin/nologin keycloak
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="récupérer-la-dernière-version"&gt;Récupérer la dernière version
&lt;/h2&gt;&lt;p&gt;Redhat package son soft dans un tar.gz disponible sur github dans la section &lt;strong&gt;releases&lt;/strong&gt; de dépôt principal de keycloak. Vous trouverez aussi &lt;a class="link" href="https://www.keycloak.org/downloads" target="_blank" rel="noopener"
&gt;des raccourcis sur cette page&lt;/a&gt;. Dans mon cas, je n’ai pas essayé encore la version Quarkus (en preview) mais bien la bonne vieille version Wildfly.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd /usr/lib
wget https://github.com/keycloak/keycloak/releases/download/15.0.1/keycloak-15.0.1.tar.gz
tar xzf keycloak-15.0.1.tar.gz
ln -s keycloak-15.0.1 keycloak
rm keycloak-15.0.1.tar.gz
chown -R keycloak: /usr/lib/keycloak-15.0.1
chmod o+x /usr/lib/keycloak/
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="configuration"&gt;Configuration
&lt;/h2&gt;&lt;p&gt;A partir de là, on a quasiment tout pour démarrer le serveur Keycloak. En vrai, on pourrait déjà lancer le script &lt;strong&gt;standalone.sh&lt;/strong&gt; et ça démarrerait.&lt;/p&gt;
&lt;p&gt;Mais ça ne marcherait pas très très bien, car on a pas mal de configuration à faire. Ce genre de procédure cracra m’a rappelé la bonne époque de configuration des produits Redhat et IBM (maintenant la même maison, comme par hasard) qui fleure bon la prise de tête et les erreurs humaines&amp;hellip;&lt;/p&gt;
&lt;p&gt;La première chose à faire est de créer quelques dossiers et de copier des fichiers :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir /etc/keycloak
mkdir -p /var/run/keycloak
chown keycloak: /var/run/keycloak
cp /usr/lib/keycloak/docs/contrib/scripts/systemd/launch.sh /usr/lib/keycloak/bin/
cp /usr/lib/keycloak/docs/contrib/scripts/systemd/wildfly.conf /etc/keycloak/keycloak.conf
cp /usr/lib/keycloak/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/keycloak.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La « blague » c’est que les PATH sont rentrés en durs dans la plupart de ces fichiers et pointent vers « /opt/wildfly » ce qui a peut-être beaucoup de sens pour les gens de chez Redhat mais pas dans mon setup (j’installe keycloak, pas un serveur wildfly, dans /usr/lib, pas dans /opt&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Comme je suis feignant et que je crains les fautes de frappes difficiles à voir à l’œil nu, j’édite les fichiers incriminés avec des &lt;strong&gt;sed&lt;/strong&gt;. Mais libre à vous de préférer les éditer à la main avec &lt;strong&gt;vi&lt;/strong&gt; (d’ailleurs, ça vaut le coup de vérifier que le fichier est pas en vrac).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sed -i &amp;#39;s!wildfly!keycloak!g&amp;#39; /etc/systemd/system/keycloak.service
sed -i &amp;#39;s!/opt/keycloak!/usr/lib/keycloak!&amp;#39; /etc/systemd/system/keycloak.service
sed -i &amp;#39;s!/opt/wildfly!/usr/lib/keycloak!&amp;#39; /usr/lib/keycloak/bin/launch.sh
#lire la suite avant de lancer la suivante
sed -i &amp;#39;s!\$3$!\$3 -Dkeycloak.frontendUrl=https://keycloak.example.org/auth!&amp;#39; /usr/lib/keycloak/bin/launch.sh
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Petite subtilité pour la dernière commande sed, j’ai mis keycloak derrière un reverse proxy pour faire plus joli et ajouter une couche TLS gérée par moi (et pas par wildfly) et arrêter de faire du PLAIN sur un soft d’IAM (facepalm).&lt;/p&gt;
&lt;p&gt;&lt;a class="link" href="https://blog.zwindler.fr/2021/08/image-1.avif" &gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(lien mort, je ne suis plus sur Twitter)&lt;/p&gt;
&lt;p&gt;Sauf que la totalité liens sur les pages d’admin de keycloak pointaient en HTTP plain qui échouaient donc.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.keycloak.org/server/configuration-provider" target="_blank" rel="noopener"
&gt;La solution dans ce genre de cas est décrite ici&lt;/a&gt; et en gros le plus simple c’est de coller l’URL de votre frontend / reverse proxy dans les paramètres de lancement. Pourquoi faire simple quand on peut faire compliqué ?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="démarrer-le-service"&gt;Démarrer le service
&lt;/h2&gt;&lt;p&gt;A partir de là, on a quasiment un keycloak vraiment fonctionnel. Vous pouvez lancer la console :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl enable keycloak.service
systemctl start keycloak.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La console est accessible sur votre LAN via l’IP de la VM sur le port 8080&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/08/keycloak_admin.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Reste la dernière petite subtilité : il n’y a aucun compte pour s’y connecter &lt;em&gt;:trollface:&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;On retourne dans notre shell et on lance le script suivant, qui va injecter un bout de XML dans notre conf (qu’est ce que c’est crade&amp;hellip; heureusement que le soft est bien au-delà de l’install&amp;hellip;)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/usr/lib/keycloak/bin/add-user-keycloak.sh -r master -u youruser
Press ctrl-d (Unix) or ctrl-z (Windows) to exit
Password:
Added &amp;#39;youruser&amp;#39; to &amp;#39;/usr/lib/keycloak/standalone/configuration/keycloak-add-user.json&amp;#39;, restart server to load user
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ah, et bien sûr, comme c’est de la configuration XML en dur, il faut redémarrer wildfly ;-)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart keycloak.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et maintenant, à partir de là, vous pouvez commencer le &amp;ldquo;&lt;a class="link" href="https://www.keycloak.org/getting-started/getting-started-zip" target="_blank" rel="noopener"
&gt;Getting Started&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2021/08/keycloak_master.avif"
loading="lazy"
&gt;&lt;/p&gt;</description></item><item><title>Erreur multipath « Path not correctly configured for failover »</title><link>https://blog.zwindler.fr/2017/05/24/erreur-multipath-path-not-correctly-configured-for-failover/</link><pubDate>Wed, 24 May 2017 14:15:45 +0000</pubDate><guid>https://blog.zwindler.fr/2017/05/24/erreur-multipath-path-not-correctly-configured-for-failover/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/05/path_failover2.webp" alt="Featured image of post Erreur multipath « Path not correctly configured for failover »" /&gt;&lt;h2 id="path-not-correctly-configured-for-failover"&gt;Path not correctly configured for failover
&lt;/h2&gt;&lt;p&gt;Il y a quelque temps, nous avons du décommissionner une vieille baie HP EVA (qui nous coutait plus cher en maintenance que d’acquérir une baie neuve) et migrer les LUNs vers une baie EMC VNX, elle encore sous maintenance. Cependant, lorsque la migration a été faite, le consultant qui s’est chargé de reconfigurer multipath pour migrer d’une baie à l’autre l’a un peu fait « rapidement ».&lt;/p&gt;
&lt;p&gt;Quelques mois plus tard, lors d’une maintenance classique sur une des baies EMC, de grosses anomalies ont été détectés. Lors de la coupure d’un contrôleur pour mise à jour, certains serveurs hébergeant une partie de nos progiciels, encore sous Redhat 4, se bloquaient au niveau I/O au lieu de basculer sur les chemins encore disponibles. L’occasion rêvée pour refaire un peu de multipath !&lt;/p&gt;
&lt;p&gt;Dans cet article, je vais donc passer en revue quelques unes des erreurs que j’ai pu rencontrer, et comment les corriger.&lt;/p&gt;
&lt;h2 id="liloo-dallas-multipath-"&gt;Liloo Dallas Multipath ?
&lt;/h2&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/05/multipass.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;D’abord un bref rappel.&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne connaissent pas multipath, il s’agit d’un module de Linux qui permet de gérer les chemins multiples vers une même disque. On l’utilise sur des réseaux de stockage d’entreprises qui disposent de plusieurs niveaux de tolérance aux pannes.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/05/multipath01.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Chacun des chemins SAN menant à un même disque (LUN A sur le schéma ci dessus) sont indexés côté OS par leur propre &lt;em&gt;special device&lt;/em&gt; du type &lt;strong&gt;/dev/sd[n]&lt;/strong&gt; (4 chemins : sde, sdf, sdg et sdh dans l’exemple).&lt;/p&gt;
&lt;p&gt;On ne peut pas directement les utiliser puisqu’on utiliserait dans ce cas là qu’un seul des chemins disponibles. Et écrire en direct sur 2 chemins menant vers un même disque en même temps serait catastrophique.&lt;/p&gt;
&lt;p&gt;Heureusement, Multipath détecte de lui même (via l’UUID du disque) que les chemins sont en fait un même périphérique et créé pour nous un fichier spécial &lt;strong&gt;/dev/dm-[n]&lt;/strong&gt; qui permet de pointer vers le disque via l’ensemble de ses chemins.&lt;/p&gt;
&lt;h2 id="vérifier-le-plus-évident"&gt;Vérifier le plus évident
&lt;/h2&gt;&lt;p&gt;Initialement, l’anomalie n’était pas visible car les vérifications de l’état de multipath n’avaient été faites qu’avec le niveau de détail standard : les chemins sont bien déclarés, visibles et fonctionnels&amp;hellip; RAS de ce côté.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# multipath -l
mpath9 (36006016067302f00e4588d06345ee111)
[size=100 GB][features=&amp;#34;1 queue_if_no_path&amp;#34;][hwhandler=&amp;#34;1 emc&amp;#34;]
\_ round-robin 0 [active]
\_ 0:0:5:3 sdd 8:48 [active]
\_ 1:0:5:3 sdh 8:112 [active]
\_ round-robin 0 [enabled]
\_ 0:0:4:3 sdc 8:32 [active]
\_ 1:0:4:3 sdg 8:96 [active]
[…]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;De même les modules multipath étaient bien chargés dans le kernel :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# lsmod |grep dm
dm_mirror 32585 0
dm_round_robin 5185 1
dm_emc 7745 1
dm_multipath 22865 3 dm_round_robin,dm_emc
dm_mod 76585 7 dm_mirror,dm_multipath
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cependant, le démon multipathd qui permet de gérer les bascules de chemins est lui hors service&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# service multipathd status
multipathd est arrêté
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;ATTENTION : Le démarrage du démon multipath peut éventuellement provoquer une coupure des chemins, ce qui va planter le serveur et les traitements en cours. Il faut donc bien prendre garde que le serveur ne soit pas utilisé lors de son activation.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;chkconfig multipathd on
chkconfig --add multipathd
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="doublons-dans-les-user-friendly-device-names"&gt;Doublons dans les user-friendly device names
&lt;/h2&gt;&lt;p&gt;Une fois les problèmes basiques réglés, nous avons remarqué que le consultant en question ne s’était pas trop embêté avec les &lt;em&gt;user-friendly names&lt;/em&gt;. Voici ce que la commande suivante renvoyait :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# multipath -v2
remove: mpath9 (dup of mpath2)
mpath9: map in use
remove: mpath23 (dup of mpath2)
mpath23: map in use
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bien que non bloquant, ceci est clairement peu élégant ;-).&lt;/p&gt;
&lt;p&gt;Comme je l’explique plus haut, multipath agrège les &lt;strong&gt;/dev/sd[n]&lt;/strong&gt; en un seul et unique &lt;strong&gt;/dev/dm-[n]&lt;/strong&gt;. Cependant, il est déconseillé d’utiliser directement le fichier &lt;strong&gt;/dev/dm-[n]&lt;/strong&gt;. En effet, tout comme les &lt;strong&gt;/dev/sd[n]&lt;/strong&gt; (que ce soit dans le cadre de multipath ou pas d’ailleurs), les fichiers &lt;strong&gt;/dev/dm-[n]&lt;/strong&gt; sont susceptibles de changer au cours de la vie du serveur ! De quoi avoir une mauvaise surprise après maintenance&amp;hellip;&lt;/p&gt;
&lt;p&gt;Pour résoudre ce problème, plusieurs solutions sont conseillées. Soit on utilise le WWID du disque qui est garanti unique, soit on utilise le device mapper qui transpose ce &lt;strong&gt;dm-[n]&lt;/strong&gt; un &lt;em&gt;user-friendly name&lt;/em&gt; du type &lt;strong&gt;/dev/mpath[n]&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dans le cas présent, au gré de la migration, les WWID avaient générés plusieurs &lt;strong&gt;mpath&lt;/strong&gt; pour un même disque et il n’y avait plus de cohérence !&lt;/p&gt;
&lt;p&gt;Pour régler le problème, le plus simple est de couper toutes les applications, puis d’effacer la configuration (pas les données, hein, juste les chemins et la table de correspondance) pour repartir de zéro. On récupère les WWID de chaque disques, puis on supprime tous les chemins courants avec les commandes suivantes :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;multipath -ll #affiche les chemins et leurs informations
multipath -F #flush de tous les chemins enregistrés
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une fois les chemins supprimés, il faut modifier le fichier de configuration &lt;strong&gt;/etc/multipath.conf&lt;/strong&gt; pour y ajouter en fin de fichier la déclaration des WWID à associer à des &lt;em&gt;friendly_names&lt;/em&gt; fixés manuellement :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[...]
multipaths {
multipath {
wwid &amp;#34;360060160da302f009cd38abe2f5ee111&amp;#34;
alias mpath0
}
multipath {
wwid &amp;#34;36006016067302f00e458ad06345ee111&amp;#34;
alias mpath2
}
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En enfin, on peut les réenregistrer à l’aide de la commande :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;multipath -v2
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="mode-alua-4pnr-1-pour-les-luns"&gt;Mode ALUA 4/PNR 1 pour les LUNs
&lt;/h2&gt;&lt;p&gt;Pour autant, la vraie cause de l’anomalie n’a pu être détectée que lorsque le mode de détails supérieur a été utilisé pour afficher les chemins (option -ll). Plusieurs messages d’erreurs relativement explicites se sont affichés, et notamment :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la mention &lt;em&gt;Path not correctly configured for failover&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;les chemins en &lt;em&gt;« [active][faulty] »&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;multipath -ll
Path not correctly configured for failover
Path not correctly configured for failover
Path not correctly configured for failover
Path not correctly configured for failover
mpath9 (36006016067302f00e4588d06345ee111)
[size=100 GB][features=&amp;#34;1 queue_if_no_path&amp;#34;][hwhandler=&amp;#34;1 emc&amp;#34;]
\_ round-robin 0 [active]
\_ 0:0:5:3 sdd 8:48 [active][faulty]
\_ 1:0:5:3 sdh 8:112 [active][faulty]
\_ round-robin 0 [enabled]
\_ 0:0:4:3 sdc 8:32 [active][faulty]
\_ 1:0:4:3 sdg 8:96 [active][faulty]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Après consultation de ressources en lignes et du « [Host Connectivity Guide for Linux][3] », il apparait que le mode « ALUA 4 actif actif» n’est pas supporté sur les serveurs Redhat Entreprise Linux 4. Il faut utiliser le mode « PNR 1 actif passif» qui lui est bien certifié.&lt;/p&gt;
&lt;p&gt;Dans notre cas, c’est pourtant bien ce mode « ALUA 4 » qui avait été déclaré côté baie EMC pour les chemins vers l’hôte. A l’inverse, la configuration qui avait été appliquée côté serveur était bien en mode « PNR 1 ». Il y avait donc une incohérence de ce côté-là.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/05/multipath02.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="changer-le-mode-des-luns-sur-une-baie-vnx"&gt;Changer le mode des LUNs sur une baie VNX
&lt;/h2&gt;&lt;p&gt;La modification du type de Failover pour un LUN donné peut se faire depuis la console Unisphere mais ce n’est pas évident à trouver !&lt;/p&gt;
&lt;p&gt;Une fois connecté, il faut choisir une des baies, ouvrir le menu « Hosts » puis « Host List ». Sélectionner le serveur concerné dans la liste, puis ouvrir l’onglet « Initiators » en bas de page.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/05/multipath03.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Sélectionner un port, puis cliquer sur « Edit », et reconfigurer les 4 chemins.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/05/multipath04.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Valider, et recommencer l’opération autant de fois que nécessaire.&lt;/p&gt;
&lt;h2 id="le-mot-de-la-fin"&gt;Le mot de la fin
&lt;/h2&gt;&lt;p&gt;Dans notre cas, beaucoup d’erreurs avaient été faites lors de la configuration des LUNs, de la baie de disques et de multipath. Ça donne donc un bon tour d’horizon des premières choses à vérifier si jamais votre multipath sous Linux fonctionne mal.&lt;/p&gt;
&lt;p&gt;Lorsque vous avez comme nous des baies EMC, j’aimerais insister sur le fait que le &lt;a class="link" href="https://web.archive.org/web/20190717113830/https://www.emc.com/collateral/TechnicalDocument/docu5128.pdf" target="_blank" rel="noopener"
&gt;Host Connectivity Guide for Linux (lien mort, j&amp;rsquo;utilise Internet Archive)&lt;/a&gt; est vraiment un document très important, qui vous aidera à correctement tout configurer. N’hésitez pas à le lire en détail !&lt;/p&gt;</description></item><item><title>Problème de pointeur souris sur la console dans OracleVM 3.4</title><link>https://blog.zwindler.fr/2017/02/09/probleme-de-pointeur-souris-sur-la-console-dans-oraclevm-3-4/</link><pubDate>Thu, 09 Feb 2017 13:00:44 +0000</pubDate><guid>https://blog.zwindler.fr/2017/02/09/probleme-de-pointeur-souris-sur-la-console-dans-oraclevm-3-4/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/02/SimpleMouse.gif" alt="Featured image of post Problème de pointeur souris sur la console dans OracleVM 3.4" /&gt;&lt;h2 id="oraclevm-quelques-faiblesses-sur-la-console-comme-les-autres"&gt;OracleVM, quelques faiblesses sur la console, comme les autres&amp;hellip;
&lt;/h2&gt;&lt;p&gt;Dans la série des articles sur OracleVM avant que je n’en reparle plus (le PoC est &lt;del&gt;terminé&lt;/del&gt; enterré chez nous), voici un petit retour sur un des problèmes que j’ai pu rencontrer.&lt;/p&gt;
&lt;p&gt;Comme beaucoup de technologies de visualisation d’écrans consoles pas totalement maîtrisées (ça vaut pour les vieux ILO en Java ou autres : que de bons souvenirs), le pointeur de la souris fait littéralement n’importe quoi. Généralement c’est décalé mais pas de manière linéaire sur tout l’écran pour bien qu’on se marre.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/02/SimpleMouse.gif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Crédits : GameDev.net&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le problème vient du client web VNC proposé par Oracle VM Manager et est un problème archi-connu mais pour autant pas totalement résolu.&lt;/p&gt;
&lt;h2 id="accéder-directement-au-flux-vnc"&gt;Accéder directement au flux VNC
&lt;/h2&gt;&lt;p&gt;Comme je l’explique juste avant, il arrive couramment que les technologies de virtualisations intégrées vers l’écran (virtuel) de la machine virtuelle soient mal calibrées. Mais c’est encore plus courant lorsque ce déport d’écran est réalisé avec un connexion VNC elle même affichée dans une console HTTP.&lt;/p&gt;
&lt;p&gt;Un moyen de contourner le problème de ce type de clients VNC web (et ça vaut pour d’autres outils qui utilisent les mêmes techniques) est de simplement se « brancher » sur le flux VNC sans passer par la console web. A priori sur les versions précédentes de OVMM, il était possible de se brancher directement sur le flux VNC, tout simplement parce que le serveur VNC était en écoute sur l’interface LAN.&lt;/p&gt;
&lt;p&gt;Au delà du fait que ce soit du bidouillage, cette technique n’est aujourd’hui plus permise depuis OVMM 3 et il faut donc &amp;hellip; bidouiller encore plus ! Voici ce que propose le support d’Oracle :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;You can redirect the remote port to local using the ssh(1) command. For example, the VM guest vnc port is 5900 on Oracle VM Server and listening on localhost:&lt;/p&gt;
&lt;p&gt;# xm list -l 2|grep 59&lt;br&gt;
(location 127.0.0.1:5900)&lt;/p&gt;
&lt;p&gt;Then you can run this to redirect the port to your desktop:&lt;/p&gt;
&lt;p&gt;$ ssh -L 12345:localhost:5900 root@OVS&lt;/p&gt;
&lt;p&gt;The « 5900 » port will be redirected to « 12345 » of your local desktop, so that you can run the following command to connect the guest console:&lt;/p&gt;
&lt;p&gt;$ vncviewer localhost:12345&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En gros, ce qu’il faut en comprendre, c’est que le serveur VNC n’est maintenant plus disponible depuis autre part que localhost et qu’on peut contourner la limitation en faisant un tunnel SSH. Rien de bien sorcier, mais est ce qu’il n’y a pas un peu plus simple ?&lt;/p&gt;
&lt;h2 id="la-vraie-solution"&gt;La vraie solution
&lt;/h2&gt;&lt;p&gt;En fait si.&lt;/p&gt;
&lt;p&gt;Au début, je n’ai même pas cherché à appliquer cette solution car elle ne s’applique normalement que pour les machines virtuelles Windows.&lt;/p&gt;
&lt;p&gt;Si vous avez un problème du type de celui que je décris sur une VM Windows, on vous conseille chez Oracle d’ajouter un paramètre à la machine virtuelle qui permet de mieux suivre les mouvements de la souris.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Add below your config to force the device model to use absolute (tablet) coordinates:&lt;/p&gt;
&lt;p&gt;usbdevice=’tablet’&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mais sur le papier, la solution est bien indiquée « For Windows virtual machines (guests) ». Mon problème moi, c’était sur les machines virtuelles CentOS, indiquées comme pas impactées par ce genre de problèmes.&lt;/p&gt;
&lt;h2 id="bon-jai-bien-compris-ou-tu-veux-en-venir-comment-on-modifie-ce-paramètre-"&gt;Bon j’ai bien compris ou tu veux en venir. Comment on modifie ce paramètre ?
&lt;/h2&gt;&lt;p&gt;En fait, c’est TRES mal indiqué dans la documentation. Il s’agit de la configuration de la machine virtuelle, &lt;strong&gt;VM éteinte&lt;/strong&gt;, mais où faire la modification ? Ahah ! Mystère !&lt;/p&gt;
&lt;p&gt;La documentation fait elle état d’un fichier de configuration de la machine virtuelle mais je n’ai pas su trouver ce fichier. Cependant, et &lt;strong&gt;ce n’était pas dit dans la documentation&lt;/strong&gt; on peut modifier ce paramètre directement depuis la GUI de Oracle VM Manager !&lt;/p&gt;
&lt;p&gt;Dans les paramètres de la machine virtuelle, dans l’onglet Configuration, on trouve le paramètre &lt;strong&gt;Mouse Device Type&lt;/strong&gt;. Sur les machines Windows, comme le problème est connu, il me semble d’ailleurs que le paramètre est passé à « tablet » par défaut.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm45.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Une fois validé, on peut vérifier que cette configuration a effectivement été modifiée en affichant ce fameux &lt;strong&gt;VM Config File&lt;/strong&gt; que je ne sais pas où trouver :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm46.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/10/oraclevm47.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;A partir de là, la souris ne devrait plus vous faire de blagues. Même si avec Oracle VM, on ne sait jamais trop ;-) #Troll&lt;/p&gt;
&lt;h2 id="source"&gt;Source
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://support.oracle.com/rs?type=doc&amp;amp;id=1548825.1" target="_blank" rel="noopener"
&gt;How To Access Guest Console In OVM 3 Using VNC Without Using OVM Manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://support.oracle.com/rs?type=doc&amp;amp;id=466379.1" target="_blank" rel="noopener"
&gt;Mouse Pointer Fails to Track Cursor on a VNC / Oracle VM Manager Window&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Humeur : Licence libre, auteurs du web et copyright</title><link>https://blog.zwindler.fr/2016/09/09/2223/</link><pubDate>Fri, 09 Sep 2016 12:30:36 +0000</pubDate><guid>https://blog.zwindler.fr/2016/09/09/2223/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/09/2015-10-12_logo_by-David-Revoy.webp" alt="Featured image of post Humeur : Licence libre, auteurs du web et copyright" /&gt;&lt;h2 id="mais-ce-nest-pas-un-post-technique-ça-"&gt;Mais ce n’est pas un post technique, ça !?!
&lt;/h2&gt;&lt;p&gt;Lorsque j’ai commencé ce blog il y a quelques années, j’avais dis que je n’écrirais pas de « billets d’humeur » et me concentrerais sur les sujets techniques peu traités par les autres blogueurs IT Francophone.&lt;/p&gt;
&lt;p&gt;Je me garderais de donner mon opinion pour ne pas déclencher de flame wars.&lt;/p&gt;
&lt;p&gt;Mais hier soir je suis tombé sur ce tweet du très bon Léo Grasset qui anime (entre autre) la chaine Youtube Dirty Biology :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/09/tweet01.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Le tweet pointe &lt;a class="link" href="https://scinfolex.com/2016/08/30/pepper-et-carrot-une-bande-dessinee-open-source-publiee-chez-glenat/" target="_blank" rel="noopener"
&gt;sur un article de blog S.I.Lex de Calimaq et qui relate l’histoire d’une BD sous licence Creative Commons&lt;/a&gt;. Je ne défendrai pas l’article en lui même, l’auteur s’en charge.&lt;/p&gt;
&lt;h2 id="de-quoi-sagit-il-"&gt;De quoi s’agit-il ?
&lt;/h2&gt;&lt;p&gt;D’un comic sur le net, &lt;a class="link" href="http://www.peppercarrot.com/fr/" target="_blank" rel="noopener"
&gt;Pepper &amp;amp; Carrot&lt;/a&gt;, disponible gratuitement via une licence libre.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tous les épisodes de Pepper &amp;amp; Carrot sont publiés en libre accès sur Internet via le site de David Revoy et ils ont été placés depuis l’origine sous la licence Creative Commons BY (Paternité). Celle-ci est très ouverte, puisqu’elle autorise toutes les formes de réutilisation (y compris à caractère commercial) à condition de citer le nom de l’auteur.&lt;/p&gt;
&lt;p&gt;&amp;ndash;Calimaq&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Là où d’autres auteurs du web sont furieux, c’est surtout parce que Glénat profite de cette licence très ouverte pour faire un tirage de ces planches et sur lequel l’auteur ne reçoit pas un centime (normal, les sources sont libres de droits).&lt;/p&gt;
&lt;p&gt;[Edit]Manque de clarté : il s’agit des auteurs « autres » qui ont réagit en commentaire de l’article de Calimaq, donc Béhé, BouletCorp, &amp;hellip; Ce n’est ni Calimaq, ni David Revoy, l’auteur de Pepper &amp;amp; Carrot pourtant le seul concerné[/Edit]&lt;/p&gt;
&lt;p&gt;Et pour faire genre ils sont sympas chez Glénat et se faire de la bonne publicité, ils donnent symboliquement à chaque publication nouvelle et selon leur bon vouloir (mécénat).&lt;/p&gt;
&lt;p&gt;Mais pas seulement. Je ne peux m&amp;rsquo;empêcher de réagir quand je vois les réactions (presque violentes) de plusieurs auteurs qui ont commentés pas seulement l’article en lui même mais aussi la démarche « libriste » de son auteur David Revoy, que moi je trouve admirable.&lt;/p&gt;
&lt;h2 id="et-là-cest-le-drame"&gt;Et là c’est le drame
&lt;/h2&gt;&lt;p&gt;Franchement en lisant le tweet de DBY, je n’ai même pas compris le problème au début. L’article est plutôt flatteur face à l’initiative (peut être un peu trop?) et je n’arrivais pas à comprendre pourquoi Léo GRASSET avait mis le &lt;em&gt;#entubage&lt;/em&gt;. En réalité, je n’arrivais pas à imaginer qu’on puisse voir cette initiative d’un mauvais œil !&lt;/p&gt;
&lt;p&gt;Et puis j’ai lu les commentaires.&lt;/p&gt;
&lt;p&gt;Un petit « best of »&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je ne remets aucunement en cause les motivations de l’auteur [ahaha, mon œil, attendez la suite] (c’est un combat qui s’apparente au mieux à une révolte contre l’économie du livre tel qu’il est, ou à une résistance au marché, au pire à un sacrifice à la passion ou &lt;strong&gt;une servitude volontaire&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Béhé&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;[à propos du droit d’auteur]Le recul il est là : la concurrence est telle que &lt;strong&gt;les auteurs réussissent à foutre en l’air&lt;/strong&gt; le seul outil qui leur permettait de faire respecter quelques droits.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Béhé&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;D’un côté, on a un auteur qui a créé un univers et &lt;strong&gt;qui bosse comme un fou pour pas grand chose&lt;/strong&gt;, malgré son succès&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Audrey A.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Un investissement sans limites de cet auteur passionné doublé d’un combat quasi politique pro « Open Source » (alors que sous couvert de modernité, &lt;strong&gt;on est juste revenu sur la place du marché en plein moyen âge&lt;/strong&gt; quand les saltimbanques essayaient de vivre des pièces jetées par les passants).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Audrey A.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour ma part il me fait penser à un trader qui liquiderait son portefeuille d’actions la veille d’un crash boursier : à titre individuel il tire son épingle du jeu et on pourrait l’en féliciter mais si on adopte un point de vue plus large &lt;strong&gt;on réalise qu’il contribue à accélérer un processus qui laisse tous les autres sur le carreau&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Emlyn&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Je résume &amp;amp; simplifie :&lt;/strong&gt; l’auteur est donc un militant de l’open source qui se fait entuber par une maison d’édition qui fait de l’argent sur son dos. Ce monsieur contribue à renvoyer au moyen âge les artistes qui finiront à la rue dans les années qui viennent.&lt;/p&gt;
&lt;p&gt;Je ne citerai même pas le condescendant BouletCorp (gratuitement en plus) qui a carrément écrit un e-mail à David Revoy pour lui expliquer à quel point il est sot (mais met quand même une copie du mail publiquement dans les commentaires histoire d’enfoncer un peu le clou).&lt;/p&gt;
&lt;h2 id="et-larticle-de-calimaq-dans-lhistoire-"&gt;Et l’article de Calimaq dans l’histoire ?
&lt;/h2&gt;&lt;p&gt;Tous les auteurs sont d’accord sur un point : Calimaq (l’auteur de l’article sur S.I.Lex) n’a rien compris !&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Je suis un peu consternée par cet article qui témoigne quand même d’une méconnaissance de l’économie du livre assez monumentale&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je rétorquerais donc à nos amis auteurs que si (moi) je n’ai assurément pas la connaissance qu’ils ont de l’économie du livre, je suis pour ma part &lt;strong&gt;consterné par leur méconnaissance du monde libre&lt;/strong&gt;. ;-)&lt;/p&gt;
&lt;p&gt;Je pense qu’ils n’ont pas compris la démarche « libre » dans leur ensemble (pas seulement cet auteur donc), que ce soit la Creative Commons ou les alternatives Open Source ou Libre. Et c’est d’autant plus dommage en cette période d’actualité sur les dérives &lt;a class="link" href="http://www.nextinpact.com/news/101121-mozilla-petition-pour-actualiser-droit-d-auteur-aux-besoins-21e-siecle.htm" target="_blank" rel="noopener"
&gt;du droit d’auteur&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Je vais donc tenter de détailler un peu ce point en particulier.&lt;/p&gt;
&lt;h2 id="mon-avis-sur-les-licences-cc-et-le-combat-quasi-politique-pro-open-source"&gt;Mon avis sur les licences CC et « le combat quasi politique pro Open Source »
&lt;/h2&gt;&lt;p&gt;A vrai dire, je ne sais pas pourquoi j’ai été surpris. Car cette attitude de défiance et d’incompréhension, je l’ai vécu et continue de la vivre tous les jours :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pourquoi tu contribues au logiciel Open Source d’un autre ? C’est du travail jeter en l’air pour ne rien gagner !&lt;/p&gt;
&lt;p&gt;Pourquoi développes-tu un logiciel Open Source ? Pourquoi fourni tu du support gratuitement à ta communauté ? Tu ferais mieux de le commercialiser : tu te rend compte de tout l’argent que tu perds/pourrais gagner?&lt;/p&gt;
&lt;p&gt;Je ne comprend pas ces gens qui mettent à disposition du code source sur Internet ! Des grosses entreprises vont le reprendre et faire de l’argent sur le dos de l’auteur, qui n’aura rien !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A l’instar de ces phrases entendues IRL, les auteurs qui commentent l’article sur S.I.Lex &lt;strong&gt;ne parlent QUE d’argent&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A en croire que c’est la raison d’être de la création : faire le plus d’argent possible&amp;hellip; Vraiment ?&lt;/p&gt;
&lt;p&gt;Et là où &lt;em&gt;&lt;strong&gt;Calimaq&lt;/strong&gt;&lt;/em&gt; à tort à mon avis, c’est lorsqu’il entre dans ce jeu et tente de justifier économiquement le choix de l’auteur de la BD.&lt;/p&gt;
&lt;p&gt;Alors qu’en réalité, dans ce genre de cas, il n’est pas question d’argent, de rentabilité, de rémunérer l’auteur à la juste hauteur de son travail.&lt;/p&gt;
&lt;p&gt;On n’est sur des considérations totalement autre ! L’idée, c’est de mettre à disposition du public un univers et de le faire vivre en dehors du droit d’auteur, bien souvent trop « privateur » (et voilà : on va me traiter de militant politique pro open source maintenant).&lt;/p&gt;
&lt;h2 id="monde-libre-vs-copyright"&gt;Monde libre vs Copyright
&lt;/h2&gt;&lt;p&gt;Et du coup ça me donne une belle transition : je repense à la dernière vidéo de Léo GRASSET (DBY).&lt;/p&gt;
&lt;p&gt;L’auteur de la vidéo nous parle de sciences citoyennes en faisant le parallèle avec Pokemon Go. Son frère (bon graphiste) incruste des animations de Pokemons&amp;hellip; qui sont très probablement soumis au droit d’auteur !&lt;/p&gt;
&lt;p&gt;Voilà un bel exemple de l’apport d’une licence libre sur le copyright : si Pokemon était libre de droits, DBY pourrait ajouter des Pokemons dans ces vidéos sans demander le droit préalable à « The Pokemon Company » (je simplifie volontairement les exceptions au droit d’auteur).&lt;/p&gt;
&lt;p&gt;Dans le cadre du droit d’auteur, on pourrait imaginer que « The Pokemon Company » pourrait imposer à Dirty Biology le versement d’un compensation financière pour avoir le droit d’incruster des Pokemon (potentiellement importante) et qui aurait contraint Léo GRASSET à abandonner son idée de vidéo pourtant très bonne.&lt;/p&gt;
&lt;p&gt;A l’inverse, moi, j’ai mis le logo de &lt;em&gt;Pepper &amp;amp; Carrot&lt;/em&gt; sur cet article. La seule chose que j’ai à faire, c’est cite que l’auteur est &lt;a class="link" href="http://www.peppercarrot.com" target="_blank" rel="noopener"
&gt;David Revoy&lt;/a&gt;. Pas de contraintes de droit d’auteur, pas de notions de rémunération.&lt;/p&gt;
&lt;p&gt;Pour ceux qui veulent creuser un peu plus loin ce point, la fondation Mozilla &lt;a class="link" href="https://foundation.mozilla.org/en/artifacts/change-copyright/" target="_blank" rel="noopener"
&gt;en parle beaucoup mieux que moi&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="autre-exemple-un-peu-facile-mais-que-je-met-quand-même-pour-le-fun"&gt;Autre exemple un peu facile mais que je met quand même pour le fun
&lt;/h2&gt;&lt;p&gt;J’ai envie de faire un parallèle avec un domaine que je connais mieux : l’informatique.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linus Torvalds&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Auteur il y a 25 ans d’un système d’exploitation libre (un « hobby » à la base, just saying) mis à disposition gratuitement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Redhat&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Premier éditeur de solution Open Source au monde, avec un &lt;a class="link" href="http://fortune.com/2016/03/22/red-hat-revenue-2-billion-open-source/" target="_blank" rel="noopener"
&gt;CA annuel de 2 milliards de $&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A première vue, si on se met des œillères, c’est des gens qui vendent des logiciels gratuits.&lt;/p&gt;
&lt;p&gt;En fait, en réalité, c’est aujourd’hui un des plus gros moteurs de l’open source au monde (sans que ce soit des philanthropes, hein, ils font du business, nous sommes d’accord).&lt;/p&gt;
&lt;p&gt;Et avec les bénéfices qu’ils font en fournissant du support sur ces « logiciels gratuits », ils peuvent :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Contribuer à corriger/sécuriser le code de nombreux projets Open Source pour le rendre plus robuste et plus sûr&lt;/li&gt;
&lt;li&gt;Investir en R&amp;amp;D pour améliorer les solutions Open Source existantes&lt;/li&gt;
&lt;li&gt;Développeur de nouvelles solutions Open Source&lt;/li&gt;
&lt;li&gt;Employer des milliers de personnes dans le monde (accessoirement)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Le rapport entre les deux ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Redhat n’aurait jamais existé si Linus Torvalds n’avait pas mis à disposition gratuitement son « hobby », Linux.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Et le rapport avec Pepper &amp;amp; Carrot ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Et si je fais le parallèle avec l’histoire de Pepper &amp;amp; Carrot et que j’applique le raisonnement de BouletCorp et consorts on obtient :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Linus Torvalds a bossé comme un fou pour pas grand chose&lt;/p&gt;
&lt;p&gt;Redhat fait de l’argent sur le dos de Linus Torvalds&lt;/p&gt;
&lt;p&gt;Linus Torvalds contribue à foutre sur le carreau les développeurs informatiques&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aucunes de ces phrases n’ont de sens.&lt;/p&gt;
&lt;h2 id="le-monde-libre"&gt;Le monde libre
&lt;/h2&gt;&lt;p&gt;Au delà de Linux et Redhat, l’open source a changé ma façon de travailler. Celle de millions de gens dans le monde aussi (particuliers, écoles, associations, entreprises, développeurs, chercheurs, &amp;hellip;), mais je suis surtout mieux placé pour parler de moi.&lt;/p&gt;
&lt;p&gt;Et soutenir les initiatives libres ne m&amp;rsquo;empêche pas d’utiliser des logiciels propriétaires par facilité ou lorsque les alternatives Open Source ne sont pas à la hauteur. L’un n&amp;rsquo;empêche pas l’autre.&lt;/p&gt;
&lt;p&gt;Toute démarche libre/open source à ses implications (&lt;strong&gt;et le droit d’auteur aussi !&lt;/strong&gt;). Elles sont différentes selon la licence choisie et les auteurs qui font le choix d’une licence libre doivent bien sûr le faire en connaissance de cause.&lt;/p&gt;
&lt;p&gt;En tant qu’auteur (selon la législation du droit d’auteur Français, tout ce que je créé est par défaut soumis au droit d’auteur), en fonction du contexte, je sais choisir entre :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mon droit d’auteur classique quand je fais un montage vidéo, quand je créé une image humoristique, quand j’écris un article de blog&lt;/li&gt;
&lt;li&gt;une licence un peu solide comme la GPLv3 lorsque je souhaite contribuer du code en sachant qu’il sera peut être complexe pour un outil commercial de réutiliser mon code dans certains cas particuliers&lt;/li&gt;
&lt;li&gt;des licences plus souples lorsque j’accepte (et même aimerait) que mon travail soit diffusé. Même dans un cadre commercial où des gens se feront peut être « de l’argent sur mon dos »&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="pourquoi-tant-de-haine-"&gt;Pourquoi tant de haine ?
&lt;/h2&gt;&lt;p&gt;Cette posture agressive et cette montée aux créneaux immédiate de ces quelques auteurs du web sur cet article traduit pour moi un profond malaise entre les auteurs et les éditeurs, qui ont du mal à s’adapter (et adapter le droit d’auteur) au 21ème siècle.&lt;/p&gt;
&lt;p&gt;Il n’est pas difficile de comprendre pourquoi des gens ont peur de modèles alternatifs lorsque le modèle actuel n’est déjà pas terrible, de peur que ce soit pire après.&lt;/p&gt;
&lt;p&gt;Et à entendre les auteurs, la compétition est rude et il est difficile de se financer en tant qu’auteur. Dans le monde actuel, vouloir faire de l’argent en tant qu’auteur de BD sur une Creative Commons n’est probablement pas la meilleure idée.&lt;/p&gt;
&lt;p&gt;Pour autant, je pense que les auteurs qui ont répondus dans le billet de S.I.Lex ont tort de voir une concurrence là où il n’y en a pas.&lt;/p&gt;
&lt;p&gt;De ce que je comprendre de « Pepper &amp;amp; Carrot », mais plus généralement des initiatives CC, ce n’est pas la recherche un modèle alternatif &lt;em&gt;pour se financer&lt;/em&gt; dans un secteur hautement concurrentiel.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C’est la mise à disposition, pour tout le monde, d’un travail ouvert, partagé.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="bonus"&gt;Bonus
&lt;/h2&gt;&lt;p&gt;Je n’avais pas compris initialement, mais l’auteur de la BD lui-même a contribué dans les commentaires (&lt;b class="fn"&gt;deevad&lt;/b&gt;) et donne quelques infos supplémentaires dans &lt;a class="link" href="http://www.glenatbd.com/actu/-interview-david-revoy-pepper-carrot-bd-open-source.htm" target="_blank" rel="noopener"
&gt;ce lien&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="bonus-2"&gt;Bonus 2
&lt;/h2&gt;&lt;p&gt;Un exemple tout frais de cette semaine des préjugés et de l’incompréhension de ces gens qui sont restés dans le 20ème siècle.&lt;/p&gt;
&lt;p&gt;Développeur d’un produit Open Source de partage de fichier révolutionnaire = Pirate.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/09/tweet02.avif"
loading="lazy"
&gt;&lt;/p&gt;</description></item><item><title>Bug : unable to execute QEMU command &amp;lsquo;cont’ sous KVM et RHEL/CentOS</title><link>https://blog.zwindler.fr/2015/10/10/bug-unable-to-execute-qemu-command-cont-sous-kvm-et-rhelcentos/</link><pubDate>Sat, 10 Oct 2015 10:30:00 +0000</pubDate><guid>https://blog.zwindler.fr/2015/10/10/bug-unable-to-execute-qemu-command-cont-sous-kvm-et-rhelcentos/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/10/kvm.webp" alt="Featured image of post Bug : unable to execute QEMU command &amp;lsquo;cont’ sous KVM et RHEL/CentOS" /&gt;&lt;p&gt;Cet article est encore un vieil article que je n’ai jamais pris le temps de sortir. Voilà maintenant c’est fait ;-)&lt;/p&gt;
&lt;h2 id="bug-unable-to-execute-qemu-command-cont"&gt;Bug unable to execute QEMU command ‘cont’
&lt;/h2&gt;&lt;p&gt;Aussi rare que cela soit, après ma migration de KVM sur Ubuntu a KVM sur CentOS, je suis tombé sur un bug du Kernel Linux qui affectait directement ma capacité à faire fonctionner des machines virtuelles sous Windows 7 ou Windows 2008 ! Mais toutes les autres fonctionnaient normalement.&lt;/p&gt;
&lt;h3 id="symptôme"&gt;Symptôme
&lt;/h3&gt;&lt;p&gt;Lorsqu’on démarre la VM ou qu’elle démarre seule au boot, elle se met en pause. Si on essaye de la sortir du mode pause on reçoit l’erreur suivante.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Error unpausing domain: internal error unable to execute QEMU command ‘cont’: Resetting the Virtual Machine is required&amp;lt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;L’erreur en elle même n’est pas très explicite. Dans le log de la machine virtuelle en question, on a un message plus long mais guère plus évocateur :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/var/log/libvirt/qemu/[maVM]
kvm: unhandled exit 80000021
kvm_run returned -22
If you’re running a guest on an Intel machine without unrestricted mode
support, the failure can be most likely due to the guest entering an invalid
state for Intel VT. For example, the guest maybe running in big real mode
which is not supported on less recent Intel processors.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bien évidemment, toutes les autres VMs sous Linux fonctionnent parfaitement donc on ne peut pas accuser Qemu de ne pas fonctionner correctement.&lt;/p&gt;
&lt;h3 id="solution"&gt;Solution
&lt;/h3&gt;&lt;p&gt;En théorie, j’ai lu à plusieurs endroits que le bug était censé être corrigés sur des patchs des kernels de CentOS 5 ou 6 (toujours présent en 2.6.32-431.3.1.el6.x86_64 par exemple) et même pour Ubuntu.&lt;br&gt;
Dans la pratique, même en mettant l’OS CentOS à jour, impossible de faire fonctionner cette VM.&lt;br&gt;
La seule vrai solution que j’avais trouvé à l’époque était de forcer le passage à un kernel plus récent, à savoir au moins 3.+.&lt;/p&gt;
&lt;p&gt;Pour ceux qui se sentiraient un peu perdu, le plus simple est de changer de version de CentOS ou d’Ubuntu. Sur les dernière version le bug n’est plus présent.&lt;/p&gt;
&lt;p&gt;Cependant, si vous avez un système en place et qu’une migration n’est pas à l’ordre du jour, voici la marche à suivre pour installer un kernel plus récent. Voici la procédure que j’ai utilisée pour installer un 3.13 sur lequel la VM fonctionne à nouveau (3.11 fonctionne aussi, je ne sais pas avant).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;yum install gcc ncurses ncurses-devel
yum update
wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.13.1.tar.gz
tar xzf linux-3.13.1.tar.gz -C /usr/src/
cd /usr/src/linux-3.13.1/
make menuconfig
make
make modules_install install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;N’oubliez pas de vérifier que votre kernel est bien choisi en premier dans le boot loader, ce qui n’est souvent pas le cas par défaut (modifier la valeur &lt;strong&gt;default&lt;/strong&gt; dans le &lt;strong&gt;grub.conf&lt;/strong&gt; pour correspondre à la bonne entrée) sinon le problème ne sera pas résolu au reboot.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/grub.conf
default=X
[...]
root (hd0,0)
kernel /vmlinuz-3.13.1 ro root=/dev/mapper/vg_root-lv_root rd_LVM_LV=vg_root/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_MD_UUID=8f43b4fe:e72ed9aa:2da568b5:5f43b223 SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=fr-latin9 rd_LVM_LV=vg_endeavour/lv_swap rd_NO_DM rhgb quiet
initrd /initramfs-3.13.1.img
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Et vous pouvez vérifier que vous êtes sur le bon kernel avec un uname.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;reboot
uname -r
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="erreurbug-error-starting-virt-manager"&gt;Erreur/bug Error starting virt-manager
&lt;/h2&gt;&lt;p&gt;En bonus track, je voudrais aussi ajouter un petit bug de plus pour la route, sur l’utilisation de l’interface graphique virt-manager cette fois ci.&lt;/p&gt;
&lt;p&gt;Pour une raison obscure, lorsque je voulais lancer ma GUI virt-manager, il m’est arrivé une ou deux fois de suivre la procédure décrite sur &lt;a class="link" href="http://nutanix.blogspot.fr/2013/06/kvm-virt-manager-startup-failure.html" target="_blank" rel="noopener"
&gt;le blog de nutanix&lt;/a&gt; lorsque je recevais l’erreur suivante :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Error starting virt-manager&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;dbus-uuidgen --get
cat /var/lib/dbus/machine-id
dbus-uuidgen &amp;gt; /var/lib/dbus/machine-id
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Accélérer le rebuild/resync d’un volume RAID mdadm</title><link>https://blog.zwindler.fr/2015/03/04/accelerer-le-rebuildresync-dun-volume-raid-mdadm/</link><pubDate>Wed, 04 Mar 2015 14:00:45 +0000</pubDate><guid>https://blog.zwindler.fr/2015/03/04/accelerer-le-rebuildresync-dun-volume-raid-mdadm/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/03/mdadm.webp" alt="Featured image of post Accélérer le rebuild/resync d’un volume RAID mdadm" /&gt;&lt;h2 id="débrider-la-reconstruction-resync-du-raid-mdadm"&gt;Débrider la reconstruction (resync) du RAID MDADM
&lt;/h2&gt;&lt;p&gt;Ça fait plusieurs fois que je tombe sur des articles de blogs qui détaillent que la reconstruction (resync) de leur miroir MDADM (RAID1) est trèèèès lente à cause d’un paramètre système dans /proc :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/proc/sys/dev/raid/speed_limit_min
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Par défaut sous Linux (ou au moins la plupart des distribs que je côtoie), ce paramètre « min » est fixé à 1000, soit grossièrement 1Mo par seconde, ce qui est effectivement très lent, à l’heure des disques grand public de 6 To (ou 8? ou 10, je ne suis pas sûr d’être à jour).&lt;/p&gt;
&lt;p&gt;Personnellement, je n’ai jamais été bloqué par ce paramètre comme ces personnes, au moins sur les distributions récentes (tout est relatif, en 2015 je parle de 2012 et +). Il s’agissait peut être d’un bug fixé depuis, qui sait?&lt;/p&gt;
&lt;p&gt;Par contre, là où j’ai été effectivement bloqué, c’est plutôt par la variable /proc/sys/dev/raid/speed_limit_max.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /proc/mdstat
md1 : active raid1 sdc[0] sdd[1]
336592832 blocks [2/2] [UU]
[===========&amp;gt;.........] resync = 59.4% (199958272/336592832) finish=11.3min speed=200006K/sec
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Quoi, mes disques resync à 200006K/sec? Comment dire ? C’est louche !&lt;/p&gt;
&lt;p&gt;En effet, cette valeur est fixée par défaut à 200000, soit 200 Mo/s. Ça peut paraitre assez haut pour du RAID à la maison, mais sur du matériel d’entreprise, je n’ai pas eu de mal à atteindre cette limite.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /proc/sys/dev/raid/speed_limit_min
1000
cat /proc/sys/dev/raid/speed_limit_max
200000
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;echo 500000 &amp;gt; /proc/sys/dev/raid/speed_limit_max
cat /proc/mdstat
md1 : active raid1 sdc[0] sdd[1]
336592832 blocks [2/2] [UU]
[===============&amp;gt;.....] resync = 76.4% (257424960/336592832) finish=2.6min speed=505767K/sec
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;« And voila »&lt;/p&gt;</description></item><item><title>[Tutoriel] Cluster Oracle 11gR2 avec Redhat Cluster Suite sur CentOS 5.4 (offline)</title><link>https://blog.zwindler.fr/2012/04/15/howto-cluster-oracle-11gr2-avec-redhat-cluster-suite-sur-centos-5-4-et-sans-acces-a-internet/</link><pubDate>Sun, 15 Apr 2012 07:54:09 +0000</pubDate><guid>https://blog.zwindler.fr/2012/04/15/howto-cluster-oracle-11gr2-avec-redhat-cluster-suite-sur-centos-5-4-et-sans-acces-a-internet/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/03/lbvm1.webp" alt="Featured image of post [Tutoriel] Cluster Oracle 11gR2 avec Redhat Cluster Suite sur CentOS 5.4 (offline)" /&gt;&lt;p&gt;J’avais pour objectif de proposer une architecture sous Redhat permettant d’héberger en clustering une base de données Oracle en mode actif/passif (sans RAC donc) pour un nouveau client. L’architecture actuelle/connue était à base de serveurs HP-UX fonctionnant avec un cluster HP MCSG qui fonctionnait très bien, mais pour des raisons de support sur l’ERP le passage à Linux était obligatoire.&lt;/p&gt;
&lt;p&gt;MCSG sur Redhat n’étant pas encore (est ce que ça va changer?) supporté officiellement par Redhat et HP, et heartbeat étant une solution trop légère pour ce genre d’application critique au business, il a bien fallut que je fasse une maquette basée sur Redhat Cluster suite. Le faible nombre de blogs traitant du sujet et le nombre d’échecs parmi les rares articles que j’ai trouvés auraient du me mettre la puce à l’oreille quant à la difficulté d’installation/configuration de ce produit. Et pour cause : malgré une documentation officielle relativement bien faite, certains passages sont carrément obscur pour ceux qui rentrent dans le sujet sans expérience préalable des clusters.&lt;/p&gt;
&lt;p&gt;Ayant galérer pour faire marcher la solution dans les grandes lignes, je pense qu’il est de mon devoir (oui oui, rien que ça :-p) de faire partager la documentation que j’ai tiré de mes diverses expérimentations :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;La documentation en elle même &lt;a class="link" href="https://blog.zwindler.fr/2012/04/zwindler_redhat_cluster_suite.pdf" &gt;zwindler_redhat_cluster_suite&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le fichier doc qui contient les &lt;a class="link" href="https://blog.zwindler.fr/2012/04/scripts.docx" &gt;scripts&lt;/a&gt;. Oui, c’est affreux mais wordpress n’autorise en upload que quelques extensions et je n’ai pas l’envie de chercher une solution de contournement&amp;hellip;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Autre chose : au début, je pensais qu’être coupé d’Internet sur les serveurs d’un admin n’était pas monnaie courante. Avec le peu de recul que j’ai aujourd’hui, je me rend compte que je subis très régulièrement cette contrainte! Ayant été obligé de me passer du net sur ma maquette, j’ai aussi indiqué les solutions de contournement que j’ai trouvé dans la documentation, au cas où certains seraient dans la même configuration.&lt;/p&gt;
&lt;p&gt;Cependant, dans tous les cas, je ne conseille pas l’utilisation de RHCS sur une prod &lt;strong&gt;si vous débutez et/ou si vous n’avez pas d’accès à Internet&lt;/strong&gt; pour effectuer des mises à jours du système : &lt;strong&gt;les bugs de cette version ainsi que les erreurs de débutant que j’ai pu faire sur ma maquette auraient assez vite corrompu la base de données d’une production&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;N’hésitez pas à me faire remonter toute imperfection dans la documentation, que je puisse corriger pour les suivants&lt;/p&gt;</description></item></channel></rss>