<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Applications &#8211; erwan.guillemard</title>
	<atom:link href="https://erwanguillemard.com/category/applications/feed/" rel="self" type="application/rss+xml" />
	<link>https://erwanguillemard.com</link>
	<description>Blog personnel</description>
	<lastBuildDate>Sat, 25 Apr 2026 09:22:51 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://erwanguillemard.com/wp-content/uploads/2024/02/cropped-Logo-sans-baseline-32x32.png</url>
	<title>Applications &#8211; erwan.guillemard</title>
	<link>https://erwanguillemard.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Apps &#8211; OpenWebUI</title>
		<link>https://erwanguillemard.com/apps-openwebui/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sat, 25 Apr 2026 09:19:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[OLLAMA]]></category>
		<category><![CDATA[OPENWEBUI]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=3520</guid>

					<description><![CDATA[Ce billet vient en complément et suite de l&#8217;article Apps &#8211; Ollama. Ce dernier (promis juré, craché sera assez rapide) sera un billet court. Pourquoi ? Parce que tout ou une grande partie à déjà été dit dans l&#8217;article traitant d&#8217;Ollama. J&#8217;avais jugé trop indigeste de fondre les deux sujets. Donc ici, la partie théorie...]]></description>
										<content:encoded><![CDATA[
<p>Ce billet vient en complément et suite de l&rsquo;article Apps &#8211; Ollama. Ce dernier (promis juré, craché sera assez rapide) sera un billet court.</p>



<p class="has-text-align-center"><strong>Pourquoi ?</strong></p>



<p>Parce que tout ou une grande partie à déjà été dit dans l&rsquo;article traitant d&rsquo;Ollama. J&rsquo;avais jugé trop indigeste de fondre les deux sujets. Donc ici, la partie théorie sera plutôt courte et en conséquence la partie Pratique un peu plus étoffée concernant l&rsquo;implémentation et la configuration de l&rsquo;application.</p>



<p>Bref, l&rsquo;objectif de cet article sera d&rsquo;implémenter une interface graphique publiée pour faciliter l&rsquo;usage de notre solution Ollama plurimodales (LLM<sup data-fn="9b4b7116-7da7-4c05-943e-ac072573b13f" class="fn"><a href="#9b4b7116-7da7-4c05-943e-ac072573b13f" id="9b4b7116-7da7-4c05-943e-ac072573b13f-link">1</a></sup>) aux utilisateurs. J&rsquo;ai pris le parti d&rsquo;utiliser la solution OpenWebUI.</p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Vous l&rsquo;avez bien compris, dans l&rsquo;introduction, je n&rsquo;ai pas l&rsquo;attention de m&rsquo;éterniser 10 000 ans sur le sujet.</p>



<p>Je pars du principe que nous avons déjà déployé et configuré la solution Ollama et quelques modèles de traitement IA<sup data-fn="f36cb89d-8ac6-4ed0-8df5-7d578d4680c4" class="fn"><a href="#f36cb89d-8ac6-4ed0-8df5-7d578d4680c4" id="f36cb89d-8ac6-4ed0-8df5-7d578d4680c4-link">2</a></sup> sur un serveur.</p>



<p>J&rsquo;ai une nouvelle fois pris le parti de déployer l&rsquo;application sous une distribution RHEL<sup data-fn="9e902093-392b-4860-a9f8-d2c28cf28686" class="fn"><a href="#9e902093-392b-4860-a9f8-d2c28cf28686" id="9e902093-392b-4860-a9f8-d2c28cf28686-link">3</a></sup> afin d&rsquo;avoir un niveau de sécurité optimale. Toutefois et vous pourrez le constatez par la suite dans la partie théorie, je ne respecterai pas l&rsquo;architecture par faute de ressource disponible néanmoins, je recommande de suivre l&rsquo;architecture qui sera à venir.</p>



<p>Dans le cadre d&rsquo;une solution d&rsquo;IA hébergée localement se pose la question de mettre en place un tel portail dans une organisation. A cela je répondrai que cela permettra de garder un certain contrôle des requêtes, prompts, effectués par l&rsquo;ensemble des utilisateurs de l&rsquo;organisation et d&rsquo;en faciliter les usages. Dans des domaines sensibles tels que l&rsquo;industrie et production cela peut aux yeux de la direction et de la DSI<sup data-fn="4a15f514-bc25-45dc-8c12-3f5fd10c286d" class="fn"><a href="#4a15f514-bc25-45dc-8c12-3f5fd10c286d" id="4a15f514-bc25-45dc-8c12-3f5fd10c286d-link">4</a></sup> se révéler rassurant.</p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>
<ul class="wp-block-list">
<li>Rocky Linux 9.x et version ultérieures (pour ma part ça sera du 10.x)</li>



<li>macOS</li>



<li>Windows</li>
</ul>
</li>



<li><strong>Apps :&nbsp;</strong>
<ul class="wp-block-list">
<li>Ollama</li>
</ul>
</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>Minimum 4 CPU<sup data-fn="63b8e4f1-84bc-47ad-8afa-7dae59217921" class="fn"><a href="#63b8e4f1-84bc-47ad-8afa-7dae59217921" id="63b8e4f1-84bc-47ad-8afa-7dae59217921-link">5</a></sup></li>



<li>Minimum 4 Gio de RAM<sup data-fn="f958a01e-8b83-4fc9-a592-006e9651956c" class="fn"><a href="#f958a01e-8b83-4fc9-a592-006e9651956c" id="f958a01e-8b83-4fc9-a592-006e9651956c-link">6</a></sup></li>



<li>Stockage rapide (SSD<sup data-fn="8f6e0338-719e-4456-808e-82e0a17b70ea" class="fn"><a href="#8f6e0338-719e-4456-808e-82e0a17b70ea" id="8f6e0338-719e-4456-808e-82e0a17b70ea-link">7</a></sup>&nbsp;ou Nvme)</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Théorie</h2>



<h3 class="wp-block-heading">KesaKo OpenWebUI</h3>



<p>Je pense comme toujours qu&rsquo;il est important de se poser la traditionnelle question. Que fait l&rsquo;application que nous allons utiliser, comment elle fonctionne et qui est derrière.</p>



<h4 class="wp-block-heading">Qu&rsquo;est-ce que c&rsquo;est ?</h4>



<p>OpenWebUI, c&rsquo;est une interface web issue d&rsquo;une projet open-source (<strong>#biscotto</strong>) qui permet d&rsquo;utiliser des modèles d&rsquo;IA depuis un navigateur WEB hébergé localement. </p>



<p>Le projet est né du sud-coréen Tim Jaeryang BAEK qui prône l&rsquo;autonomie numérique face aux grands du monde de la tech. Le projet est développé en Python (version supérieur ou égale à 3.11) pour la partie BackEnd et HTML/CSS, Svelte, JS et TS pour la partie FrontEnd.</p>



<p>Personnellement, je trouve que l&rsquo;interface ressemble fortement à celle de ChatGPT. Mais son mon avis personnel hein 🙂</p>



<h4 class="wp-block-heading">A quoi ça sert ?</h4>



<p>La solution va permettre comme les outils classiques en ligne (pour ne pas dire les géants du Cloud) d&rsquo;effectuer des opérations (énumération en approche) :</p>



<ul class="wp-block-list">
<li><strong>Discuter</strong> avec des modèles d&rsquo;IA (LLM)</li>



<li><strong>Exploiter</strong> des modèles localement (LLM)</li>



<li><strong>S&rsquo;Interfacer</strong> avec des sources locales et clouds (et oui nous pouvons faire de l&rsquo;hybridation).</li>



<li><strong>Téléverser </strong>(waouh, tu n&rsquo;as pas écrit uploader !) des fichiers pour les analyser par l&rsquo;IA</li>
</ul>



<p>Nous retrouvons donc dans l&rsquo;ensemble les mêmes fonctionnalités que les outils en ligne quant à l&rsquo;usage de l&rsquo;IA 🙂 C&rsquo;est cool non ? &lt;3</p>



<h3 class="wp-block-heading">Avantages / Inconvénients</h3>



<p>L&rsquo;utilisation d&rsquo;OpenWebUI n&rsquo;est pas sans conséquences vis à vis des services qu&rsquo;il peut apporter.</p>



<p>Il suffit de regarder le constat déjà porté sur l&rsquo;utilisation d&rsquo;Ollama.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><mark style="background-color:rgba(0, 0, 0, 0);color:#3ec632" class="has-inline-color"><strong>Avantages</strong></mark></td><td class="has-text-align-center" data-align="center"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">Inconvénients</mark></td></tr><tr><td class="has-text-align-center" data-align="center">Open Source<br>Respect de la vie privée<br>Cross Compatibilité des modèles<br>Simplicité de l&rsquo;interface</td><td class="has-text-align-center" data-align="center">Installation technique<br>Modèles locaux couteux en ressources (RAM, CPU, GPU<sup data-fn="57be53ba-9128-49e7-ae7a-c337f01cf69e" class="fn"><a href="#57be53ba-9128-49e7-ae7a-c337f01cf69e" id="57be53ba-9128-49e7-ae7a-c337f01cf69e-link">8</a></sup>, Stockage)</td></tr></tbody></table></figure>



<p></p>



<p>Bon, cela je vous dirai l&rsquo;utilisateur il s&rsquo;en tamponne le coquillard. Lui que ce soit technique à mettre en place, il s&rsquo;en lustre l&rsquo;asperge. Par contre, si la réponse est lente, c&rsquo;est le <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-13-color"><strong><em><span style="text-decoration: underline;">Game Over</span></em></strong></mark>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="575" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died-1024x575.jpg" alt="" class="wp-image-3528" style="aspect-ratio:1.7809626179386122;width:616px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died-1024x575.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died-300x169.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died-768x431.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died-1536x863.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_003_ER_Died.jpg 1561w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Logique, pourquoi utiliser la solution locale qui met une plombe à répondre alors qu&rsquo;un bon vieux Gémini, Copilot, ChatGPT te donne la réponse en 1/4 de seconde après une petite pression sur la touche Enter du clavier ?</p>



<p>Ce qui nous ramène selon moi à l&rsquo;un des plus grands maux de la société actuelle. Nous ne savons ce que signifie attendre et être patient. Si dans les années 60 la compilation d&rsquo;un programme pouvait prendre la nuit, aujourd&rsquo;hui cela prendra quelques minutes. L&rsquo;essor des nouvelles technologies, nous apportent de par les performances et leurs mobilités l&rsquo;informations et l&rsquo;assurance de pouvoir joindre un individu ou une ressource si quand bien même nous avons du réseau. Toutefois, force est de constaté que si comme cela s&rsquo;est passé plusieurs fois au cours de l&rsquo;année 2025 et 2026 l&rsquo;un des maillons qui assure le fonctionnement tombe et nous coupe de nos ressources, nous nous retrouvons comme une poule qui a trouvé un couteau. Je pense et cela n&rsquo;est qu&rsquo;un point de vue personnel que nous devrions nous remettre en question face à cette forme de dépendance et servitude, <a href="https://www.youtube.com/watch?v=IsvfofcIE1Q&amp;list=RDIsvfofcIE1Q&amp;start_radio=1">Master &amp; Servant</a>, je dis STOP ! <strong><em>#sendkissesagain</em></strong></p>



<h3 class="wp-block-heading">Architecture &amp; Best Pratices</h3>



<p>Lors de la présentation de la solution, j&rsquo;ai introduit la possibilité d&rsquo;utiliser OpenWebUI en mode hybride. Ce qui implique donc une communication des flux sortants via les protocoles HTTP<sup data-fn="f4993b7e-0f63-4b56-886c-b4e26648314b" class="fn"><a href="#f4993b7e-0f63-4b56-886c-b4e26648314b" id="f4993b7e-0f63-4b56-886c-b4e26648314b-link">9</a></sup> et HTTPS<sup data-fn="1d2044d0-2a6b-4f6c-9865-c8cded2e72e1" class="fn"><a href="#1d2044d0-2a6b-4f6c-9865-c8cded2e72e1" id="1d2044d0-2a6b-4f6c-9865-c8cded2e72e1-link">10</a></sup> vers les IAs compatibles dans le cloud et autres repos propres au SE<sup data-fn="688876c0-5948-48bf-baaf-3d493e2e5c01" class="fn"><a href="#688876c0-5948-48bf-baaf-3d493e2e5c01" id="688876c0-5948-48bf-baaf-3d493e2e5c01-link">11</a></sup> et maintien de l&rsquo;application. Afin de ne pas surcharger inutilement le schéma, j&rsquo;ai totalement exclu cette partie. Néanmoins il conviendra de réaliser un filtrage strict en sortie des flux pour des raisons de sécurité. Donc de jouer avec les politiques de votre UTMs<sup data-fn="13f6c481-ca7e-4e73-875d-cf307bad64ec" class="fn"><a href="#13f6c481-ca7e-4e73-875d-cf307bad64ec" id="13f6c481-ca7e-4e73-875d-cf307bad64ec-link">12</a></sup>.</p>



<p>Bien, rentrons concrètement dans l&rsquo;architecture. La solution applicative OpenWebUI vient se placer entre le poste client et l&rsquo;application Ollama.</p>



<p>Il convient dans le respect des bonnes pratiques de dissocier OpenWebUI de Ollama puisque nous allons publier, ouvrir l&rsquo;application en interne et pourquoi pas depuis nos WANs<sup data-fn="ac43ad3e-9b07-4981-8114-d187d3cf6dbf" class="fn"><a href="#ac43ad3e-9b07-4981-8114-d187d3cf6dbf" id="ac43ad3e-9b07-4981-8114-d187d3cf6dbf-link">13</a></sup>. Cela implique de mettre OpenWebUI dans un réseau isolé (DMZ<sup data-fn="103fd0e8-cd60-41ff-b80a-9c51d9c20b76" class="fn"><a href="#103fd0e8-cd60-41ff-b80a-9c51d9c20b76" id="103fd0e8-cd60-41ff-b80a-9c51d9c20b76-link">14</a></sup>) et Ollama dans le réseau <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-10-color">T1</mark>, <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-10-color">T1&prime;</mark> par exemple.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img decoding="async" width="861" height="620" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_001_arch.jpg" alt="" class="wp-image-3526" style="aspect-ratio:1.3887129819333208;width:600px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_001_arch.jpg 861w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_001_arch-300x216.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_001_arch-768x553.jpg 768w" sizes="(max-width: 861px) 100vw, 861px" /></figure>
</div>


<p>Par défaut, dans un fonctionnement UNIX dans un déploiement hors Docker, le port de communication de l&rsquo;interface Web se fait via le protocole <strong>http </strong>sur le port <strong>8080</strong>. Il est néanmoins possible de forcer les connexions en <strong>https </strong>sur le port <strong>443 </strong>via <strong>nginx</strong> (je reviendrai plus en détail sur ce point).</p>



<p>Si nous regardons d&rsquo;un peu plus près l&rsquo;architecture de la VM<sup data-fn="2f21ddb8-be62-4029-92fc-283d894d896c" class="fn"><a href="#2f21ddb8-be62-4029-92fc-283d894d896c" id="2f21ddb8-be62-4029-92fc-283d894d896c-link">15</a></sup>, nous pouvons constater que j&rsquo;ai dédié un disque. Mais pourquoi ?</p>



<p>OpenWebUI est très très lourd. Son déploiement peut se révéler un poil pénible pour ne pas dire chiant à mourir (je reviendrai là-dessus dans la partie pratique).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img decoding="async" width="1024" height="576" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-1024x576.jpg" alt="" class="wp-image-3527" style="width:612px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-1024x576.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-300x169.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-768x432.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-1536x864.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_002_migraine-2048x1152.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">https://unsplash.com/fr/photos/un-homme-portant-ses-mains-a-ses-oreilles-gK_ifZrZ0oc</figcaption></figure>
</div>


<p>Bref, pour pallier à ce problème, j&rsquo;ai dédié un disque d&rsquo;une capacité de 100 Gio.</p>



<p>Bien, on se lance dans la pratique ? Après on est bien aussi ici 🙂</p>



<h2 class="wp-block-heading">Pratique</h2>



<p>Oui j&rsquo;ai dit plus haut que je ne respecterai pas cette topologie. Par manque de ressource, je vais tailler à la hussarde et tout mutualiser sur une seule machine. Il faut bien faire avec les moyens que l&rsquo;on a, c&rsquo;est comme ça.</p>



<h3 class="wp-block-heading">Installation</h3>



<p>OpenWebUI propose plusieurs modes de déploiement :</p>



<ul class="wp-block-list">
<li><strong>Docker</strong> : <em>Officiellement supporté et recommandé pour la plupart des utilisateurs </em>(avec plusieurs sous-catégorie alternatives de déploiement)</li>



<li><strong>Python</strong> : <em>Orienté pour les environnements faibles en ressources et pour une installation manuelle</em>
<ul class="wp-block-list">
<li>uv</li>



<li>conda</li>



<li>venv</li>
</ul>
</li>



<li><strong>Kubernetes</strong> : <em>Idéal pour les déploiements en entreprise qui nécessite une adaptabilité et ordonnancement</em>
<ul class="wp-block-list">
<li>Helm</li>
</ul>
</li>



<li><strong>Third Party</strong></li>
</ul>



<p>Pour ma part, la seule chose qui m&rsquo;intéresse et pour laquelle je suis à peu près à l&rsquo;aise c&rsquo;est Python. Je vois déjà les puristes de la containerisation me rétorquer sauvagement « <strong>Pourquoi pas Docker ?</strong>« . Encore une fois et je suis désolé, je ne comprends pas l&rsquo;intérêt de Docker dans mon métier. Tant que je n&rsquo;aurai pas pleinement assimilé ou eu le besoin de l&rsquo;utilisé, je bloque. Attention, je ne dis pas que c&rsquo;est de la me*de hein ? Loin de moi l&rsquo;idée.</p>



<p>Donc je partirai sur Python en environnement virtuel (venv).</p>



<p>Pourquoi ce choix ? Simplement parce que RHEL utilise également Python dans une version différente et qu&rsquo;à ce jour la version 3.12 n&rsquo;est pas encore officiellement supporté par OpenWebUI&#8230; Rien que pour ça je déteste Python autant que Java. Pourquoi faire simple&#8230;</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3520_9a0c37-e4 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3520_ff088c-ef"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Création de l&rsquo;environnement virtuel</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans mon répertoire ollama, j&rsquo;ai créé un second répertoire openwebui.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-820304956fcaf1b3dcda79afd65d1736"><code><strong>$ sudo mkdir -p /mnt/ollama/openwebui
$ sudo cd /mnt/ollama/openwebui/</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="620" height="66" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_0.jpg" alt="" class="wp-image-3542" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_0.jpg 620w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_0-300x32.jpg 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>
</div>


<p>Une fois déplacé dans le répertoire, nous créons l&rsquo;environnement virtuel <strong>venv</strong>. Original comme nom n&rsquo;est il pas ?</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-4105a54d743af1aa7d3a48ac73c39678"><code><strong>$ sudo python3 -m venv venv</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="598" height="43" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_1.jpg" alt="" class="wp-image-3543" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_1.jpg 598w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_1-300x22.jpg 300w" sizes="auto, (max-width: 598px) 100vw, 598px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3520_720aaa-b2"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Activation de l&rsquo;environnement virtuel</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Etant toujours dans le même répertoire créé précédemment, nous allons activer notre environnement virtuel.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-acd4be5844f2b2742c95fd277e79b798"><code><strong>$ sudo source venv/bin/activate</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="640" height="43" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_2.jpg" alt="" class="wp-image-3544" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_2.jpg 640w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_2-300x20.jpg 300w" sizes="auto, (max-width: 640px) 100vw, 640px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3520_0e4588-37"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Installation</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Maintenant que tout est bon, il est toujours dans notre environnement virtuel de démarrer l&rsquo;installation. Cette dernière se déroulera en 3 temps.</p>



<ul class="wp-block-list">
<li>La mise à jour de pip</li>



<li>La création d&rsquo;un répertoire temporaire pour stocker les sources de l&rsquo;installation qui sont plutôt volumineuse</li>



<li>L&rsquo;installation en faisant référence à notre répertoire temporaire</li>
</ul>



<p>Simple comme bonjour, et pourtant sachez que je me suis bien cassé la tête pour trouver l&rsquo;astuce du répertoire temporaire&#8230;</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-7b583b0aba8d3f3d221aa045c930b786"><code><strong>$ sudo pip install --upgrade pip 
$ sudo mkdir /mnt/ollama/tmp
$ sudo TMPDIR=/mnt/ollama/tmp pip install open-webui</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="928" height="274" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_3.jpg" alt="" class="wp-image-3545" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_3.jpg 928w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_3-300x89.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_3-768x227.jpg 768w" sizes="auto, (max-width: 928px) 100vw, 928px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="941" height="492" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_4.jpg" alt="" class="wp-image-3546" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_4.jpg 941w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_4-300x157.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_4-768x402.jpg 768w" sizes="auto, (max-width: 941px) 100vw, 941px" /></figure>
</div>


<p>Lors de l&rsquo;installation si comme moi vous avez des ressources limitées, aucun respect des préconisations matériels. Je vous recommande de tuer le temps pendant facile une heure et de laisser tranquille votre bécanne. Tiens, je reparle de patience, comme de par hasard 🙂</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="556" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_004_jjf-1024x556.jpg" alt="" class="wp-image-3539" style="aspect-ratio:1.8417715344844405;width:497px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_004_jjf-1024x556.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_004_jjf-300x163.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_004_jjf-768x417.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_004_jjf.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong><em>Sans hésitez, la réponse D Jean-Pierre, ça <strong><em>sera mon dernier goulot.</em></strong> </em></strong></p>



<p>Blague mise à part, 291 packages à installer avec des grosses dépendances pour certains d&rsquo;entre eux (Nvidia par exemple&#8230;). Reprenez un peu de la réponse D en attendant.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="939" height="992" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_5.jpg" alt="" class="wp-image-3548" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_5.jpg 939w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_5-284x300.jpg 284w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_005_install_5-768x811.jpg 768w" sizes="auto, (max-width: 939px) 100vw, 939px" /></figure>
</div>


<p>Toujours pas terminé ? Bon ba comme on dit j&rsquo;ai nous <strong><em>« On va pas la mécher [la bouteille naturellement] »</em></strong>, terminez là et allez en chercher une nouvelle pour poursuivre la connaissance de la réponse D.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3520_08c8ee-de"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Démarrage</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Si vous n&rsquo;êtes pas tombé et que vous n&rsquo;êtes plus très sobre, c&rsquo;est bon signe. 🙂 Normalement, l&rsquo;installation est terminée.</p>



<p class="has-text-align-center has-theme-palette-5-background-color has-background"><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color"><span style="text-decoration: underline;">/!\</span></mark></strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-9-color"></mark><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#000000" class="has-inline-color"><span style="text-decoration: underline;">Attention :</span></mark></strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-9-color"><strong>L&rsquo;abus des bons produits et notamment d&rsquo;alcool est dangereux pour la santé.</strong> (Que l&rsquo;on n&rsquo;aille pas dire que je fasse de la publicité ou l&rsquo;apologie de l&rsquo;alcool </mark><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#000000" class="has-inline-color">#loievin</mark></strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-9-color">)</mark></p>



<p>Vérifions que cela fonctionne avec la première commande.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-2e3528595d69e530cdac0d9a86abca3a"><code><strong>$ sudo open-webui --help</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="940" height="362" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_1.jpg" alt="" class="wp-image-3554" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_1.jpg 940w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_1-300x116.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_1-768x296.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /></figure>
</div>


<p>C&rsquo;est rassurant de se dire que cela fonctionne. Pas de message d&rsquo;erreur. Il ne nous reste maintenant plus qu&rsquo;à démarrer notre service sur son interface et son port avec la commande ci-dessous.</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-8c3c7fab3e36412e32dd5c4d31345adf"><code><strong>$ sudo open-webui serve --host 10.227.250.11 --port 8080</strong></code></pre>



<p>Toutefois, il conviendra d&rsquo;autoriser les flux au niveau de l&rsquo;UTM local à notre serveur en amont. Pour cela, j&rsquo;explique dans la partie suivante Configuration comment ouvrir les flux http sur le port 8080/tcp.</p>



<p>Normalement, l&rsquo;ensemble des composants sont en cours de chargement et une fois l&rsquo;ensemble chargé, vous devriez avoir dans votre CLI<sup data-fn="96e1bb31-3abc-4f7d-9141-265b48fe943e" class="fn"><a href="#96e1bb31-3abc-4f7d-9141-265b48fe943e" id="96e1bb31-3abc-4f7d-9141-265b48fe943e-link">16</a></sup> la chose suivante.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="941" height="977" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_2.jpg" alt="" class="wp-image-3555" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_2.jpg 941w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_2-289x300.jpg 289w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_006_run_2-768x797.jpg 768w" sizes="auto, (max-width: 941px) 100vw, 941px" /></figure>
</div>


<p>Il est à noter que des notes d&rsquo;informations vont vite prendre le relai, ces derniers affichant l&rsquo;ensemble des requêtes HTTP.</p>
</div></div></div>
</div></div></div>



<p></p>



<p>Si nous sommes à ce stade c&rsquo;est que tout est bon 🙂 Avant de rentrer plus en détail de l&rsquo;outil, il est nécessaire de regarder la partie Configuration. </p>



<h3 class="wp-block-heading">Configuration</h3>



<p>Cette partie pourrait je pense être amélioré. L&rsquo;un des points les plus complexes et de mettre en place le mode service (j&rsquo;y ai passé un temps certain&#8230;). </p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3520_d18aa8-fa kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3520_2d9a52-19"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Utilisateur dédié</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Pour des raisons de sécurité, il convient de créer un utilisateur dédié pour notre application. Nous partons sur un compte de service et non un compte utilisateur.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-bf4decc473bfbe2d3dea8e1f34b337e0"><code><strong>$ sudo useradd -r -s /bin/false openwebui
$ sudo chown -R openwebui:openwebui /mnt/ollama/openwebui</strong></code></pre>



<p>Un petit changement de propriétaire et le tour est joué.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="842" height="43" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied.jpg" alt="" class="wp-image-3565" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied.jpg 842w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied-300x15.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied-768x39.jpg 768w" sizes="auto, (max-width: 842px) 100vw, 842px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3520_82136e-4c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>ParFeu</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Par défaut, le port qui sera utilisé pour accéder à l&rsquo;interface web d&rsquo;OpenWebUI est 8080/tcp en http.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-421e427ebffce88e0b68e3d9942078e1"><code><strong>$ sudo firewall-cmd --permanent --add-port=8080/tcp
$ sudo firewall-cmd --reload</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="779" height="111" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_007_fwl.jpg" alt="" class="wp-image-3551" style="aspect-ratio:7.018908698001081;width:512px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_007_fwl.jpg 779w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_007_fwl-300x43.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_007_fwl-768x109.jpg 768w" sizes="auto, (max-width: 779px) 100vw, 779px" /></figure>
</div>


<p>On est d’accord que si nous souhaiterions mieux faire en termes de sécurité, il serait plus intelligent de créer la policy suivante :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-ac1dfb4f1ceaaff4aa75839b00dd9c53"><code><strong>$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.127.50.0/24" port port="8080" protocol="tcp" accept'
$ sudo firewall-cmd --reload</strong></code></pre>



<p>Ayant un UTM&nbsp;en amont, je me permets donc de me contenter de la première solution.</p>



<p>Un petit test de vérification depuis le poste source :</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="607" height="155" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_008_fwl.jpg" alt="" class="wp-image-3552" style="width:497px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_008_fwl.jpg 607w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_008_fwl-300x77.jpg 300w" sizes="auto, (max-width: 607px) 100vw, 607px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3520_4ca822-16"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Mode Service</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Commençons par créer notre fichier de service. La difficulté que j&rsquo;ai rencontrée ici est de jouer avec l&rsquo;environnement virtuel et le service OpenWebUI à démarrer. J&rsquo;ai bien trouvé une solution de contournement à mon problème toutefois cela me laisse un gout amer car la solution ne me semble pas propre du tout.</p>



<p>C&rsquo;est je pense l&rsquo;un des points qui me frustre le plus dans le monde du libre, l&rsquo;imbrication de solution tierce et dans un sens une non-standardisation des méthodes d&rsquo;implémentations. Bien que je doive le reconnaitre c&rsquo;est ce qui fait tout son charme. Je t&rsquo;aime moi non plus. On se croirait dans Andromaque&#8230;</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-edb7a7f82c718c64f223a23096d9ca45"><code><strong>$ sudo vim /etc/systemd/system/openwebui.service</strong></code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Regardons d&rsquo;un peu plus près le contenu de ce fichier.<br><br>Nous retrouvons la description de notre service ainsi que son ordre de démarrage. OpenWebUI étant intimement lié à Ollama, il convient donc de définir ce dernier comme service requis.<br><br>Au niveau du service, nous sommes sur un type <strong>simple</strong>, le service étant exécuter par l&rsquo;utilisateur dédié <strong>openwebui</strong>. Il peut être acceptable bien que s&rsquo;est sacrément cochon d&rsquo;utiliser le compte root. Mais bon nous voulons éviter de faire étalage de notre amateurisme.<br><br><strong>WorkingDirectory</strong> représente le répertoire de travail dans lequel le programme sera exécuté.<br><strong>Environment</strong> permet de définir les variables d&rsquo;environnement.<br><br><strong>ExecStart</strong> permet d&rsquo;exécuter la commande. Dans mon cas, j&rsquo;en ai deux dont une qui est commentée (et qui ne fonctionne pas). <br><br><strong>Restart</strong> permet de définir le rédémarrage automatique dans le cas où le service viendrait à crash par exemple.<br><strong>RestartSec</strong> défini le délai de redémarrage en seconde.<br><br>Et pour finir, <strong>WantedBy</strong> pour spécifier le mode de service. Ici cela équivaut au mode normal.<br><br></td><td><strong><code>[Unit] </code><br><code>Description=Open WebUI Service</code><br><code>After=network.target ollama.service Requires=ollama.service </code><br><br><code>[Service] </code><br><code>Type=simple </code><br><code>User=openwebui</code><br><br><code>WorkingDirectory=/mnt/ollama/openwebui Environment="TMPDIR=/mnt/ollama/tmp" Environment="PATH=/mnt/ollama/openwebui/venv/bin:/usr/bin:/usr/sbin"</code><br><br><code>#ExecStart=/mnt/ollama/openwebui/venv/bin/open-webui serve --host 10.227.250.11 --port 8080 ExecStart=/bin/bash -c 'source /mnt/ollama/openwebui/venv/bin/activate &amp;&amp; open-webui serve --host 10.227.250.11 --port 8080'</code><br><br><code>Restart=always</code><br><code>RestartSec=5</code><br><br><code>[Install]</code><br><code>WantedBy=multi-user.target</code></strong></td></tr></tbody></table></figure>



<p>Comme nous venons de créer un nouveau service, il sera nécessaire de recharger l&rsquo;ensemble du systemctl pour intégrer le nouveau service à la liste des services disponible. Après, j&rsquo;ai envie de dire c&rsquo;est le schéma classique d&rsquo;activation, démarrage et vérification.</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-1de451f486c9405510986bb5d6a71df8"><code><strong>$ sudo systemctl daemon-reload
$ sudo systemctl enable openwebui
$ sudo systemctl start openwebui
$ sudo systemctl status openwebui</strong></code></pre>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><img loading="lazy" decoding="async" width="550" height="272" class="wp-image-3561" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_009_status.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_009_status.jpg 939w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_009_status-300x149.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_009_status-768x380.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td><img loading="lazy" decoding="async" width="550" height="122" class="wp-image-3566" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1.jpg 1896w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1-300x67.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1-1024x227.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1-768x171.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_010_dedied_1-1536x341.jpg 1536w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>
</div></div></div>



<h4 class="wp-block-heading">Nginx, HTTPS</h4>



<p>Je suis partagé quant à la rédaction de cette sous partie. Oui il est important de sécuriser l&rsquo;accès à l&rsquo;interface Web, mais j&rsquo;ai peur d&rsquo;être hors sujet et d&rsquo;alourdir l&rsquo;article. Mais d&rsquo;un autre côté, je ne veux pas non plus bâcler la chose&#8230; Encore un pu**n de choix cornélien&#8230;</p>



<p>Bref, je vais faire au plus simple et si besoin écrirai un billet sur Nginx.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3520_66384a-95 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3520_8bd374-fd"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Installation</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;installation et activation du service, je passe mon tour. </p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-0543457c0fe9e0729374dcee107be068"><code><strong>$ sudo dnf install nginx
$ sudo systemctl enable nginx
$ sudo systemctl start nginx</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="939" height="450" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0.jpg" alt="" class="wp-image-3573" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0.jpg 939w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0-300x144.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0-768x368.jpg 768w" sizes="auto, (max-width: 939px) 100vw, 939px" /></figure>
</div>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="938" height="83" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1.jpg" alt="" class="wp-image-3572" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1.jpg 938w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1-300x27.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1-768x68.jpg 768w" sizes="auto, (max-width: 938px) 100vw, 938px" /></figure>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3520_228265-dc"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Certificats</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Là encore une fois je rencontre un petit problème. Je n&rsquo;ai pas de certificat public que je pourrais utiliser, ma topologie réseau ne me permet pas d&rsquo;utiliser un certificat Let&rsquo;s Encrypt et sans vouloir spoiler je n&rsquo;ai pas envie de me prendre la tête. Donc ça va finir avec un bon vieux certificat autosigné 🙂</p>



<p>La génération n&rsquo;est pas bien compliquée et si besoin, j&rsquo;ai déjà rédigé <a href="https://erwanguillemard.com/linux-certificats/">un article</a> sur le sujet.</p>



<p>Créons le répertoire qui va contenir nos éléments de sécurité :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-f4e5d319873f5128a8b950fc29a910ff"><code><strong>$ sudo mkdir -p /etc/nginx/ssl</strong></code></pre>



<p>Générons notre certificat :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-138cd2c03fe6716ce56321d41789b458"><code><strong>$ sudo openssl req req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/nginx/ssl/openwebui.key \
-out /etc/nginx/ssl/openwebui.crt</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="940" height="89" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_2.jpg" alt="" class="wp-image-3574" style="aspect-ratio:10.562461026813553;width:771px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_2.jpg 940w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_2-300x28.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_2-768x73.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="778" height="147" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_3.jpg" alt="" class="wp-image-3575" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_3.jpg 778w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_3-300x57.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_3-768x145.jpg 768w" sizes="auto, (max-width: 778px) 100vw, 778px" /></figure>
</div>


<p></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3520_a1b4ed-16"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Configuration</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Créons et éditons notre fichier de configuration. Je prendrai le temps d&rsquo;expliquer l&rsquo;intégralité du fichier de configuration.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-8bf2e2ac7a6fa0624b3de515312c5c6b"><code><strong>$ sudo vim /etc/nginx/conf.d/openwebui.conf</strong></code></pre>



<pre class="wp-block-code"><code>server {
    listen 80;
    server_name 10.227.250.11;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name 10.227.250.11;

    ssl_certificate /etc/nginx/ssl/openwebui.crt;
    ssl_certificate_key /etc/nginx/ssl/openwebui.key;

    # TLS sécurisé
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;

    # sécurité headers
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # taille upload
    client_max_body_size 100M;

    # compression
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

    location / {

        proxy_pass http://10.227.250.11:8080;

        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket support (important OpenWebUI)
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600;
        proxy_send_timeout 3600;
    }
}</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>La première section permet de réaliser la redirection du protocole HTTP vers HTTPS de manière permanente. Ainsi si je contacte l&rsquo;url http://10.227.250.11, je serais automatiquement redirigé vers https://10.227.254.11.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="211" class="wp-image-3580" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_021_nginx.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_021_nginx.jpg 344w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_021_nginx-300x115.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr><tr><td>Le second bloc indique que nous écoutons sur le port 443 sur l&rsquo;interface 10.227.250.11. L&#8217;emplacement des fichiers contenant la clé privée ainsi que le certificat sont spécifiés pour activer la couche de sécurité (j&rsquo;ai l&rsquo;impression d&rsquo;enfoncer des portes ouvertes&#8230;). J&rsquo;indique qu&rsquo;elles sont les versions des protocoles TLS<sup data-fn="1a3ccfdd-7fad-428c-9f9a-15401188579d" class="fn"><a href="#1a3ccfdd-7fad-428c-9f9a-15401188579d" id="1a3ccfdd-7fad-428c-9f9a-15401188579d-link">17</a></sup> autorisées et laisse le serveur choisir le chiffrement le plus sûr.<br>Côté en-tête, j&rsquo;ai repris les suggestions de sécurité implémentée pour ITOP. Soit la restriction de mettre le site en iframe externe, de restreindre le navigateur à deviner le tye MIME qui est utilisé et surtout d&rsquo;activer la protection anti-cross-site scripting. Niveau upload, j&rsquo;ai vu large et j&rsquo;ai autorisé le téléversement de fichier de 100 Mio.<br>Côté performance, j&rsquo;ai activé la compression des flux pour optimiser un peu les performances réseaux.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="446" class="wp-image-3581" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_022_nginx.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_022_nginx.jpg 651w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_022_nginx-300x243.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr><tr><td>Le troisième bloc concerne la partie Reverse Proxy.<br>Toutes les requêtes qui sont envoyées sur https://10.227.250.11 sont redirigées vers le port 8080.<br>Concernant les en-têtes il est nécessaire d&rsquo;utiliser les websockets car seront transmis l&rsquo;ip du client, le protocole utilisé et le NDD<sup data-fn="6f19f21f-54c7-433f-8a76-3c3d830f4eda" class="fn"><a href="#6f19f21f-54c7-433f-8a76-3c3d830f4eda" id="6f19f21f-54c7-433f-8a76-3c3d830f4eda-link">18</a></sup> ou l&rsquo;IP demandé.<br>Les deux lignes suivantes permettent de réaliser la jonction entre nginx et les websockets.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="381" class="wp-image-3582" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_023_nginx.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_023_nginx.jpg 530w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_023_nginx-300x208.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p>Une fois la configuration faite, il est important de réaliser un petit contrôle de notre petit fichier afin de s&rsquo;assurer que ce dernier ne comporte pas d&rsquo;erreur. </p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-431bd28015d2c71adaab9e3913939a85"><code><strong>$ sudo nginx -t </strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="940" height="106" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_4.jpg" alt="" class="wp-image-3578" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_4.jpg 940w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_4-300x34.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_4-768x87.jpg 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /></figure>
</div>


<p>Il faudra penser à recharger la configuration et hop le tour est joué.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3520_738fe8-6a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Sécurité</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous souhaitons toujours publier notre interface web en HTTPS. Donc il va falloir jouer avec nos UTMs !</p>



<p>Sur le plan interne, autorisons nos flux https :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-71931f831671ed470001cbac0f47f7bc"><code><strong>$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd --reload</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="768" height="84" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_5.jpg" alt="" class="wp-image-3576" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_5.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_5-300x33.jpg 300w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>
</div>


<p>Nous pourrions comme énoncé plus haut pour le protocole HTTP être bien plus rigoureux dans notre règle de sécurité. Mais encore une fois ayant un UTM en amont, j&rsquo;accepte le risque. Juste ne pas oublier de créer la règle sinon vous passez pour un c*n.</p>



<p>Si nous sommes joueurs, nous pouvons essayer de joindre directement notre interface web depuis notre navigateur. Normalement vous devez vous prendre dans les dents</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="606" height="230" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_7.jpg" alt="" class="wp-image-3569" style="aspect-ratio:2.634850493445279;width:490px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_7.jpg 606w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_7-300x114.jpg 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></figure>
</div>


<p>Ca vous fait la b**e hein ? Je vous rassure je me suis pris la même rouste. J&rsquo;ai oublié d&rsquo;autoriser le contexte de mon SELinux pour autoriser les services http à accéder aux réseaux 😀</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-292226daa4277153a0a72abd06865dd7"><code><strong>$ sudo setsebool -P httpd_can_network_connect 1</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="731" height="23" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_6.jpg" alt="" class="wp-image-3577" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_6.jpg 731w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_6-300x9.jpg 300w" sizes="auto, (max-width: 731px) 100vw, 731px" /></figure>
</div>


<p>Un petit F5 et hop c&rsquo;est tout bon &lt;3</p>
</div></div></div>
</div></div></div>



<p></p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Normalement avec toutes nos actions, nous devons joindre notre interface web depuis un navigateur de manière sécurisée (hormis l&rsquo;erreur liée à notre certificat autosigné).<br><br>Allez, on passe à la partie démonstration ?</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="355" class="wp-image-3571" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_8.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_8.jpg 958w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_8-300x194.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_8-768x496.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<h2 class="wp-block-heading">Démonstration</h2>



<p>Pour le test, j&rsquo;ai décidé de changer un peu de format et de passer par des formats vidéo. Surtout que dans ce cas précis, cela évitera de mon côté de blablater. Cependant, ce n&rsquo;est pas pour autant que le travail est plus simple ou plus rapide.</p>



<p>J&rsquo;ai également pris le parti de commenter mes enregistrements et vidéos en anglais (oui même avec mon anglais aussi rouillé qu&rsquo;une vieille cantine de bidasse, si vous voulez <a href="https://www.youtube.com/watch?v=sufXl_PpKAk">trikitez mes vidéos</a> je vous laisse ce plaisir 🙂 ).</p>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="APPS   OpenWebUI" width="720" height="405" src="https://www.youtube.com/embed/UQW_L6yub3g?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La combinaison des solutions OpenWebUI et Ollama fonctionne à la perfection. Si nous associons le côté multimodèle d&rsquo;Ollama et son fonctionnement hybride avec la puissance de l&rsquo;interface OpenWebUI il est alors possible de fournir une solution complète à destination des utilisateurs.</p>



<p>Toutefois, je reste profondément frustré pour l&rsquo;instant. L&rsquo;ajout de la couche OpenWebUI vient rallentir et allourdir l&rsquo;usage d&rsquo;Ollama. D&rsquo;un autre côté, est ce vraiment pertinent comme remarque à savoir que je ne réponds à aucun prérequis matériel ? C&rsquo;est là où le bât blesse encore une fois. Cela fonctionne mais à quel prix ?</p>



<p>Il est également important de prendre en compte les couts annexes et variables (comme au hasard, la consommation électrique, refroidissement&#8230;) périphériques à l&rsquo;usage de l&rsquo;IA. Nous parlons du réchauffement climatique, de limiter nos émissions de carbone et j&rsquo;en passe pour d&rsquo;un autre côté user de l&rsquo;IA à tort ou à raison. Je ne tiens pas à lancer un débat climatosceptique ou sur est-ce bien ou non d&rsquo;utiliser l&rsquo;IA.</p>



<p>Je pense simplement qu&rsquo;il y a encore beaucoup à faire pour accorder en synergie la puissance et l&rsquo;usage de l&rsquo;IA avec les convictions écologiques et environnementales. Si nous être vivant allons avoir chaud, que dire des CPUs/GPUs ? <strong><em>#tousdanslemêmebateau</em></strong> Bref, un moratoire serait nécessaire en somme. Mais je laisse ça au pisse violon que je suis.</p>



<p>Je reste convaincu de la fiabilité et viabilité de la solution dans un milieu professionnel, malheureusement, pour moi je préfère me passer de l&rsquo;interface Web. Donc en d&rsquo;autres termes, je vais rollback mon snapshot (ou restaurer mon backup au choix). Après tout, je peux toujours utiliser l&rsquo;interface CLI directement depuis une session SSH<sup data-fn="a61fa4e1-f1b4-4118-a125-8ff2b30744bb" class="fn"><a href="#a61fa4e1-f1b4-4118-a125-8ff2b30744bb" id="a61fa4e1-f1b4-4118-a125-8ff2b30744bb-link">19</a></sup> ? Oui mais pas que.</p>



<p class="has-text-align-center"><strong>Pourquoi ne pas faire une petite interface qui exploite l&rsquo;API Ollama ?</strong></p>



<p>Ah nous y voila ! Ca sent le projet long comme un jour sans pain encore en approche. Blague mis à part, peut être que cela n&rsquo;aboutira pas. Mais j&rsquo;ai envie de pousser relativement loin la solution Ollama.</p>



<p>Pour faire vraiment simple. OpenWebUI c&rsquo;est supercool mais il faut les ressources pour pouvoir l&rsquo;utiliser pleinement pour ne pas souffrir d&rsquo;une grande frustration. 🙂</p>



<p>Le mot de la fin :</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Je branche OpenWebUI sur une prise RJ45 en camembert ! Je contre avec un lama qui compile une girafe. Vous ne pouvez pas, il y a Sandrine ROUSSEAU au festival de la tête de veau.</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://docs.openwebui.com/getting-started/">OpenWebUI : Quick Started</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="9b4b7116-7da7-4c05-943e-ac072573b13f"><strong>LLM : </strong>Large Language Models <a href="#9b4b7116-7da7-4c05-943e-ac072573b13f-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="f36cb89d-8ac6-4ed0-8df5-7d578d4680c4"><strong>IA :</strong> Intelligence Artificielle <a href="#f36cb89d-8ac6-4ed0-8df5-7d578d4680c4-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="9e902093-392b-4860-a9f8-d2c28cf28686"><strong>RHEL :</strong> RedHat Entreprise Linux <a href="#9e902093-392b-4860-a9f8-d2c28cf28686-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="4a15f514-bc25-45dc-8c12-3f5fd10c286d"><strong>DSI :</strong> Direction des Services Informatiques <a href="#4a15f514-bc25-45dc-8c12-3f5fd10c286d-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="63b8e4f1-84bc-47ad-8afa-7dae59217921"><strong>CPU :</strong> Central Processing Unit <a href="#63b8e4f1-84bc-47ad-8afa-7dae59217921-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="f958a01e-8b83-4fc9-a592-006e9651956c"><strong>RAM :</strong> Random Access Memory <a href="#f958a01e-8b83-4fc9-a592-006e9651956c-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="8f6e0338-719e-4456-808e-82e0a17b70ea"><strong>SSD :</strong> Solid State Drive <a href="#8f6e0338-719e-4456-808e-82e0a17b70ea-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="57be53ba-9128-49e7-ae7a-c337f01cf69e"><strong>GPU :</strong> Graphics Processing Unit <a href="#57be53ba-9128-49e7-ae7a-c337f01cf69e-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="f4993b7e-0f63-4b56-886c-b4e26648314b"><strong>HTTP :</strong> Hypertext Transfer Protocol <a href="#f4993b7e-0f63-4b56-886c-b4e26648314b-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="1d2044d0-2a6b-4f6c-9865-c8cded2e72e1"><strong>HTTPS :</strong> Hypertext Transfer Protocol Secure <a href="#1d2044d0-2a6b-4f6c-9865-c8cded2e72e1-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="688876c0-5948-48bf-baaf-3d493e2e5c01"><strong>SE :</strong> Système d&rsquo;Exploitation <a href="#688876c0-5948-48bf-baaf-3d493e2e5c01-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li><li id="13f6c481-ca7e-4e73-875d-cf307bad64ec"><strong>UTM :</strong> Unified Threat Management <a href="#13f6c481-ca7e-4e73-875d-cf307bad64ec-link" aria-label="Aller à la note de bas de page 12">↩︎</a></li><li id="ac43ad3e-9b07-4981-8114-d187d3cf6dbf"><strong>WAN :</strong> Wide Area Network <a href="#ac43ad3e-9b07-4981-8114-d187d3cf6dbf-link" aria-label="Aller à la note de bas de page 13">↩︎</a></li><li id="103fd0e8-cd60-41ff-b80a-9c51d9c20b76"><strong>DMZ : </strong>DeMilitarized Zone <a href="#103fd0e8-cd60-41ff-b80a-9c51d9c20b76-link" aria-label="Aller à la note de bas de page 14">↩︎</a></li><li id="2f21ddb8-be62-4029-92fc-283d894d896c"><strong>VM :</strong> Virtual Machine <a href="#2f21ddb8-be62-4029-92fc-283d894d896c-link" aria-label="Aller à la note de bas de page 15">↩︎</a></li><li id="96e1bb31-3abc-4f7d-9141-265b48fe943e"><strong>CLI : </strong>Command Line Interface <a href="#96e1bb31-3abc-4f7d-9141-265b48fe943e-link" aria-label="Aller à la note de bas de page 16">↩︎</a></li><li id="1a3ccfdd-7fad-428c-9f9a-15401188579d"><strong>TLS :</strong> Transport Layer Security <a href="#1a3ccfdd-7fad-428c-9f9a-15401188579d-link" aria-label="Aller à la note de bas de page 17">↩︎</a></li><li id="6f19f21f-54c7-433f-8a76-3c3d830f4eda"><strong>NDD :</strong> Nom De Domaine <a href="#6f19f21f-54c7-433f-8a76-3c3d830f4eda-link" aria-label="Aller à la note de bas de page 18">↩︎</a></li><li id="a61fa4e1-f1b4-4118-a125-8ff2b30744bb"><strong>SSH :</strong> Secure SHell <a href="#a61fa4e1-f1b4-4118-a125-8ff2b30744bb-link" aria-label="Aller à la note de bas de page 19">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps &#8211; OLLAMA</title>
		<link>https://erwanguillemard.com/apps-ollama/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sat, 18 Apr 2026 11:32:22 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[OLLAMA]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=3440</guid>

					<description><![CDATA[Pour ce nouveau billet, je pense que commencer par une définition est une bonne chose. Robot : nom masculin, du tchèque robota, travail forcé, mot créé en 1920 par K. Capek. Dans les œuvres de science-fiction, machine à l&#8217;aspect humain, capable de se mouvoir, d&#8217;exécuter des opérations, de parler. Appareil automatique capable de manipuler des...]]></description>
										<content:encoded><![CDATA[
<p>Pour ce nouveau billet, je pense que commencer par une définition est une bonne chose.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="has-small-font-size"><strong>Robot :</strong> nom masculin, du tchèque <strong>robota</strong>, travail forcé, mot créé en 1920 par K. Capek.</p>



<p class="has-small-font-size"><em>Dans les œuvres de science-fiction, machine à l&rsquo;aspect humain, capable de se mouvoir, d&rsquo;exécuter des opérations, de parler.</em></p>



<p class="has-small-font-size"><em>Appareil automatique capable de manipuler des objets ou d&rsquo;exécuter des opérations selon un programme fixe, modifiable ou adaptable.</em></p>
<cite><a href="https://www.larousse.fr/dictionnaires/francais/robot/69647">Définition Larousse</a></cite></blockquote>



<p>Au vu du titre de cet article et de la définition posée précédemment, difficile de ne pas deviner le sujet qui va être abordé.</p>



<p>Hé oui, moi le puriste, je vais parler d&rsquo;IA<sup data-fn="cfefe833-a7a4-4019-87c1-c684487526cf" class="fn"><a href="#cfefe833-a7a4-4019-87c1-c684487526cf" id="cfefe833-a7a4-4019-87c1-c684487526cf-link">1</a></sup> et pire que cela l&rsquo;utiliser de manière récurrente. Je me sens en ce moment comme le capitaine Haddock face au lama dans l&rsquo;œuvre d&rsquo;Hergé, Tintin et le temple du soleil.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="504" height="267" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_Tintin.jpg" alt="" class="wp-image-3444" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_Tintin.jpg 504w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_Tintin-300x159.jpg 300w" sizes="auto, (max-width: 504px) 100vw, 504px" /></figure>
</div>


<p>Naturellement, au vu de mes précédents écrits, c&rsquo;est vous lecteurs et l&rsquo;ensemble des solutions IA qui me crachent dessus. C&rsquo;est l&rsquo;arroseur arrosé en somme, moi qui ne voulais pas entendre parler de ça&#8230;</p>



<p class="has-text-align-center"><strong>Mais alors pourquoi un tel revirement de situation M&rsquo;sieur GUILLEMARD ?</strong></p>



<p>Je pense qu&rsquo;il faut vivre avec son temps et ignorer cet outil technologique serait signer mon arrêt de mon mort d&rsquo;ici quelques années et devenir un être <strong><em>never been</em></strong> à défaut d&rsquo;<strong><em>has been</em></strong>&#8230;</p>



<p class="has-text-align-center"><strong>Après tout <em><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0404" class="has-inline-color">Errare humanum est, perseverare diabolicum</mark></em></strong><sup data-fn="aadcbef0-7f66-4bcf-bdef-699e3c85609a" class="fn"><a href="#aadcbef0-7f66-4bcf-bdef-699e3c85609a" id="aadcbef0-7f66-4bcf-bdef-699e3c85609a-link">2</a></sup><strong> non ?</strong></p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>J&rsquo;ai pris le parti d&rsquo;être méfiant vis à vis des outils d&rsquo;IA en ligne gratuit ou du moins libre d&rsquo;utilisation.</p>



<ul class="wp-block-list">
<li>ChatGPT</li>



<li>Gemini</li>



<li>Copilot</li>



<li>Claude</li>



<li>&#8230;</li>
</ul>



<p>Je ne me mouille pas trop dans les moteurs d&rsquo;IA&#8230;</p>



<p>Dire que je n&rsquo;ai jamais utilisé l&rsquo;un de ces moteurs serait me parjurer et il faut reconnaitre qu&rsquo;il y a un côté pratique. Difficile une fois avoir gouter à la simplicité pour ne pas l&rsquo;utiliser à tout va pour tout et rien. C&rsquo;est là pour moi le piège de la pauvreté intellectuelle. Comme toutes les bonnes choses il faut savoir ne pas en abuser.</p>



<p>En dehors de l&rsquo;aspect social et sociétal qui me préoccupe tant, se pose la question des données saisies dans le moteur de recherche ou plutôt de prompt.</p>



<ul class="wp-block-list">
<li>Que deviennent les données saisies ?</li>



<li>Que deviennent les données retournées ?</li>



<li>Combien de temps sont conservés ces données ?</li>



<li>A qui profitent ces données ?</li>



<li>Qui sur surveillent les données ?</li>
</ul>



<p>Cela fait un bon nombre de question non ? Surtout qu&rsquo;un grand nombre des acteurs de l&rsquo;IA sont aux US, Chine etc avec une législation bien singulière. Qui de nos jours lis encore les CGUs<sup data-fn="b41451ff-b3b4-4f38-bb68-9645125a745a" class="fn"><a href="#b41451ff-b3b4-4f38-bb68-9645125a745a" id="b41451ff-b3b4-4f38-bb68-9645125a745a-link">3</a></sup> (et qui les a déjà lus) ?</p>



<p>C&rsquo;est ainsi que grâce à mon directeur j&rsquo;ai découvert la solution OLLAMA. Solution open-source qui exécute des modèles d&rsquo;intelligence artificielle (aussi appelé LLM<sup data-fn="1aad26f0-eec5-4a0f-8e20-fdd248a35c69" class="fn"><a href="#1aad26f0-eec5-4a0f-8e20-fdd248a35c69" id="1aad26f0-eec5-4a0f-8e20-fdd248a35c69-link">4</a></sup>) localement. Tout de suite, le projet m&rsquo;a séduit et je me suis demandé</p>



<p class="has-text-align-center"><strong>Et pourquoi pas ? </strong></p>



<p>Dans le pire des cas, je mourrai moins c*n ce soir comme dirait un philosophe du cercle familial.</p>



<p>Naturellement, j&rsquo;ai choisi d&rsquo;user de OLLAMA sur ma distribution favorite RockyLinux. L&rsquo;environnement a été préalablement durci.</p>



<p>On se lance dans la théorie puis dans la pratique mes petits Lamas ?</p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>
<ul class="wp-block-list">
<li>Rocky Linux 9.x et version ultérieures (pour ma part ça sera du 10.x)</li>



<li>macOS</li>



<li>Windows</li>
</ul>
</li>



<li><strong>Apps :&nbsp;</strong>
<ul class="wp-block-list">
<li>Ollama</li>
</ul>
</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>GPU<sup data-fn="fdf3a5b9-4253-464d-a09e-8fb86b58314e" class="fn"><a href="#fdf3a5b9-4253-464d-a09e-8fb86b58314e" id="fdf3a5b9-4253-464d-a09e-8fb86b58314e-link">5</a></sup></li>



<li>Minimum 4 CPU<sup data-fn="73029218-b1cc-46cd-b970-647ebf9d8979" class="fn"><a href="#73029218-b1cc-46cd-b970-647ebf9d8979" id="73029218-b1cc-46cd-b970-647ebf9d8979-link">6</a></sup></li>



<li>Stockage rapide (SSD<sup data-fn="a37422d2-85b9-4b20-aaed-ed832709d897" class="fn"><a href="#a37422d2-85b9-4b20-aaed-ed832709d897" id="a37422d2-85b9-4b20-aaed-ed832709d897-link">7</a></sup> ou Nvme)</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Théorie</h2>



<p>Je vais essayer d&rsquo;être le moins rassoir possible. Toutefois et encore il est nécessaire d&rsquo;où nous partons pour en être là maintenant avec l&rsquo;IA.</p>



<h3 class="wp-block-heading">Un peu d&rsquo;histoire</h3>



<p>La notion d&rsquo;intelligence artificielle vient de loin dans notre histoire, puisque l&rsquo;homme depuis l&rsquo;antiquité rêve d&rsquo;objets animés intelligents qui pourraient répondre à ces besoins.</p>



<p>Ce qui est fascinant ce trouve dans les différentes cultures à travers les âges. Que ce soit :</p>



<ul class="wp-block-list">
<li>Les <a href="https://fr.wikipedia.org/wiki/H%C3%A9pha%C3%AFstos">automates d&rsquo;Héphaïstos</a> dans la mythologie grecque</li>



<li>La tentation de créé l&rsquo;Homme servi par l&rsquo;alchimie aux moyen âge comme la science Talkim du grand savant islamique <a href="https://fr.wikipedia.org/wiki/Jabir_ibn_Hayyan">Jabir ibn Hayyan</a> (Geber en latin), des <a href="https://fr.wikipedia.org/wiki/Homoncule_(alchimie)">homoculus</a> par le médecin suisse de conviction chrétienne <a href="https://fr.wikipedia.org/wiki/Paracelse">Paracelse</a> qui s&rsquo;inspirera des travaux de <a href="https://fr.wikipedia.org/wiki/Zosime_de_Panopolis">Zosime de Panopolis</a> sans oublier l&rsquo;un des plus connue de tous ces automates, le Golem d&rsquo;argile présent dans le Talmud du judaïsme, créé par le rabbin Maharal pour protéger la communauté juive de Prague face aux multiples pogroms (j&rsquo;ai d&rsquo;ailleurs eu la possibilité de visiter le cimetière juif de Prague et de comprendre tout cela).</li>



<li>Plus tard, nous retrouverons des œuvres telles que
<ul class="wp-block-list">
<li><a href="https://fr.wikipedia.org/wiki/Les_Aventures_de_Pinocchio">Les Aventures de Pinocchio</a> de <a href="https://fr.wikipedia.org/wiki/Carlo_Collodi">Carlo Collodi</a> avant d&rsquo;être adapté en dessin animé par Disney</li>



<li><a href="https://fr.wikipedia.org/wiki/Frankenstein_ou_le_Prom%C3%A9th%C3%A9e_moderne">Frankenstein</a> de <a href="https://fr.wikipedia.org/wiki/Mary_Shelley">Mary Shelley</a></li>



<li>Ou encore <a href="https://fr.wikipedia.org/wiki/Deep_Blue">Deep Blue</a> qui viendra à bout de <a href="https://fr.wikipedia.org/wiki/Garry_Kasparov">Garry Kasparov</a> aux échecs.</li>
</ul>
</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Bref, tout cela pour dire que depuis l&rsquo;origine de l&rsquo;humanité, nous Homme recherchons à créer des objets autonomes et intelligents à notre services. Pour de multiples raisons, défensives, assistanat etc. Le plus troublant, cette pensée de création pourtant contre religieuse et présente dans toutes les cultures et religions portées par ces savants et lettrés (et ça, voyez-vous je trouve ça beau, très beau).</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="650" height="867" class="wp-image-3481" style="width: 650px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-scaled.jpg" alt="Kafka &amp; Prague Golem" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-scaled.jpg 1920w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-225x300.jpg 225w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-768x1024.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-1152x1536.jpg 1152w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_GolemPrague_EGU-1536x2048.jpg 1536w" sizes="auto, (max-width: 650px) 100vw, 650px" /></td></tr></tbody></table></figure>



<p></p>



<p>Enfin, il faudra attendre le XXème siècle et l&rsquo;arrivée des premiers ordinateur programmable pour que l&rsquo;IA se développe pleinement.</p>



<p>C&rsquo;est le pionnier et j&rsquo;oserai dire le père de l&rsquo;IA John McCarthy qui ouvre la voie, notamment par cette citation :</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>C&rsquo;est la science et l&rsquo;ingénierie de la fabrication de machines intelligentes, en particulier de programmes informatiques intelligents. Elle est liée à la tâche similaire qui consiste à utiliser des ordinateurs pour comprendre l&rsquo;intelligence humaine, mais l&rsquo;IA ne doit pas se limiter aux méthodes qui sont biologiquement observables.</em></p>
<cite>John McCarthy &#8211; <a href="https://fr.wikipedia.org/wiki/Intelligence_artificielle">Wikipédia</a></cite></blockquote>



<p>Le sujet étant réellement complexe, il est difficile de concrétiser et de répondre aux attentes des investissements privés et étatiques durant la période 70 à 80. Ce qui vaudra un ralentissement dans la rechercher et la montée en puissance de l&rsquo;IA que nous connaissons ce jour en 2026. Et pourtant les théories et grands principes mathématiques et logiques sont établis et adopté par la DARPA<sup data-fn="551f4327-d659-4f5e-aa79-e901800f9a6f" class="fn"><a href="#551f4327-d659-4f5e-aa79-e901800f9a6f" id="551f4327-d659-4f5e-aa79-e901800f9a6f-link">8</a></sup>. C&rsquo;est ainsi que s&rsquo;affronte deux grands systèmes :</p>



<p class="has-text-align-center"><strong>Le système logiciste <em>VS</em> Le système neuronale</strong></p>



<p>C&rsquo;est en 2010, que l&rsquo;IA fait réellement son entrée dans nos vies du quotidien et dans les différents secteurs d&rsquo;activités.</p>



<p>Pour entrer davantage dans le détail je vous invite à lire la page wikipédia (cf les sources). J&rsquo;ai promis de faire court. 🙂</p>



<h3 class="wp-block-heading">Les modèles d&rsquo;IA</h3>



<p>Les modèles d&rsquo;IA, c&rsquo;est un peu comme un oignon, il y plusieurs couches.</p>



<p>Déjà il est important de dissocier le Machine Learning du Deep Learning.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3440_904b9a-45 kt-accordion-has-2-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3440_b2140d-05"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Machine Learning</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="954" height="252" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_MLearning.jpg" alt="" class="wp-image-3494" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_MLearning.jpg 954w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_MLearning-300x79.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_MLearning-768x203.jpg 768w" sizes="auto, (max-width: 954px) 100vw, 954px" /></figure>
</div>


<p>Le process pourrait se décrire de la manière suivante :</p>



<ul class="wp-block-list">
<li><strong><span style="text-decoration: underline;">Phase 1 :</span></strong> Identifier les mots clés fournit en entrée les plus pertinents afin de préparer ces derniers à être analysé. Nous parlons généralement de datasets.</li>



<li><strong><span style="text-decoration: underline;">Phase 2 :</span></strong> Choisir le bon modèle ou algorithme qui sera le plus pertinent à être utilisé selon l&rsquo;identification des datasets identifiés et analysés.</li>



<li><strong><span style="text-decoration: underline;">Phase 3 :</span></strong> Construire le modèle d&rsquo;analyse basé sur l&rsquo;algorithme choisie lors de l&rsquo;étape précédente.</li>



<li><strong><span style="text-decoration: underline;">Phase 4 :</span></strong> Jouer le modèle sur un ensemble de jeux de données afin d&rsquo;obtenir plusieurs jeux de données.</li>



<li><strong><span style="text-decoration: underline;">Phase 5 :</span></strong> Utiliser le modèle pour attribuer une note à l&rsquo;ensemble des jeux de données retournés et fournier des patterns pertinents adaptés aux datasets initiaux.</li>
</ul>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3440_61862a-a3"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Deep Learning</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="944" height="230" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DLearning.jpg" alt="" class="wp-image-3495" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DLearning.jpg 944w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DLearning-300x73.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DLearning-768x187.jpg 768w" sizes="auto, (max-width: 944px) 100vw, 944px" /></figure>
</div>


<p>Le process pourrait se décrire de la manière suivante :</p>



<ul class="wp-block-list">
<li><strong><span style="text-decoration: underline;">Phase 1 :</span></strong> Comprendre le contexte présenté par l&rsquo;utilisateur et décider ou non si le Deep Learning est nécessaire ou non.</li>



<li><strong><span style="text-decoration: underline;">Phase 2 :</span></strong> Identifier les mots clés fournit en entrée les plus pertinents afin de préparer ces derniers à être analysé. Nous parlons généralement de datasets.</li>



<li><span style="text-decoration: underline;"><strong>Phase 3 :</strong></span> Choisir le bon modèle ou algorithme qui sera le plus pertinent à être utilisé selon l&rsquo;identification des datasets identifiés et analysés.</li>



<li><strong><span style="text-decoration: underline;">Phase 4 :</span></strong> Jouer le modèle sur un ensemble de jeux de données afin d&rsquo;obtenir plusieurs jeux de données.</li>



<li><strong><span style="text-decoration: underline;">Phase 5 :</span></strong> Compare le modèle ainsi que ces performances face aux données existantes identifiés ou non identifiées avec notre contexte initial.</li>
</ul>
</div></div></div>
</div></div></div>



<p></p>



<p>Pour le comprendre au mieux, il convient de reprendre le <strong><em>Diagramm de Venn</em></strong> pour comprendre comment s&rsquo;imbriquent ces différentes notions d&rsquo;apprentissage.</p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><strong>IA :</strong> a pour objectif de comprendre le langage humain, de réaliser les analyses prédictives offrir une IHM<sup data-fn="7ddca2cc-8395-4bb3-9a48-65ef2cbdd525" class="fn"><a href="#7ddca2cc-8395-4bb3-9a48-65ef2cbdd525" id="7ddca2cc-8395-4bb3-9a48-65ef2cbdd525-link">9</a></sup> et AGI<sup data-fn="3da01144-9884-4e50-80b3-cb720fe5d120" class="fn"><a href="#3da01144-9884-4e50-80b3-cb720fe5d120" id="3da01144-9884-4e50-80b3-cb720fe5d120-link">10</a></sup>.<br><br><strong>Machine Learning :</strong> se compose de l&rsquo;apprentissage automatique, la clustérisassions, les arbres décisionnels, le SVM<sup data-fn="6b6187e7-bf8d-4671-888c-ddabe2812f2a" class="fn"><a href="#6b6187e7-bf8d-4671-888c-ddabe2812f2a" id="6b6187e7-bf8d-4671-888c-ddabe2812f2a-link">11</a></sup>, LLM et NLP<sup data-fn="2ccacfdc-8014-4064-9420-0e51ef9e2778" class="fn"><a href="#2ccacfdc-8014-4064-9420-0e51ef9e2778" id="2ccacfdc-8014-4064-9420-0e51ef9e2778-link">12</a></sup>.<br><br><strong>Réseaux Neuronales :</strong> comprend les RAG<sup data-fn="4e84b708-3cbf-4c9d-af94-e19d2cd9d82e" class="fn"><a href="#4e84b708-3cbf-4c9d-af94-e19d2cd9d82e" id="4e84b708-3cbf-4c9d-af94-e19d2cd9d82e-link">13</a></sup> / Finetuning ainsi que les Feed Forward.<br><br><strong>Deep Learning</strong></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="494" class="wp-image-3496" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DiagrammVenn.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DiagrammVenn.jpg 598w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_002_DiagrammVenn-300x269.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p>Bien que rapide dans la présentation, de ce qu&rsquo;est l&rsquo;IA, je pense que nous avons suffisamment d&rsquo;éléments pour aborder les différents types d&rsquo;IA. </p>



<p><em>Toutefois, je suis loin d&rsquo;être spécialiste de l&rsquo;IA et mes connaissances théoriques remontent de mes cours de 2014 et de ce que j&rsquo;ai pu lire et apprendre depuis ces dernières semaines. Je vous invite donc à lire plus en détails son fonctionnement en profondeur.</em></p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3440_aa8e5f-c2 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3440_c6b1c8-9f"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Intelligence Artificielle Réactive</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>C&rsquo;est la forme la plus élémentaire d&rsquo;IA qui se base sur des situations spécifiques limitées par des règles prédéfinies. Le traitement des entrées sont réalisées en temps réel sans prendre en compte les retours précédents afin de ne pas influer sur la décision qui va être retournée.</p>



<p>De par sa simplicité, ce type d&rsquo;IA est efficace dans certains contextes ou rapidité et spontanéité sont nécessaires dans un traitement en temps réel. Et c&rsquo;est ainsi que l&rsquo;on retrouve ce type d&rsquo;IA dans les chatbots.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3440_67b18a-3d"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Intelligence Artificielle Limitée à la Mémoire</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans un sens le grand frère de l&rsquo;IA Réactive, la présence de mémoire permet à l&rsquo;IA d&rsquo;apprendre et d&rsquo;évoluer en prenant compte les retours des entrées précédentes. Pour chaque recherche, le système d&rsquo;IA va consulter sa base de connaissance afin de fournir une réponse la plus fiable possible.</p>



<p>Automatiquement, la qualité de la réponse ainsi que sa fiabilité dépendront du nombre d&rsquo;entrée que cette dernière aura en mémoire et va avoir un certain mal à répondre en temps réel. Nous retrouvons principalement son usage sur les sites e-commerces pour proposer des produits similaires à ceux consultés ou consommés par l&rsquo;utilisateur.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3440_037cc9-55"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Intelligence Artificielle Auto Consciente</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ce type d&rsquo;IA consiste en théorie à insuffler un état de conscience à la machine afin que cette dernière soit une entité à part entière capable de comprendre son propre état.</p>



<p>Naturellement, aujourd&rsquo;hui toujours en recherche, ce type d&rsquo;IA permettrait une autonomie totale de l&rsquo;IA car cela permettrait des facultés d&rsquo;apprentissages, d&rsquo;adaptations et de réflexions incroyable dans les choix décisionnels.</p>



<p>Se pose alors dans les recherches un questionnement éthique et nécessite encore de percer sur le plan humain le fonctionnement de la conscience qui nous habite. </p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3440_690749-ce"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Intelligence Artificielle La théorie de l&rsquo;esprit</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le dernier type, c&rsquo;est vivre dans le turfu. Cela serait d&rsquo;avoir une IA dotée d&rsquo;un esprit. Soit d&rsquo;avoir une IA capable de comprendre et d&rsquo;adapter les émotions, intentions et croyances d&rsquo;autres IA comme de notre environnement. Pour faire simple, une machine qui serait un humain ++.</p>



<p>Le questionnement sur l&rsquo;éthique devient plus important au vu des implications vie privée, consentement etc. Manquerait plus que de finir comme <a href="https://www.youtube.com/watch?v=I8oRqko7OG4">Sarah Connor</a>&#8230; </p>
</div></div></div>
</div></div></div>



<p></p>



<p>Bon allez ça sera tout pour l&rsquo;instant. Regardons de plus prêt Ollama. 🙂</p>



<h3 class="wp-block-heading">Architecture et Best-Pratices</h3>



<p>Ollama étant cross plateform, j&rsquo;ai pris le parti de déployer ce dernier sous RHEL. Donc le guide va suivre dans ce sens. Ce choix est motivé par mes soins pour garder une meilleure maitrise des ressources qui vont être consommées par le système. Pour MacOS, je ne me prononce pas car je n&rsquo;utilise pas ce dernier. Sous Windows, je voyais déjà mon petite dernier faire du rodéo sur l&rsquo;hyperviseur qui gambade dans le couloir au premier prompt soumis&#8230; 🙂</p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Comme énoncé ci-haut, il faut au minimum en ressource :<br>* 4 vCPUs<br>* 16 Gio de RAM<br>* 2 Gio de GPU<br>* Stockage Rapide<br><br>Malheureusement pour moi, je n&rsquo;ai pas les ressources nécessaires, mais cela ne m&#8217;empêchera pas d&rsquo;aller au bout des choses.<br><br>Je propose toutefois de dissocier les modèles et une partie de l&rsquo;architecture OLLAMA sur un disque dédié pour des raisons de performances lors de la soumissions des prompts et ne pas saturer le disque système.<br><br>L&rsquo;accès à l&rsquo;application se fera par des call API<sup data-fn="75955ef0-37da-444b-ba62-3eced558a61a" class="fn"><a href="#75955ef0-37da-444b-ba62-3eced558a61a" id="75955ef0-37da-444b-ba62-3eced558a61a-link">14</a></sup> sur le port <strong>11434/tcp</strong>.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="245" class="wp-image-3503" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_003_arch_bp.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_003_arch_bp.jpg 646w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_003_arch_bp-300x134.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p>Si nous voulions aller plus loin il serait bien de dédié un disque pour les logs et ainsi améliorer les performances.</p>



<p>Niveau sécurité, je suis resté sur mon durcissement classique et divulgâchage alerte ça fonctionne (Jacques TOUBON, le retour aurait été fier de moi pour ce coup-là !).</p>



<p>Je ne vois plus qu&rsquo;un dernier point à aborder et nous pouvons passer à la pratique. Oui comme toute bonne chose, il faut faire durer le plaisir. <strong><em>#sendkisses</em></strong></p>



<h3 class="wp-block-heading">Conséquences de l&rsquo;IA</h3>



<p>L&rsquo;IA est à ce jour (2025) adopté par environ 2/3 de la population mondiale que ce soit à des fins professionnels ou personnels dont environ 73% dans le contexte pro. Ainsi, difficile de nier que l&rsquo;usage particulier et bien au-dessus des institutions organisationnelles.</p>



<p>Comme énoncé bien plus tôt dans cette partie, l&rsquo;usage est principalement à destination des centres de services et à destination des utilisateurs (chatbots, service clients) 60%, l&rsquo;automatisation des ventes et marketings 13%, l&rsquo;optimisation des systèmes IT 9%, l&rsquo;aide à la décision entre 5 et 10% et la production de contenu entre 5 et 10% également. Bien que mes chiffres date de 2023-2024.</p>



<p>Dans son usage concrets, l&rsquo;IA est utilisée à 46% pour la recherche d&rsquo;informations, 43% pour la rédaction de textes et 33% pour de l&rsquo;analyse ou traduction.</p>



<p>Les estimations à venir d&rsquo;ici 2030 seraient un usage de l&rsquo;IA par 80 à 85% de la population mondiale. Cette escalade et course n&rsquo;est pas sans conséquence sur le plan économique et disponibilité des ressources en termes de composants électroniques.</p>



<p>Qui dit plus d&rsquo;usage, dit plus de ressource de calcul et donc plus de composants et plus d&rsquo;énergie. Le système peine à suivre. C&rsquo;est ainsi qu&rsquo;en moyenne, l&rsquo;évolution des couts entre 2024 et 2026 (estimé sur le plan mondial) et de :</p>



<ul class="wp-block-list">
<li>RAM (DDR5) : +170 à +250 %</li>



<li>SSD : +60 à +100 %</li>



<li>GPU : +10 à 25 %</li>



<li>CPU : +0% à +10%</li>
</ul>



<p>Cela entraine donc une hausse des offres Cloud et service SaaS/IaaS/PaaS/BaaS et j&rsquo;en passe ainsi que des couts équipements embarquant ce type de composants. Difficile de faire sans IA de nos jours.</p>



<p>Bon c&rsquo;est promis, passe à la pratique, je ferme la parenthèse que je n&rsquo;ai jamais ouverte.</p>



<h2 class="wp-block-heading">Pratique</h2>



<p>Avant de se lancer dans l&rsquo;installation, si je reprends les prérequis énoncés ci-haut, sachez que :</p>



<ul class="wp-block-list">
<li>Je n&rsquo;ai pas de GPU</li>



<li>Je n&rsquo;ai pas de stockage rapide</li>



<li>Mon hypervisieur est monoprocesseur</li>
</ul>



<p>Tout pour bien fonctionner en somme 🙂</p>



<h3 class="wp-block-heading">Installation</h3>



<p>L&rsquo;installation va se dérouler en 2 parties. Une partie pour installer Ollama, une partie pour l&rsquo;installation des modèles d&rsquo;intelligence artificielle.</p>



<h4 class="wp-block-heading">Ollama</h4>



<h5 class="wp-block-heading">Installation</h5>



<p>La documentation fournit sur le site est simple et claire. Il suffit alors de télécharger et d&rsquo;exécuter le contenu du script install.sh.</p>



<p>Vérifier en amont que le paquet <strong>zstd</strong> est installé sur notre environnement.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-78e91345c70998de458fa9707149535d"><code><strong>$ sudo dnf install zstd</strong></code></pre>



<p>Si nous rentrons plus en détail, les arguments :<br></p>



<ul class="wp-block-list">
<li><strong>-f</strong> : ignore les redirections en cas de retour autre que le code 200 du protocole HTTP<sup data-fn="6ad53fdd-7b83-46bd-8608-5b89bf94b781" class="fn"><a href="#6ad53fdd-7b83-46bd-8608-5b89bf94b781" id="6ad53fdd-7b83-46bd-8608-5b89bf94b781-link">15</a></sup></li>



<li><strong>-s</strong> : supprime la barre de suppression et rend l&rsquo;exécution de la commande silencieuse</li>



<li><strong>-S</strong> : indique les erreurs</li>



<li><strong>-L</strong> : permet de suivre les redirections HTTP</li>
</ul>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-fdc9c501862a41c5e35dd5d3ba3d3a99"><code><strong>$ sudo curl -fsSL https://ollama.com/install.sh | sh</strong></code></pre>



<figure class="wp-block-table is-style-stripes"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-13-color">/!\</mark> Attention : </strong>Il est vivement recommandé en amont avant d&rsquo;exécuter un script téléchargé depuis le net de vérifier son contenu et de lire ce dernier. Question de sécurité. Sinon cela revient encore une fois à s&rsquo;étonner d&rsquo;avoir attrapé <em>une gonorrhée après être allé aux p*tes sans capotes</em>&#8230;<br><br><strong>$ sudo curl -fsSL https://ollama.com/install.sh | cat</strong><br></td></tr></tbody></table></figure>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="262" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_Install_1-1024x262.jpg" alt="" class="wp-image-3453" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_Install_1-1024x262.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_Install_1-300x77.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_Install_1-768x197.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_Install_1.jpg 1246w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>L&rsquo;installation c&rsquo;est bien passée. Toutefois, le script nous informe qu&rsquo;aucun équipement GPU n&rsquo;a été détecter et donc que les calculs seront effectués par notre CPU. Ce qui va donc être plutôt lent dans mon cas personnel.</p>



<h5 class="wp-block-heading">Service au démarrage</h5>



<p>Nous retrouvons une commande maintenant bien connue dans les environnements RHEL. Ainsi à chaque démarrage de notre système notre daemon ollama va être démarré.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-60892f41106e2af5ff1e267db4089e0f"><code><strong>$ sudo systemctl enable ollama</strong></code></pre>



<h5 class="wp-block-heading">Firewalling</h5>



<p>Encore une fois et comme toujours, il est nécessaire d&rsquo;ouvrir le port <strong>11434/tcp</strong> si nous souhaitons joindre l&rsquo;API depuis l&rsquo;extérieur (comprendre hors localhost).</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-87b1a8a000363e2b11cfacb574e43b19"><code><strong>$ sudo firewall-cmd --permanent --add-port=11434/tcp</strong><strong>
$ sudo firewall-cmd --reload</strong></code></pre>



<p>On est d&rsquo;accord que si nous souhaiterions mieux faire en termes de sécurité, il serait plus intelligent de créer la policy suivante :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-7cd1a4145b8e795efe3d5c6a206c573b"><code><strong>$ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.127.50.0/24" port port="11434" protocol="tcp" accept'
$ sudo firewall-cmd --reload</strong></code></pre>



<p>Ayant un UTM<sup data-fn="ff1afc50-05de-4bce-91e3-563ae4b9fe9f" class="fn"><a href="#ff1afc50-05de-4bce-91e3-563ae4b9fe9f" id="ff1afc50-05de-4bce-91e3-563ae4b9fe9f-link">16</a></sup> en amont, je me permets donc de me contenter de la première solution.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="908" height="399" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_FirewallAPI_2.jpg" alt="" class="wp-image-3455" style="aspect-ratio:2.275705027150114;width:587px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_FirewallAPI_2.jpg 908w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_FirewallAPI_2-300x132.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_010_FirewallAPI_2-768x337.jpg 768w" sizes="auto, (max-width: 908px) 100vw, 908px" /></figure>
</div>


<h5 class="wp-block-heading">HTTP ou HTTPS ?</h5>



<p class="has-text-align-center"><strong>Un doute m&rsquo;habite&#8230; Le port 11434/tcp, ça ne serait pas du http ?</strong></p>



<p>Bien vu l&rsquo;aveugle ! Effectivement et niveau sécurité c&rsquo;est pas super, il faudrait mieux user du protocole https. Pour ça, j&rsquo;ai une solution passons par un reverse proxy 🙂</p>



<p>Je suis partagé quant à la rédaction de cette sous partie. Oui il est important de sécuriser l’accès à l’interface Web, mais j’ai peur d’être hors sujet et d’alourdir l’article. Mais d’un autre côté, je ne veux pas non plus bâcler la chose… Encore un pu**n de choix cornélien…</p>



<p>Bref, je vais faire au plus simple et si besoin écrirai un billet sur Nginx.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3440_5739eb-e1 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3440_2c1931-a6"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Installation</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L’installation et activation du service, je passe mon tour.</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-2d96c8f801e10588d862a20dfe6ac0cb"><code><strong>$ sudo dnf install nginx
$ sudo systemctl enable nginx
$ sudo systemctl start nginx</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="939" height="450" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0.jpg" alt="" class="wp-image-3573" style="aspect-ratio:2.086739469578783;width:317px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0.jpg 939w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0-300x144.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_0-768x368.jpg 768w" sizes="auto, (max-width: 939px) 100vw, 939px" /></figure>
</div>

<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="938" height="83" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1.jpg" alt="" class="wp-image-3572" style="aspect-ratio:11.302070130967468;width:339px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1.jpg 938w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1-300x27.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_015_020_nginx_1-768x68.jpg 768w" sizes="auto, (max-width: 938px) 100vw, 938px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3440_a9caf1-43"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Certificats</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Là encore une fois je rencontre un petit problème. Je n’ai pas de certificat public que je pourrais utiliser, ma topologie réseau ne me permet pas d’utiliser un certificat Let’s Encrypt et sans vouloir spoiler je n’ai pas envie de me prendre la tête. Donc ça va finir avec un bon vieux certificat autosigné 🙂</p>



<p>La génération n’est pas bien compliquée et si besoin, j’ai déjà rédigé&nbsp;<a href="https://erwanguillemard.com/linux-certificats/">un article</a>&nbsp;sur le sujet.</p>



<p>Créons le répertoire qui va contenir nos éléments de sécurité :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-16d3dda1539c5bf2a831ca2965909c37"><code><strong>$ sudo mkdir -p /etc/nginx/ssl</strong></code></pre>



<p>Générons notre certificat :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d734dc3e16717cda0e24e481dbf0df76"><code><strong>$ sudo openssl req req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout /etc/nginx/ssl/ollama.key \
-out /etc/nginx/ssl/ollama.crt</strong></code></pre>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3440_01a91a-c2"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Configuration</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Créons et éditons notre fichier de configuration. Je prendrai le temps d’expliquer l’intégralité du fichier de configuration.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-9bc0a5fa80b33bf1ad1ef6a3d6a46601"><code><strong>$ sudo vim /etc/nginx/conf.d/ollama.conf</strong></code></pre>



<pre class="wp-block-code"><code>#server {
#    listen 80;
#    server_name 10.227.250.11;
#
#    return 301 https://$host$request_uri;
#}

server {
    listen 11444 ssl;
    http2 on;
    server_name 10.227.250.11;

    ssl_certificate /etc/nginx/ssl/ollama.crt;
    ssl_certificate_key /etc/nginx/ssl/ollama.key;

    # TLS sécurisé
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;

    # sécurité headers
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # taille upload
    client_max_body_size 100M;

    # compression
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;

    location / {

        proxy_pass http://10.227.250.11:11434;

        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffering off;

        proxy_read_timeout 3600;
        proxy_send_timeout 3600;
    }
}</code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>La première section permet de réaliser la redirection du protocole HTTP vers HTTPS de manière permanente. Ainsi si je contacte l’url http://10.227.250.11, je serais automatiquement redirigé vers https://10.227.254.11.<br>Toutefois, la section est commentée car elle entre en conflit avec une autre configuration d&rsquo;un billet à venir 😉</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="324" height="148" class="wp-image-3737" style="width: 324px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_0.jpg 349w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_0-300x137.jpg 300w" sizes="auto, (max-width: 324px) 100vw, 324px" /></td></tr><tr><td>Le second bloc indique que nous écoutons sur le port 11444 sur l’interface 10.227.250.11. L’emplacement des fichiers contenant la clé privée ainsi que le certificat sont spécifiés pour activer la couche de sécurité (j’ai l’impression d’enfoncer des portes ouvertes…). J’indique qu’elles sont les versions des protocoles TLS<sup><a href="https://erwanguillemard.com/?p=3520&amp;preview=true#1a3ccfdd-7fad-428c-9f9a-15401188579d">17</a></sup>&nbsp;autorisées et laisse le serveur choisir le chiffrement le plus sûr.<br>Côté en-tête, j’ai repris les suggestions de sécurité implémentée pour ITOP. Soit la restriction de mettre le site en iframe externe, de restreindre le navigateur à deviner le tye MIME qui est utilisé et surtout d’activer la protection anti-cross-site scripting. Niveau upload, j’ai vu large et j’ai autorisé le téléversement de fichier de 100 Mio.<br>Côté performance, j’ai activé la compression des flux pour optimiser un peu les performances réseaux.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="457" class="wp-image-3738" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_1.jpg 663w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_1-300x249.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr><tr><td>Le troisième bloc concerne la partie Reverse Proxy.<br>Toutes les requêtes qui sont envoyées sur https://10.227.250.11 sont redirigées vers le port 11434.<br>Concernant les en-têtes il est nécessaire d’utiliser les websockets car seront transmis l’ip du client, le protocole utilisé et le NDD<sup><a href="https://erwanguillemard.com/?p=3520&amp;preview=true#6f19f21f-54c7-433f-8a76-3c3d830f4eda">18</a></sup>&nbsp;ou l’IP demandé.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="368" class="wp-image-3739" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_2.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_2.jpg 533w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_2-300x201.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p>Une fois la configuration faite, il est important de réaliser un petit contrôle de notre petit fichier afin de s’assurer que ce dernier ne comporte pas d’erreur.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-c0a5cd62be5632132cc71ae703da0130"><code><strong>$ sudo nginx -t 
$ sudo systemctl restart nginx</strong></code></pre>



<p>Tiens une erreur 🙂 Regardons ça dans la partie suivante&#8230;</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3440_aa7045-77"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Sécurité</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous souhaitons toujours publier notre interface web en HTTPS. Donc il va falloir jouer avec nos UTMs !</p>



<p>Sur le plan interne, autorisons nos flux https :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-82f39b4be835c163c84ee4674bd33142"><code><strong>$ sudo firewall-cmd --permanent --add-port=11444/tcp
$ sudo firewall-cmd --reload</strong></code></pre>



<p>Toutefois lors de la relance du service on se tape une bonne grosse erreur. C&rsquo;est lié au SELinux. Nginx n&rsquo;est pas autorisé par le SELinux a écouter sur le port 11444. Donc il faut l&rsquo;autoriser.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-7d61726b3583615abe3b3620597d056f"><code><strong>#Install semanage
$ sudo dnf install policycoreutils-python-utils

#Ajout du port comme autorisé à l'écoute
$ sudo semanage port -a -t http_port_t -p tcp 11444</strong>

<strong>#Relance du service nginx</strong>
<strong>$ sudo systemctl restart nginx</strong></code></pre>



<p>Normalement nous ne devons plus avoir d&rsquo;erreur. Toutefois si nous essayons de joindre l&rsquo;url <strong>https://egapl-ollama-01:11444</strong> nous devons avoir un jolie 502 Bad Gateway dans notre navigateur 😀</p>



<p>Ca vous fait la b**e hein ? Je vous rassure je me suis pris la même rouste. J’ai oublié d’autoriser le contexte de mon SELinux pour autoriser les services http à accéder aux réseaux 😀</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-a7c965cb0ad20254d3dd67e1b9cd6ce2"><code><strong>$ sudo setsebool -P httpd_can_network_connect 1</strong></code></pre>



<p>Un petit F5 et hop c’est tout bon &lt;3</p>



<p></p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Normalement avec toutes nos actions, nous devons joindre notre interface web depuis un navigateur de manière sécurisée (hormis l’erreur liée à notre certificat autosigné).</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="257" class="wp-image-3740" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_3.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_3.jpg 1098w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_3-300x140.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_3-1024x478.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_035_nginx_3-768x359.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>
</div></div></div>



<h5 class="wp-block-heading">Emplacement des modèles</h5>



<p>Lors de ce benchmark, j&rsquo;ai été confronté à un problème d&rsquo;espace disque lié aux modèles. Effectivement, les modèles sont au minimum supérieur à 3 Gio. Et c&rsquo;est là que c&rsquo;est le drame car « pouf » je me tape un message d&rsquo;erreur&#8230;</p>



<p>La solution est donc de déplacer le répertoire de modèle vers un autre disque. J&rsquo;ai vu large, j&rsquo;ai provisionné 100 Gio. Je pars du principe que le disque est monté et formaté.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-36428a3107c846deceb061ab8803f4e9"><code><strong>$ sudo chown -R ollama:ollama /mnt/ollama</strong></code></pre>



<p>Le changement de l&#8217;emplacement du répertoire du modèle va se faire par surcharge du service qui démarre Ollama. Naturellement, on ne modifie pas le service de base car les changements ne seront pas persistants. D&rsquo;où la surcharge&#8230;</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-7441047b0f606bc5e946cd75efce1071"><code><strong>$ sudo mkdir /etc/systemd/system/ollama.service.d
$ sudo vim /etc/systemd/system/ollama.service.d/override.conf</strong></code></pre>



<pre class="wp-block-code"><code><strong>&#91;Service]
Environment="OLLAMA_DEBUG=1"
Environment="OLLAMA_MODELS=/mnt/ollama/ollama-models"
Environment="OLLAMA_HOST=0.0.0.0"</strong>
</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="590" height="102" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_2.jpg" alt="" class="wp-image-3456" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_2.jpg 590w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_2-300x52.jpg 300w" sizes="auto, (max-width: 590px) 100vw, 590px" /></figure>
</div>


<p>Notons que le mode <strong>Debug</strong> est actif et que le chemin de nos modèles est défini. J&rsquo;ai également défini la variable <strong>OLLAMA_HOST</strong> qui va nous permettre de joindre notre application depuis une source externe à notre machine.</p>



<p>Il convient alors de recharger, forcer le gestionnaire de services à recharger l&rsquo;ensemble de ses configurations. Dans un second temps nous redémarrerons le daemon ollama afin de prendre en considération les changements présents dans notre fichier de surcharge. Par mesure de sécurité (car la confiance n&rsquo;exclut pas le contrôle) j&rsquo;aime à vérifier que le service est bien actif.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-e4dd388e47a00051adc0be7943572985"><code><strong>$ sudo systemctl daemon-reload
$ sudo systemctl restart ollama
$ sudo systemctl status ollama
$ sudo ls -al /mnt/ollama/ollama-models/</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="438" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_4-1024x438.jpg" alt="" class="wp-image-3457" style="aspect-ratio:2.3379521324455643;width:566px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_4-1024x438.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_4-300x128.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_4-768x328.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_4.jpg 1128w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Dans les sources, nous pouvons constater la présence de nos variables surcharger. Néanmoins nous pouvons afficher le contenu de notre répertoire cible pour les modèles afin de vérifier que l&rsquo;arborescence est bien présente.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="654" height="130" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_3.jpg" alt="" class="wp-image-3458" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_3.jpg 654w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_changeModelLocation_3-300x60.jpg 300w" sizes="auto, (max-width: 654px) 100vw, 654px" /></figure>
</div>


<h4 class="wp-block-heading">Installer des modèles</h4>



<p>J&rsquo;ai fait le parti car c&rsquo;est « un peu » l&rsquo;objectif de base de ce billet d&rsquo;avoir des modèles locaux qui vont être utilisés. Je ne souhaite pas utiliser des connexions avec des sources externes afin de garder un contrôle sur mes recherches et usage.</p>



<p>J&rsquo;ai fait le choix d&rsquo;étudier 4 modèles LLM :</p>



<ul class="wp-block-list">
<li>Llama3</li>



<li>Qwen</li>



<li>Mistral</li>



<li>DeepSeek-Coder</li>
</ul>



<p>Je propose dans un premier temps de faire un comparatif de ces modèles.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Critères</strong></td><td class="has-text-align-center" data-align="center"><strong>Llama 3</strong></td><td class="has-text-align-center" data-align="center"><strong>Qwen</strong></td><td class="has-text-align-center" data-align="center"><strong>Mistral</strong></td><td class="has-text-align-center" data-align="center"><strong>DeepSeek-Coder</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Editeur</strong></td><td class="has-text-align-center" data-align="center">Meta</td><td class="has-text-align-center" data-align="center">Alibaba</td><td class="has-text-align-center" data-align="center">Mistral AI</td><td class="has-text-align-center" data-align="center">DeepSeek</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Type</strong></td><td class="has-text-align-center" data-align="center">Généraliste</td><td class="has-text-align-center" data-align="center">Généraliste</td><td class="has-text-align-center" data-align="center">Généraliste</td><td class="has-text-align-center" data-align="center">Spé code</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Usage</strong></td><td class="has-text-align-center" data-align="center">Populaire</td><td class="has-text-align-center" data-align="center">Bon</td><td class="has-text-align-center" data-align="center">Rapide</td><td class="has-text-align-center" data-align="center">IDE / Dev</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Licence</strong></td><td class="has-text-align-center" data-align="center">Llama Community Licence</td><td class="has-text-align-center" data-align="center">Apache 2.0</td><td class="has-text-align-center" data-align="center">Apache 2.0</td><td class="has-text-align-center" data-align="center">Licence DeepSeek</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Dataset</strong></td><td class="has-text-align-center" data-align="center">Texte/Code/Web</td><td class="has-text-align-center" data-align="center">Multilingue web</td><td class="has-text-align-center" data-align="center">Web + Données filtrées</td><td class="has-text-align-center" data-align="center">~ 90% de code</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Avantages</strong></td><td class="has-text-align-center" data-align="center">Raisonnement et coding</td><td class="has-text-align-center" data-align="center">Multilingue et contextuel</td><td class="has-text-align-center" data-align="center">Rapide et faible consommateur de ressources</td><td class="has-text-align-center" data-align="center">Bon pour du code</td></tr></tbody></table></figure>



<p></p>



<p>Avec ce tableau, je pense que nous avons un bon récapitulatif. Toutefois et pour les curieux il existe une centaine de modèles compatible avec Ollama (<a href="https://ollama.com/library">Lien</a>). J&rsquo;ai fait mon choix, à vous de faire le vôtre. Vous êtes des grands garçons et des grandes filles hein ? <strong>#bisous</strong></p>



<p>L&rsquo;installation pour les modèles choisies, suivent tous la même logique. Pas de quoi épiloguer pendant 107 ans&#8230;.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3440_be8f6d-58 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3440_b83fad-d4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Llama3</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-aedd1dbc85193c1613782e53b2c9aa59"><code><strong>$ sudo ollama pull llama3</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="131" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2-1024x131.jpg" alt="" class="wp-image-3463" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2-1024x131.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2-300x38.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2-768x98.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2-1536x196.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_022_llama3_2.jpg 1628w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3440_6c3ae4-79"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Qwen</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-7168c5d58178d30c4ae7c3365a17f021"><code><strong>$ sudo ollama pull qwen</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="682" height="1024" src="https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-682x1024.jpg" alt="" class="wp-image-1498" style="aspect-ratio:0.666023595755732;width:189px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-682x1024.jpg 682w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-200x300.jpg 200w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-768x1152.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-1024x1536.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-1365x2048.jpg 1365w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_000_resultjoker-scaled.jpg 1706w" sizes="auto, (max-width: 682px) 100vw, 682px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3440_a52c29-5b"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Mistral</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-0616d88d832c9cd4c70a69e1b69bb399"><code><strong>$ sudo ollama pull mistral</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="134" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0-1024x134.jpg" alt="" class="wp-image-3464" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0-1024x134.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0-300x39.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0-768x100.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0-1536x200.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_023_mistral_0.jpg 1626w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3440_b7432f-bf"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>DeepSeek-Coder</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-8e5f43649767beaca209d6420f5b9c1d"><code><strong>$ sudo ollama pull deepseek-coder:6.7b</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="662" height="208" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_024_deepseeker-67b_0.jpg" alt="" class="wp-image-3465" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_024_deepseeker-67b_0.jpg 662w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_024_deepseeker-67b_0-300x94.jpg 300w" sizes="auto, (max-width: 662px) 100vw, 662px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>Pour voir l&rsquo;ensemble des modèles il est possible de lister ces derniers grâce à la commande suivante :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-a54c69346022b88f8f0ca96534eb976b"><code><strong>$ sudo ollama list</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="701" height="107" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_ListModel_4.jpg" alt="" class="wp-image-3466" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_ListModel_4.jpg 701w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_012_ListModel_4-300x46.jpg 300w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>
</div>


<h3 class="wp-block-heading">Démarrage de Ollama</h3>



<p>Maintenant que tout est fonctionnel, démarrons Ollama et c&rsquo;est parti pour un périple des possibles comme <a href="https://fr.wikipedia.org/wiki/Sept_Ans_d%27aventures_au_Tibet#:~:text=L'alpiniste%2C%20explorateur%20et%20%C3%A9crivain,la%20souverainet%C3%A9%20de%20la%20Chine.">Heinrich Harrer à l&rsquo;assaut du Nanga Parbat</a> (l&rsquo;élévation n&rsquo;étant pas celle que l&rsquo;on croit 🙂 ).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_7years-1024x768.jpg" alt="" class="wp-image-3468" style="width:411px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_7years-1024x768.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_7years-300x225.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_7years-768x576.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_001_7years.jpg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color has-small-font-size wp-elements-fecbb2e3da5b233b288694433aba6622"><code><strong>$ ollama</strong></code></pre>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>Dans le menu qui s&rsquo;offre à nous, la première option permet de démarrer, lancer un de nos modèles localement.<br><br>Toutefois, en dessous de cette première option de navigation, nous retrouvons la possibilité d&rsquo;établir des connexions externes vers des moteurs en ligne tel que :<br><br>* Claude Code<br>* Codex<br>* OpenClaw<br>* Droid<br>* Pi<br>* Cline<br><br>Si vous possédez un compte, vous pouvez réaliser la jonction, mais alors à quoi bon avoir un moteur d&rsquo;IA interne ?</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="650" height="649" class="wp-image-3467" style="width: 650px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_011_Run_2.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_011_Run_2.jpg 612w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_011_Run_2-300x300.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_011_Run_2-150x150.jpg 150w" sizes="auto, (max-width: 650px) 100vw, 650px" /></td></tr></tbody></table></figure>



<p></p>



<p>Si nous cliquons sur le premier choix, il nous est alors demandé de choisir un modèle. Il est possible de télécharger un modèle directement depuis ce menu ou de choisir un modèle précédemment installé tout en bas de cette interface.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="821" height="279" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_021_model_0.jpg" alt="" class="wp-image-3469" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_021_model_0.jpg 821w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_021_model_0-300x102.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_021_model_0-768x261.jpg 768w" sizes="auto, (max-width: 821px) 100vw, 821px" /></figure>
</div>


<h2 class="wp-block-heading">Tests</h2>



<p>Et si on se lançais un petit benchmark de nos 4 modèles pour voir le fonctionnement ? 🙂</p>



<p>Amusons-nous tel un <a href="https://www.youtube.com/watch?v=vxx-ZQBHXIA">lamastico</a> &lt;3</p>



<p>Pour le test, j&rsquo;ai décidé de partir sur quelque chose de simple et ISO sinon cela ne sert strictement à rien.</p>



<p>La question sera : </p>



<p class="has-text-align-center"><strong>Peux-tu évaluer et me proposer une version plus robuste de cette fonction powershell s&rsquo;il te plait ? [Suivie d&rsquo;une petite fonction maison qui peut être amélioré]</strong></p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3440_c4efb1-bc kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3440_c9a31d-08"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Llama</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td><img loading="lazy" decoding="async" width="550" height="930" class="wp-image-3479" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_prompt_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_prompt_1.jpg 639w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_prompt_1-178x300.jpg 178w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_prompt_1-606x1024.jpg 606w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td><img loading="lazy" decoding="async" width="550" height="93" class="wp-image-3478" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_performance_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_performance_0.jpg 895w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_performance_0-300x51.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_030_test-llama3_performance_0-768x130.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3440_e891f6-13"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Qwen</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<figure class="wp-block-table aligncenter"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><img loading="lazy" decoding="async" width="550" height="1314" class="wp-image-3477" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_1.jpg 636w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_1-126x300.jpg 126w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_1-428x1024.jpg 428w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td><img loading="lazy" decoding="async" width="550" height="92" class="wp-image-3476" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_0.jpg 894w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_0-300x50.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_performance_0-768x128.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p>J&rsquo;ai du tronquer la partie de la réponse en anglais car cela aurait pris énormément d&rsquo;espace. Toutefois la réponse retournée est plus que satisfaisante pour celui qui sait parler la langue de Shakespeare</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3440_3d6aef-62"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>Mistral</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<figure class="wp-block-table aligncenter"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><img loading="lazy" decoding="async" width="550" height="643" class="wp-image-3473" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_1.jpg 973w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_1-257x300.jpg 257w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_1-876x1024.jpg 876w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_1-768x898.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td><img loading="lazy" decoding="async" width="550" height="94" class="wp-image-3474" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_0.jpg 905w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_0-300x51.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_031_test-mistral_performance_0-768x132.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3440_8f5a74-34"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>DeepSeek-Coder</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<figure class="wp-block-table aligncenter"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><img loading="lazy" decoding="async" width="550" height="969" class="wp-image-3471" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_1.jpg 752w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_1-170x300.jpg 170w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_1-581x1024.jpg 581w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td><img loading="lazy" decoding="async" width="550" height="96" class="wp-image-3472" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_0.jpg 901w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_0-300x53.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_032_test-deepseeker_performance_0-768x135.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>
</div></div></div>



<p></p>



<p>Je pense que cela est évident en termes de conclusions. Pour 1 prompt identique, nous avons quartes réponses différentes et un point commun. Si certains modèles mettent plus de temps de réponse il est indéniablement contestable que ça chauffe niveau calcul. Dans certains cas, j&rsquo;aime même du SWAP ! Bref, côté consommation électrique, ça consomme&#8230; Mais bon je m&rsquo;y attendais ce n&rsquo;est pas <a href="https://www.youtube.com/watch?v=oY_paPRS3p8">la première fois que je fais des étincelles avec ma b*te</a>&#8230;</p>



<p>Plus sérieusement, je sais quitte à me répéter ou pas ce que je dois faire pour améliorer ma fonction. Et je suis un peu déçu du résultat. Néanmoins en modifiant légèrement le prompt, en précisant :</p>



<p class="has-text-align-center"><strong>Peux-tu évaluer et me proposer une version plus robuste, sécurisé de cette fonction powershell s&rsquo;il te plait comme si tu étais un développeur sénior avec un regard plus critique et sévère ? [Suivie d&rsquo;une petite fonction maison qui peut être amélioré]</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Résultat Prompt initial</strong><br>(qwen)</td><td class="has-text-align-center" data-align="center"><strong>Résultat Prompt plus précis</strong><br>(qwen)</td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="519" class="wp-image-3511" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_2.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_2.jpg 935w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_2-300x283.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_2-768x724.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="579" class="wp-image-3512" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_3.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_3.jpg 839w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_3-285x300.jpg 285w, https://erwanguillemard.com/wp-content/uploads/2026/03/AP_014_033_test-qwen_codeonly_3-768x808.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p class="has-text-align-center has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-ff0d0b786a66ea48aaeb04a91218bde4"><mark style="background-color:rgba(0, 0, 0, 0);color:#fd0000" class="has-inline-color"><strong>/!\</strong></mark> <strong>Attention :</strong> J&rsquo;ai volontairement gardé que la suggestion de la fonction et non le blabla d&rsquo;en-tête qui explique tout ce qui va être appliqué.</p>



<p>Encore une fois pas de magie, il suffit de bien rédiger son prompt et là j&rsquo;obtiens un retour plus précis à mes attentes.</p>



<p>Si je résume la situation sur le test à iso périmètre selon le contexte :</p>



<ul class="wp-block-list">
<li>RAM : 8 Go</li>



<li>vCPU : 4</li>



<li>Processeur Physique : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz (Mono)</li>



<li>Contexte : Coding</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Durée des réponses</strong></td><td class="has-text-align-center" data-align="center"><strong>Qualité des réponses</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="365" class="wp-image-3696" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_0.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_0.jpg 482w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_0-300x199.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="374" class="wp-image-3695" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_1.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_1.jpg 481w, https://erwanguillemard.com/wp-content/uploads/2026/04/AP_014_034_performance_1-300x204.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p>En conclusion Qwen est de loin celui qui met le plus de temps à délivrer la réponse. Cela s&rsquo;explique par une explication plus poussée ce qui prends un certain temps à l&rsquo;affichage. Cependant la qualité de la réponse retournée est de loin supérieur aux trois autres LLMs.</p>



<p>Il serait intéressant de pousser la comparaison sur un prompt de réflexion pur.</p>



<p>De tous les tests de modèles (du moins sur les quatre déployés) c&rsquo;est qwen qui me convient le mieux. Néanmoins tout dépendra encore une fois du contexte et de ce que je souhaite réaliser avec l&rsquo;IA.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Je suis plutôt satisfait bien que sans répondre aux prérequis il faut savoir s&rsquo;armer de patiente. Dans l&rsquo;ensemble Ollama est une bonne solution mais cette dernière doit être utilisé avec un certain contrôle selon les LLMs que l&rsquo;on pourrait être amené à utiliser. Naturellement le retour de prompt vient de la qualité de celui que l&rsquo;utilisateur aura exprimé.</p>



<p>De ce fait, Ollama ne garantit pas une fiabilité aussi conséquente que les géants du Cloud. Toutefois il permet d&rsquo;assurer la confidentialité, sécurité des données localement et de nos recherches contrairement aux outils en ligne.</p>



<p>Ce qui pourrait toutefois rebuter son usage serait de passer par l&rsquo;interface CLI dans le terminal. Effectivement c&rsquo;est loin d&rsquo;être ergonomique pour un usage quotidien d&rsquo;un utilisateur n&rsquo;ayant pas d&rsquo;expérience dans ce domaine. Mais il existe toutefois des alternatives à cette problématique par des outils intermédiaires qui viennent se placer entre l&rsquo;utilisateur et Ollama. Ce sujet sera abordé dans un prochain billet.</p>



<p class="has-text-align-center"><strong><em>Initialement, je souhaitais aborder le sujet dans ce billet mais cela aurait été trop indigeste. Donc j&rsquo;ai CUT comme on dit dans notre milieu 🙂</em></strong></p>



<p>Ollama fournissant une documentation riche et simple il sera alors possible de jouer avec son API. Vous me connaissez avec le temps, s&rsquo;il y a une documentation, une API&#8230; Que vais-je bien pouvoir faire avec le framework .NET et Powershell ? 🙂 L&rsquo;objectif serait de proposer par exemple un petit client de bureau Windows pour les utilisateurs. Il serait également possible de mettre en place des passerelles d&rsquo;automatisation inter applicatives intelligente comme <strong>L&rsquo;ouverture d&rsquo;un incident sur un event VEEAMOne dans ITOP</strong> ou <strong>une fonction de contrôle de code depuis PowerShell ISE</strong> par exemple.</p>



<p>Cette étude m&rsquo;ouvre un nombre de porte considérable en guise de projet et de sujet d&rsquo;étude et ce malgré les contraintes matérielles. Est-ce que je vais utiliser longtemps la solution, je ne pense honnêtement pas car cette dernière est assez énergivore pour mon petit lab et je ne travaille pas chez EDF ni n&rsquo;habite Versailles. Mais cela peut (pour ne pas dire m&rsquo;a) réconcilié avec l&rsquo;utilisation de l&rsquo;IA. <em>Comme quoi il n&rsquo;y a que les cons qui ne changent pas d&rsquo;avis et nous sommes tous le con d&rsquo;un autre</em>.</p>



<p> Le mot de la fin :</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>J&rsquo;ai cherché votre nom sur Ollama ? Comme ça vous êtes triple champion du monde de descente de Guiness catégorie galopin ? </em></p>



<p><em>Vous devez faire erreur avec une autre personne, je suis un DC10 fantôme sortant d&rsquo;une tempête codéinée. </em></p>



<p><em>Milles excuses M&rsquo;sieur Ollama.</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.larousse.fr/dictionnaires/francais/robot/69647">Définition Larousse</a></li>



<li><a href="https://fr.wikipedia.org/wiki/Intelligence_artificielle">Wikipédia : IA</a></li>



<li><a href="https://www.data-bird.co/blog/types-ia">DataBird : Type d&rsquo;IA</a></li>



<li><a href="https://docs.ollama.com/">Ollama : Documentation</a></li>



<li><a href="https://ollama.com/download">Ollama : Téléchargement</a></li>



<li><a href="https://ollama.com/library">Ollama : Bibliothèque de modèle</a></li>



<li><a href="https://docs.openwebui.com/getting-started/quick-start">OpenWebUI : Documentation</a></li>



<li><a href="https://docs.openwebui.com/getting-started/quick-start/connect-a-provider/starting-with-ollama/">OpenWebUI : Intégration Ollama</a></li>



<li><a href="https://telnyx.com/llm-library/deepseek-coder-6-7b-instruct">Comparatif : Modèles performances</a></li>



<li><a href="https://localaimaster.com/blog/best-local-ai-models-2025-complete-guide">Comparatif : Modèles usages</a></li>



<li><a href="https://www.daf-mag.fr/Thematique/gestion-risque-1241/cyber-climat-2123/Breves/ia-usages-confiance-pierre-angulaire-adoption-durable-480929.htm">Usage de l&rsquo;IA : DAFMag</a></li>



<li><a href="https://lehub.bpifrance.fr/les-chiffres-2023-2024-du-marche-de-lia-dans-le-monde/">Répartition de l&rsquo;usage : BPIFrance</a></li>



<li><a href="https://www.lemonde.fr/emploi/article/2025/04/11/53-des-actifs-utilisent-l-ia-dans-leur-vie-professionnelle_6594046_1698637.html">Usage de l&rsquo;IA : LeMonde</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="cfefe833-a7a4-4019-87c1-c684487526cf"><strong>IA :</strong> Intelligence Artificielle <a href="#cfefe833-a7a4-4019-87c1-c684487526cf-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="aadcbef0-7f66-4bcf-bdef-699e3c85609a">L&rsquo;erreur est humaine, persévérer diabolique <a href="#aadcbef0-7f66-4bcf-bdef-699e3c85609a-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="b41451ff-b3b4-4f38-bb68-9645125a745a"><strong>CGU :</strong> Conditions Générales d&rsquo;Utilisations <a href="#b41451ff-b3b4-4f38-bb68-9645125a745a-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="1aad26f0-eec5-4a0f-8e20-fdd248a35c69"><strong>LLM :</strong> Large Language Models  <a href="#1aad26f0-eec5-4a0f-8e20-fdd248a35c69-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="fdf3a5b9-4253-464d-a09e-8fb86b58314e"><strong>GPU :</strong> Graphics Processing Unit  <a href="#fdf3a5b9-4253-464d-a09e-8fb86b58314e-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="73029218-b1cc-46cd-b970-647ebf9d8979"><strong>CPU :</strong> Central Processing Unit <a href="#73029218-b1cc-46cd-b970-647ebf9d8979-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="a37422d2-85b9-4b20-aaed-ed832709d897"><strong>SSD :</strong> Solid State Drive <a href="#a37422d2-85b9-4b20-aaed-ed832709d897-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="551f4327-d659-4f5e-aa79-e901800f9a6f"><strong>DARPA :</strong> Defense Advanced Research Projects Agency <a href="#551f4327-d659-4f5e-aa79-e901800f9a6f-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="7ddca2cc-8395-4bb3-9a48-65ef2cbdd525"><strong>IHM :</strong> Interface Homme Machine <a href="#7ddca2cc-8395-4bb3-9a48-65ef2cbdd525-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="3da01144-9884-4e50-80b3-cb720fe5d120"><strong>AGI :</strong> Artificial General Intelligence <a href="#3da01144-9884-4e50-80b3-cb720fe5d120-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="6b6187e7-bf8d-4671-888c-ddabe2812f2a"><strong>SVM :</strong> Support Vector Machine <a href="#6b6187e7-bf8d-4671-888c-ddabe2812f2a-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li><li id="2ccacfdc-8014-4064-9420-0e51ef9e2778"><strong>NLP :</strong> Natural Language Processing <a href="#2ccacfdc-8014-4064-9420-0e51ef9e2778-link" aria-label="Aller à la note de bas de page 12">↩︎</a></li><li id="4e84b708-3cbf-4c9d-af94-e19d2cd9d82e"><strong>RAG :</strong> Retrieval Augmented Generation <a href="#4e84b708-3cbf-4c9d-af94-e19d2cd9d82e-link" aria-label="Aller à la note de bas de page 13">↩︎</a></li><li id="75955ef0-37da-444b-ba62-3eced558a61a"><strong>API :</strong> Application Programming Interface <a href="#75955ef0-37da-444b-ba62-3eced558a61a-link" aria-label="Aller à la note de bas de page 14">↩︎</a></li><li id="6ad53fdd-7b83-46bd-8608-5b89bf94b781"><strong>HTTP :</strong> Hypertext Transfer Protocol <a href="#6ad53fdd-7b83-46bd-8608-5b89bf94b781-link" aria-label="Aller à la note de bas de page 15">↩︎</a></li><li id="ff1afc50-05de-4bce-91e3-563ae4b9fe9f"><strong>UTM :</strong> Unified Threat Management <a href="#ff1afc50-05de-4bce-91e3-563ae4b9fe9f-link" aria-label="Aller à la note de bas de page 16">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PROJET &#8211; Linux Partitions Calculator</title>
		<link>https://erwanguillemard.com/projet-linux-partitions-calculator/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sat, 11 Apr 2026 13:55:29 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Projet]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=3409</guid>

					<description><![CDATA[Je ne pensais pas en venir un jour à rédiger un article sur cette thématique. Pourtant force est de constater que je me suis fait encore une fois ch*er la bi*e (passez-moi l&#8217;expression) à déployer une machine linux. Je rassure le lecteur qui s&#8217;est égaré ici, ce billet va être simple. Bref, j&#8217;ai la problématique...]]></description>
										<content:encoded><![CDATA[
<p>Je ne pensais pas en venir un jour à rédiger un article sur cette thématique. Pourtant force est de constater que je me suis fait encore une fois ch*er la bi*e (passez-moi l&rsquo;expression) à déployer une machine linux.</p>



<p>Je rassure le lecteur qui s&rsquo;est égaré ici, ce billet va être simple.</p>



<p>Bref, j&rsquo;ai la problématique suivante, lorsque je déploie une nouvelle machine Linux (RHEL<sup data-fn="d0cf7aef-1d32-469c-80aa-165e012513eb" class="fn"><a href="#d0cf7aef-1d32-469c-80aa-165e012513eb" id="d0cf7aef-1d32-469c-80aa-165e012513eb-link">1</a></sup> ou Debian) je suis le guide d&rsquo;hygiène et sécurité de l&rsquo;ANSSI<sup data-fn="0a4dc23e-e493-4f49-8cdf-9a361464e536" class="fn"><a href="#0a4dc23e-e493-4f49-8cdf-9a361464e536" id="0a4dc23e-e493-4f49-8cdf-9a361464e536-link">2</a></sup>. Ce qui se traduit par le partitionnement strict des points de montage système et de données. Sauf que lorsque la taille de notre disque varie, difficile de définir de tête quelle volumétrie doit être provisionnée pour chaque partition&#8230;</p>



<p>C&rsquo;est donc là que j&rsquo;ai pris un coup de sang.</p>



<p class="has-text-align-center">En voiture Simone, c&rsquo;est parti !</p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Je ne vais pas rentrer dans le détail du code qui compose mon application, ce n&rsquo;est pas l&rsquo;objectif. Si l&rsquo;on souhaite comprendre ce dernier, un peu de réverse engineering et le tour est joué (surtout que j&rsquo;ai commenté le code).</p>



<p>Je n&rsquo;aborderai pas non plus la partie de durcissement des systèmes GNU Linux. Pourquoi ?</p>



<ol class="wp-block-list">
<li>Ce n&rsquo;est pas le sujet de ce billet</li>



<li>Je traite le sujet dans un de mes premiers articles que je ne partage que sur contact et échange</li>



<li>Je pars du principe que cela sera fait après déploiement du SE<sup data-fn="7c312e03-317c-474a-ab3e-448ddb4d3df3" class="fn"><a href="#7c312e03-317c-474a-ab3e-448ddb4d3df3" id="7c312e03-317c-474a-ab3e-448ddb4d3df3-link">3</a></sup>.</li>
</ol>



<p>L&rsquo;objectif est vraiment de comprendre ou du moins rappeler la structure d&rsquo;un système GNU quant à son arborescence d&rsquo;organisation de fichier. Et donc outre à mesure à comprendre pourquoi nous devons allouer plus ou moins d&rsquo;espace de stockage.</p>



<p>Concernant l&rsquo;application que j&rsquo;ai développé, bien que je revienne sur ce point plus bas dans ce billet, cette dernière n&rsquo;est pas fonctionnelle sur les environnements GNU Linux du fait de la GUI<sup data-fn="957eb17c-7564-49a4-beda-d11cd897f8a8" class="fn"><a href="#957eb17c-7564-49a4-beda-d11cd897f8a8" id="957eb17c-7564-49a4-beda-d11cd897f8a8-link">4</a></sup>.</p>



<p>Il est également important de souligné que cette application n&rsquo;est compatible qu&rsquo;avec la version 5.X de powershell. </p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>&nbsp;Environnement Windows non obsolète</li>



<li><strong>Apps :&nbsp;</strong>Non Applicable</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>PowerShell version 5.X</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Théorie</h2>



<p>Si nous devons commencer par la base, il serait bon de se poser la question </p>



<p class="has-text-align-center"><strong>« Comment est structurer un environnement GNU Linux ? »</strong></p>



<p class="has-text-align-left">Contrairement à certaines connaissances que j&rsquo;ai pu fréquenter, oui c&rsquo;est un point important. Cela évite de faire n&rsquo;importe quoi et dans une outre mesure d&rsquo;apprendre quelques choses. (Toutes ressemblances avec des personnes existantes et purement fortuite).</p>



<p class="has-text-align-center"><strong>T&rsquo;es un peu chafouin en ce moment non ? Tu ne voudrais pas ton petit suppositoire à la verveine ?</strong></p>



<p class="has-text-align-left">Légèrement agacé avec une pointe de colère et donc de sarcasme il est vrai. L&rsquo;hypocrisie des uns fait le désespoir des autres. Mais OKLM comme disent les d&rsquo;jeuns je prends un sacré recul. Cependant, je suis partant pour la verveine mais pas en suppositoire, plus en pousse café 🙂 <a href="https://www.youtube.com/watch?v=s_aka1i0RD0&amp;list=RDs_aka1i0RD0&amp;start_radio=1">Et puis Monsieur, Madame, Mademoiselle, je suis bien fatigué&#8230; J&rsquo;en ai marre&#8230;</a></p>



<p>Regardons alors de plus près l&rsquo;architecture n à n-1.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="546" height="570" src="https://erwanguillemard.com/wp-content/uploads/2026/02/PP_005_001_arch.jpg" alt="" class="wp-image-3416" style="width:307px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2026/02/PP_005_001_arch.jpg 546w, https://erwanguillemard.com/wp-content/uploads/2026/02/PP_005_001_arch-287x300.jpg 287w" sizes="auto, (max-width: 546px) 100vw, 546px" /></figure>
</div>


<p>(Pas de panique je vais prendre le temps de décrire chaque répertoire).</p>



<p>Nous avons le répertoire parent de notre arborescence, communément appelé « la Racine » (et non rien à voir avec l&rsquo;organisation de l&rsquo;ombre de Konoha dans Naruto [super référence&#8230;]) ou <strong>root</strong>. C&rsquo;est sous ce répertoire <strong>/</strong> que nous allons retrouver les répertoires qui organise notre SE.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3409_97e24c-b7 kt-accordion-has-14-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3409_1e6061-7a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/bin</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ce répertoire est l&rsquo;abréviation de <strong>binaries</strong>. Il est essentiel au bon fonctionnement du système puisque ce dernier va contenir l&rsquo;ensemble des commandes exécutables de bases.</p>



<p>C&rsquo;est ici que nous retrouvons les programmes nécessaires au mode de restauration ainsi qu&rsquo;au démarrage du système. C&rsquo;est je pense l&rsquo;un des répertoire les plus important du système.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3409_4a9c15-d7"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/boot</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ce répertoire est réservé au rangement des chaussures afin d&rsquo;utiliser nos sockets&#8230; Ok je sors.</p>



<p>Plus sérieusement, ce répertoire contient tout ce qui est nécessaire au démarrage du système. </p>



<p class="has-text-align-center"><strong>Pas de /boot ? Pas de démarrage&#8230;</strong></p>



<p class="has-text-align-left">Ce dernier contient le kernel (noyau Linux), les fichiers d&rsquo;amorçage (bootloader pour ne pas dire GRUB<sup data-fn="6b4eeabd-5566-437e-ab1d-1980ef7ba3d1" class="fn"><a href="#6b4eeabd-5566-437e-ab1d-1980ef7ba3d1" id="6b4eeabd-5566-437e-ab1d-1980ef7ba3d1-link">5</a></sup> dans la majorité des cas) ainsi que l&rsquo;initramfs ou initrd (cela dépend) qui est notre « petit » système d&rsquo;exploitation temporaire. Il va sans dire que ce dernier est critique&#8230;</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3409_cb4761-85"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/dev</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ce répertoire est l&rsquo;abréviation de <strong>devices</strong>. C&rsquo;est dans ce répertoire que nous allons retrouver l&rsquo;ensemble des fichiers spéciaux représentant les périphériques systèmes. </p>



<p class="has-text-align-center">Si nous avions des doutes, sous Linux, <strong><em>Tout est fichiers</em></strong>.</p>



<p class="has-text-align-left">Bref, c&rsquo;est ici que nous allons interagir avec nos médias de stockage, les périphériques tels que caméra, micro, audio etc&#8230; C&rsquo;est notre noyau qui gère son contenu.</p>



<p>Ce n&rsquo;est ni plus ni moins que l&rsquo;interface entre notre système logique et notre système physique pour ne pas dire matériel.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3409_def777-a5"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/etc</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>/etc, l&rsquo;un des dossiers les plus importants&#8230; C&rsquo;est dans ce dernier que nous allons retrouver l&rsquo;ensemble des fichiers de configuration du système. Il me semble de jadis ce que j&rsquo;ai écrit dans mes cours de licence (merci M. HSU) que c&rsquo;est l&rsquo;abréviation de <strong>et cetera</strong> (c&rsquo;était pour la minute <a href="https://www.youtube.com/watch?v=nWdUojwhJVo">Père castor</a>)</p>



<ul class="wp-block-list">
<li>Configurations globales du système</li>



<li>Paramètres de sécurité</li>



<li>Informations sur les utilisateurs</li>



<li>Configuration réseau</li>



<li>Configuration des services</li>
</ul>



<p>Généralement, la modification des fichiers nécessite les droits d&rsquo;administrations. Il est généralement conseillé avant toutes altérations de faire une copie du fichier d&rsquo;origine 🙂</p>



<p class="has-text-align-center">Généralement on se fait avoir une fois pas deux <strong>#bisous</strong></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane3409_11bf63-4a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/home</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p class="has-text-align-center"><a href="https://www.youtube.com/watch?v=6FLXqkL9MPM">E.T phone&#8230; HHHHH-OOOOOOOMMMMM-EEE&#8230;</a></p>



<p>C&rsquo;est le répertoire utilisateur. C&rsquo;est dans ce dernier que les utilisateurs vont stocker leurs items, et c&rsquo;est également dans ce dernier que la configuration propre au profil de l&rsquo;utilisateur est stockée.</p>



<p>Pour faire simple, c&rsquo;est un espace personnel limité par des permissions strictes pour chaque utilisateur.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane3409_ae88eb-cd"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/lib</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Abréviation de <strong>librairie</strong>, ce répertoire va contenir l&rsquo;ensemble des bibliothèques partagées essentielles et nécessaires au fonctionnement de notre système et des exécutables stockés dans les répertoires <strong>/bin</strong> et <strong>/sbin</strong>.</p>



<p>Si nous faisions la comparaison avec Windows, les fichiers .dll s&rsquo;appellent .so.</p>



<p>Dans ce répertoire nous retrouvons également les modules du kernel. Ce répertoire est critique pour le système car lié au /bin.</p>



<p class="has-text-align-center">Merci Capt&rsquo;ain Obvious !</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane3409_83b8b1-28"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/media</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;un des amalgames que nous pouvons souvent faire avec ce répertoire se fait avec le répertoire <strong>/dev</strong> et <strong>/mnt</strong>.</p>



<p>Effectivement, le répertoire <strong>/media</strong> sert de point de montage automatique pour les périphériques amovibles. Si vous voyez genre les Usb-Key, CD/DVD, DD externe, Disquette, Carte SD etc&#8230; C&rsquo;est pourquoi nous ne retrouvons pas ces périphériques dans <strong>/dev</strong>.</p>



<p>Le fait que le point de montage se fait automatiquement il n&rsquo;y a pas besoin de chercher du côté du répertoire <strong>/mnt</strong>.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-8 kt-pane3409_b55779-e4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/mnt</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;abréviation de <strong>mount</strong>. Ce répertoire est un point de montage temporaire pour monter manuellement des systèmes de fichiers.</p>



<p>Il sert à monter un disque manuellement, monter un ISO, accéder à une partition de réparation.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-9 kt-pane3409_9ec501-3a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/proc</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>C&rsquo;est un répertoire un peu particulier d&rsquo;abréviation <strong>processus</strong>. C&rsquo;est un système de fichiers virtuel qui est généré dynamiquement par le kernel.</p>



<p>Ainsi, nous retrouvons :</p>



<ul class="wp-block-list">
<li>Les processus actifs</li>



<li>Les informations des ressources (CPU et RAM)</li>



<li>La configuration du kernel</li>
</ul>



<p>Il est possible de modifier certains paramètres systèmes à chaud comme le réseau par exemple.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-10 kt-pane3409_1d05bd-93"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/sbin</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>De son abréviation <strong>system binaries</strong>, nous retrouvons les mêmes caractéristiques que le répertoire /bin à l&rsquo;exception que les commandes des exécutables présents dans le répertoire sont destinées principalement à l&rsquo;administration (utilisateur root).</p>



<p>Ainsi les ressources présentes dans le répertoire <strong>/sbin</strong> :</p>



<ul class="wp-block-list">
<li>Permettre le démarrage du système</li>



<li>Gérer l&rsquo;administration des partitions et des disques</li>



<li>Administrer le réseau</li>



<li>Réaliser la maintenance et récupération</li>
</ul>



<p>Les commandes étant sensibles, ces dernières ne doivent pas être accessible des utilisateurs. Uniquement des utilisateurs privilégiés.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-11 kt-pane3409_c96322-21"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/srv</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>De son petit nom <strong>service</strong>, ce répertoire va contenir les données des services fournis par le système.</p>



<p>Il sert à stocker les fichiers spécifiques aux services réseau ou applications serveurs. Généralement chaque service à son propre sous-dossier.</p>



<p>Les données présentes dans <strong>/srv</strong> sont considérées comme fixes. Dans le cas contraire il faudra se tourner vers le <strong>/var</strong>.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-12 kt-pane3409_b447db-5d"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/tmp</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le répertoire <strong>temporaire</strong> enfin. Comme son nom l&rsquo;indique il va contenir des ressources temporaires durant l&rsquo;exécution d&rsquo;un programme, d&rsquo;échange de données inter processus, voire de zone tampon durant l&rsquo;installation ou compilation d&rsquo;un programme.</p>



<p>C&rsquo;est un répertoire magique, une zone grise. L&rsquo;avantage de ce répertoire se trouve dans la suppression des données à chaque redémarrage du système.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-14 kt-pane3409_f75fa3-11"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/var</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le dossier <strong>variable</strong>&#8230; Ce répertoire va contenir les données qui vont changer dans le temps contrairement aux fichiers statiques comme /usr, /bin, /srv.</p>



<p>Ce répertoire est généralement utilisé pour stocker des fichiers générés par le système ou par les applications (site web par exemple). Toutefois, nous retrouvons également :</p>



<ul class="wp-block-list">
<li>Les journaux systèmes et services (logs)</li>



<li>Les files d&rsquo;impressions ou mails (spools)</li>



<li>Les BDDs<sup data-fn="2d347e21-a763-4bc2-ab40-e0ef607de630" class="fn"><a href="#2d347e21-a763-4bc2-ab40-e0ef607de630" id="2d347e21-a763-4bc2-ab40-e0ef607de630-link">6</a></sup></li>



<li>Les fichiers temporaires persistants</li>
</ul>



<p>Attention car ce répertoire peut très vite grossir 🙂</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-13 kt-pane3409_955780-1c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>/usr</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;un des répertoires importants du système mais pas non critique. Ce dernier est l&rsquo;abréviation de <strong>user</strong> et va contenir les logiciels installés par le système ou l&rsquo;administrateur.</p>



<p>Une sous arborescence bien organisée est présente afin de garantir l&rsquo;accès aux programmes, bibliothèques et fichiers partagés pour l&rsquo;ensemble des utilisateurs :</p>



<ul class="wp-block-list">
<li><strong>/usr/bin :</strong> Programme accessible à tous les utilisateurs</li>



<li><strong>/usr/sbin :</strong> Programmes d&rsquo;administration</li>



<li><strong>/usr/lib :</strong> Bibliothèques partagées</li>



<li><strong>/usr/share :</strong> Fichiers partagés</li>



<li><strong>/usr/include :</strong> Fichiers header pour la compilation de logiciels</li>



<li><strong>/usr/local :</strong> Programmes installés manuellement</li>
</ul>



<p>Je peux vous dire que plus d&rsquo;une fois je me suis mordu les doigts pour ne pas avoir bien provisionné ma partition et je me retrouve bloqué en plein update ou durant une installation&#8230;</p>
</div></div></div>
</div></div></div>



<p></p>



<p>J&rsquo;en peux plus. C&rsquo;est que c&rsquo;est long comme retour aux bases&#8230; J&rsquo;espère ne pas avoir oublié de répertoire.</p>



<p>L&rsquo;une des mauvaises pratiques lors du déploiement d&rsquo;un SE Linux est d&rsquo;allouer l&rsquo;ensemble de l&rsquo;espace disponible à <strong>/</strong>, de ce fait si par exemple je viens à blinder le <strong>/var/tmp</strong> ou <strong>/var/log</strong> mon système est à genoux. Donc sur un disque il convient de partitionner les répertoires.</p>



<p class="has-text-align-center"><strong>Oui mais quels répertoires ?</strong></p>



<p>En réponse à cette question, <a href="https://www.youtube.com/watch?v=EvoL-FvSPDg">je mets en 3/4 face et je réponds par un Uraken</a> des familles en sortant le guide de l&rsquo;ANSSI.</p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td><img loading="lazy" decoding="async" width="600" height="632" class="wp-image-1459" style="width: 600px;" src="https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_012_R12_part.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_012_R12_part.png 338w, https://erwanguillemard.com/wp-content/uploads/2024/01/IL01_012_R12_part-285x300.png 285w" sizes="auto, (max-width: 600px) 100vw, 600px" /></td><td>Cela offre également une autre possibilité concernant la sécurité.<br><br>Au-delà d&rsquo;assurer le fonctionnement du système quant au potentiel risque de saturation de stockage, il est possible de définir des options sur les points de montage de nos répertoires.<br><br>Ainsi il est possible de limiter l&rsquo;accès au device ou l&rsquo;exécution de programme.<br><br>Je préconise également d&rsquo;ajouter le répertoire <strong>/var/log/audit</strong>. <br><br>Je ne rentre volontairement pas dans le détail car j&rsquo;explique ce point de recommandation (R12) dans mon billet concernant le durcissement d&rsquo;un système GNU Linux.</td></tr></tbody></table></figure>



<p class="has-text-align-center"><strong>Ok pour ce qui est de la segmentation, mais du coup, quel doit être la répartition niveau stockage ?</strong></p>



<p>C&rsquo;est plutôt simple. Encore une fois, il suffit de chercher un peu. Malheureusement il n&rsquo;y a pas de recommandation empirique. C&rsquo;est donc à nous de définir les seuils par répertoire en tenant compte des critères énoncés précédemment.</p>



<p>Pour ma part cela donne :</p>



<figure class="wp-block-table has-small-font-size"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Répertoires</strong></td><td class="has-text-align-center" data-align="center"><strong>% Minimum</strong></td><td class="has-text-align-center" data-align="center"><strong>% Maximum</strong></td></tr><tr><td class="has-text-align-center" data-align="center">/</td><td class="has-text-align-center" data-align="center">10%</td><td class="has-text-align-center" data-align="center">15%</td></tr><tr><td class="has-text-align-center" data-align="center">/boot</td><td class="has-text-align-center" data-align="center"><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0000" class="has-inline-color">*</mark> 1024 Mio</strong></td><td class="has-text-align-center" data-align="center"><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0000" class="has-inline-color">*</mark> 1024 Mio</strong></td></tr><tr><td class="has-text-align-center" data-align="center">/usr</td><td class="has-text-align-center" data-align="center">10%</td><td class="has-text-align-center" data-align="center">15%</td></tr><tr><td class="has-text-align-center" data-align="center">/var</td><td class="has-text-align-center" data-align="center">10%</td><td class="has-text-align-center" data-align="center">15%</td></tr><tr><td class="has-text-align-center" data-align="center">swap</td><td class="has-text-align-center" data-align="center"><strong>1:1 de la RAM si =&lt; 8 Gio<br>1:0.5 de la RAM si &gt; 8 Gio</strong></td><td class="has-text-align-center" data-align="center"><strong>1:1 de la RAM si =&lt; 8 Gio<br>1:0.5 de la RAM si &gt; 8 Gio</strong></td></tr><tr><td class="has-text-align-center" data-align="center">/var/log</td><td class="has-text-align-center" data-align="center">5%</td><td class="has-text-align-center" data-align="center">10%</td></tr><tr><td class="has-text-align-center" data-align="center">/var/log/audit</td><td class="has-text-align-center" data-align="center">2%</td><td class="has-text-align-center" data-align="center">5%</td></tr><tr><td class="has-text-align-center" data-align="center">/var/tmp</td><td class="has-text-align-center" data-align="center">5%</td><td class="has-text-align-center" data-align="center">5%</td></tr><tr><td class="has-text-align-center" data-align="center">/tmp</td><td class="has-text-align-center" data-align="center">5%</td><td class="has-text-align-center" data-align="center">5%</td></tr><tr><td class="has-text-align-center" data-align="center">/opt</td><td class="has-text-align-center" data-align="center">5%</td><td class="has-text-align-center" data-align="center">10%</td></tr><tr><td class="has-text-align-center" data-align="center">/home</td><td class="has-text-align-center" data-align="center">10%</td><td class="has-text-align-center" data-align="center">10%</td></tr><tr><td class="has-text-align-center" data-align="center">/srv</td><td class="has-text-align-center" data-align="center">2%</td><td class="has-text-align-center" data-align="center">5%</td></tr></tbody></table></figure>



<p></p>



<p>Voilà ce qui est pour la théorie. Comme ça me soule de ne pas savoir quel espace allouer pour 30 Gio, 40 Gio, 50 Gio de disque, j&rsquo;ai été contraint de faire une petite application en Powershell&#8230; Pourquoi changer une équipe qui gagne ?</p>



<h2 class="wp-block-heading">Application</h2>



<p>Je reste un puriste en termes de développement et je ne peux me passer de Windows Powershell ISE<sup data-fn="29a21fb4-e351-4d35-8f8b-3970b17ecbef" class="fn"><a href="#29a21fb4-e351-4d35-8f8b-3970b17ecbef" id="29a21fb4-e351-4d35-8f8b-3970b17ecbef-link">7</a></sup>. Je sais qu&rsquo;il existe mieux comme IDE<sup data-fn="2a0ff43d-b86a-4ec2-affb-823bcb64afdc" class="fn"><a href="#2a0ff43d-b86a-4ec2-affb-823bcb64afdc" id="2a0ff43d-b86a-4ec2-affb-823bcb64afdc-link">8</a></sup> (Visual Studio Code par exemple) mais je n&rsquo;arrive pas à me faire à l&rsquo;idée de quitter ISE&#8230;</p>



<p class="has-text-align-center"><strong>Cela fait-il de moi un vieux réactionnaire ? Un dev de l&rsquo;ancien temps ?</strong></p>



<p>Bref, je laisse cette question existentielle en suspens.</p>



<p>Je me suis amusé pour une fois à réaliser une interface GUI<sup data-fn="f0557ebb-6968-4aca-a988-4463d1adb9db" class="fn"><a href="#f0557ebb-6968-4aca-a988-4463d1adb9db" id="f0557ebb-6968-4aca-a988-4463d1adb9db-link">9</a></sup> via WindowsForm. Moi l&rsquo;amoureux du CLI<sup data-fn="3e18b1eb-c04c-4c76-bba6-28e2298ac5a5" class="fn"><a href="#3e18b1eb-c04c-4c76-bba6-28e2298ac5a5" id="3e18b1eb-c04c-4c76-bba6-28e2298ac5a5-link">10</a></sup> je reconnais mettre amusé. Encore une fois <a href="https://www.youtube.com/watch?v=1SERx1KyECU&amp;list=RD1SERx1KyECU&amp;start_radio=1">je sais que je ne savais rien</a> et j&rsquo;ai donc encore appris.</p>



<p>Réaliser une application GUI en plaçant les items au pixel c&rsquo;est marrant mais vite casse gueule. Cela demande une gymnastique d&rsquo;esprit qui ne me rebute pas.</p>



<p>Il y a toutefois un bémol non négligeable à l&rsquo;utilisation de WindowsForm, cela ne permet pas l&rsquo;opérabilité multiplateforme. Logique puisque WindowsForm fait partie intégrante de Windows, donc pas possible de faire fonctionner ce dernier sous Linux.</p>



<p>Il faudrait donc que je compose un mode de fonctionnement CLI pour assurer l&rsquo;opérabilité. Cela n&rsquo;est qu&rsquo;au final que le développement d&rsquo;une fonction d&rsquo;affichage.</p>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td>La première version de mon application ne se base pas pour l&rsquo;instant sur un fichier de configuration ce qui implique que les seuils minimums et maximums sont défini en dur dans le code (en tant que constante global tout de même je ne suis pas un sauvage !).</td><td><img loading="lazy" decoding="async" width="550" height="388" class="wp-image-3431" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2026/03/PP_005_002_app.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2026/03/PP_005_002_app.jpg 932w, https://erwanguillemard.com/wp-content/uploads/2026/03/PP_005_002_app-300x211.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2026/03/PP_005_002_app-768x541.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p>J&rsquo;offre également la possibilité de définir la taille minimum ou maximum à provisionner.</p>



<p>Pour bien comprendre (c&rsquo;est un grand mot) je propose la courte vidéo de présentation de la version béta de mon app.</p>



<h3 class="wp-block-heading">Démonstration</h3>



<figure class="wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="PROJET   Linux Partitions Calculator" width="720" height="405" src="https://www.youtube.com/embed/-pFmGdQvl3E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<h3 class="wp-block-heading">GitHub</h3>



<p class="has-text-align-center"><a href="https://github.com/EGuillemard/GS_002_UNI_SYS_Storage">Miaou</a></p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Qu&rsquo;il est bon de revenir aux bases. Sans cela, je pense que je n&rsquo;aurai pas eu l&rsquo;idée de faire du GUI en powershell depuis mon ISE. Il est vrai que cela permet également de revenir peut-être aux prémices de ce blog qui étaient :</p>



<ul class="wp-block-list">
<li>L&rsquo;aspect pédagogique</li>



<li>Aborder les bases</li>



<li>Réaliser des petits projets</li>



<li>Sortir des sentiers battus</li>
</ul>



<p>Ainsi, je renoue avec certaines valeurs laissées de côté dans le cadre des derniers gros projets que j&rsquo;ai pu mener. Toutefois, je reste une tête de c*n à laisser transparaitre ma désinvolture, sarcasmes et autres tournures de phrases et expressions vitriolés 🙂 (Ce blog et mes articles restent un loisir personnel et cela m&rsquo;amuse d&rsquo;user de ma liberté d&rsquo;expression tout en tachant de rester respectueux).</p>



<p>Bref, il est temps de clôturer ce billet et d&rsquo;attaquer d&rsquo;autres thématiques 🙂 </p>



<p>Le mot de la fin :</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>J&rsquo;ai évalué et calculé mon incompétence, elle est à la hauteur de vos mensonges et de votre lâcheté. Un petit partitionnement de prime et de service ? Vous méritez bien convenablement un pâté lorrain en cadeau ?</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.debian.org/releases/stable/arm64/apcs03.en.html">Debian : Recommanded Partitioning</a></li>



<li><a href="https://help.ubuntu.com/community/DiskSpace">Ubuntu : DiskSpace</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="d0cf7aef-1d32-469c-80aa-165e012513eb"><strong>RHEL :</strong> RedHat Entreprise Linux <a href="#d0cf7aef-1d32-469c-80aa-165e012513eb-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="0a4dc23e-e493-4f49-8cdf-9a361464e536"><strong>ANSSI :</strong> Agence Nationale de Sécurité des Systèmes d&rsquo;Informations <a href="#0a4dc23e-e493-4f49-8cdf-9a361464e536-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="7c312e03-317c-474a-ab3e-448ddb4d3df3"><strong>SE :</strong> Système d&rsquo;Exploitation <a href="#7c312e03-317c-474a-ab3e-448ddb4d3df3-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="957eb17c-7564-49a4-beda-d11cd897f8a8"><strong>GUI :</strong> Graphical User Interface <a href="#957eb17c-7564-49a4-beda-d11cd897f8a8-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="6b4eeabd-5566-437e-ab1d-1980ef7ba3d1"><strong>GRUB :</strong> GRand Unifier Bootloader <a href="#6b4eeabd-5566-437e-ab1d-1980ef7ba3d1-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="2d347e21-a763-4bc2-ab40-e0ef607de630"><strong>BDD :</strong> Base De Données <a href="#2d347e21-a763-4bc2-ab40-e0ef607de630-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="29a21fb4-e351-4d35-8f8b-3970b17ecbef"><strong>ISE :</strong> Integrated Scripting Environment <a href="#29a21fb4-e351-4d35-8f8b-3970b17ecbef-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="2a0ff43d-b86a-4ec2-affb-823bcb64afdc"><strong>IDE :</strong> Integraded Development Environment <a href="#2a0ff43d-b86a-4ec2-affb-823bcb64afdc-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="f0557ebb-6968-4aca-a988-4463d1adb9db"><strong>GUI :</strong> Graphical User Interface <a href="#f0557ebb-6968-4aca-a988-4463d1adb9db-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="3e18b1eb-c04c-4c76-bba6-28e2298ac5a5"><strong>CLI :</strong> Command Line Interface  <a href="#3e18b1eb-c04c-4c76-bba6-28e2298ac5a5-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps &#8211; PostgreSQL</title>
		<link>https://erwanguillemard.com/apps-postgresql/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Wed, 05 Nov 2025 21:26:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[BDD]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=3247</guid>

					<description><![CDATA[Après les otaries, toujours dans le contexte des animaux je vais me déplacer latéralement vers l&#8217;enclos des éléphants. Alors non je ne vais pas abandonner MariaDB. Ce billet simple et efficace traitera de la SGBD PostgreSQL. Le pourquoi de cet intérêt soudain se justifie par la rupture technologique de nombreux éditeurs du marché vers ce...]]></description>
										<content:encoded><![CDATA[
<p>Après les otaries, toujours dans le contexte des animaux je vais me déplacer latéralement vers l&rsquo;enclos des éléphants.</p>



<p>Alors non je ne vais pas abandonner MariaDB. Ce billet simple et efficace traitera de la SGBD<sup data-fn="b793e32b-66d6-49b2-ab53-f36b018298f1" class="fn"><a href="#b793e32b-66d6-49b2-ab53-f36b018298f1" id="b793e32b-66d6-49b2-ab53-f36b018298f1-link">1</a></sup> PostgreSQL. Le pourquoi de cet intérêt soudain se justifie par la rupture technologique de nombreux éditeurs du marché vers ce moteur puissant. Ne nous voilons pas la face, ce jour les grands acteurs de BDDs<sup data-fn="393e6df6-2f56-48e8-9d39-7a0fdfff1fe2" class="fn"><a href="#393e6df6-2f56-48e8-9d39-7a0fdfff1fe2" id="393e6df6-2f56-48e8-9d39-7a0fdfff1fe2-link">2</a></sup> proposent des versions communautaires qui sont limités en termes de volumétrie et de fonctionnalité. Pour jouir de l&rsquo;ensemble des fonctionnalités il faut passer à la caisse.</p>



<p class="has-text-align-center"><strong>$$$ Bonjour le bandit manchot $$$</strong></p>



<p>Les bases de données étant de plus en plus volumineuse et l&rsquo;évolution que nous utilisateurs nous en faisons facilite auprès de ces mêmes éditeurs la mise à jour de leurs tarifications. C&rsquo;est de bonne guerre (ou pas). Ce « <strong>ou pas</strong> » laisse donc la voie à d&rsquo;autres alternatives. Plus simple, moins complexes et parfois plus puissante en s&rsquo;alignant sur le principe de la philosophie OpenSource.</p>



<p class="has-text-align-center"><strong>Je laisse une version communautaire, tu passes à la caisse si tu veux un service d&rsquo;assistance ou de maintenance. </strong></p>



<p class="has-text-align-left">Il y aura toujours chez certains éditeurs quelques fonctionnalités en moins. Toutefois, je pense que c&rsquo;est dans cette approche et la bonne et je réfléchis à adopter le même principe dans un projet de vie d&rsquo;une plus grande dimension.</p>



<p>Bref, après cette <a href="https://www.youtube.com/watch?v=k7U4EfFltX4&amp;list=RDk7U4EfFltX4&amp;start_radio=1">marche de l&rsquo;éléphant</a> (sans prendre de LSD<sup data-fn="400bfed0-8737-41bd-8083-b5ec5af14458" class="fn"><a href="#400bfed0-8737-41bd-8083-b5ec5af14458" id="400bfed0-8737-41bd-8083-b5ec5af14458-link">3</a></sup> ou autres acides). Je me fais un petit guide sur PostreSQL 🙂</p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Il me semble important une nouvelle fois de préciser que ce billet portera sur le déploiement d&rsquo;un environnement PostgreSQL dans sa dernière version stable à ce jour (release 18 en ce mois de grace Octobre 2025). Sur Windows, le déploiement ne m&rsquo;intéresse pas des masses. Par contre sur un système GNU/LINUX, j&rsquo;écris un <mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color"><strong><em><span style="text-decoration: underline;">OUI</span></em></strong> </mark>majuscule (gras, italique, souligné rouge !).</p>



<p>Bien que les chiffres ne soient pas réellement suivis, PostgreSQL estime la part d&rsquo;environnement de production d&rsquo;environ (<a href="https://www.postgresql.org/community/survey/50-what-operating-system-is-your-primarylargest-production-postgresql-database-running-on">lien</a>) :</p>



<ul class="wp-block-list">
<li>52 % l&rsquo;usage sur les systèmes GNU/LINUX</li>



<li>23% l&rsquo;usage sur les systèmes Windows</li>
</ul>



<p>La raison de mon choix est que nous retrouvons un grand nombre d&rsquo;appliance qui utilise PostgreSQL dans des environnements GNU/UNIX. Donc en tant que SysAdmin il faut bien savoir se positionner 🙂 (franchement, quelle remarque de me*de&#8230;).</p>



<p>Je considère que l&rsquo;environnement sera durci selon les recommandations de l&rsquo;ANSSI<sup data-fn="172c5b99-4041-4446-85b6-d02e927f1b6e" class="fn"><a href="#172c5b99-4041-4446-85b6-d02e927f1b6e" id="172c5b99-4041-4446-85b6-d02e927f1b6e-link">4</a></sup> concernant les systèmes GNU/LINUX et comme d&rsquo;accoutumé, je pars sur ma distribution RHEL favorite RockyLinux.</p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>
<ul class="wp-block-list">
<li>Rocky Linux 9.4 et version ultérieures</li>
</ul>
</li>



<li><strong>Apps :&nbsp;</strong>
<ul class="wp-block-list">
<li>PostgreSQL 18.4</li>
</ul>
</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>Non applicable</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Théorie</h2>



<p>L&rsquo;implémentation d&rsquo;un SGBD passe forcément par une réflexion de sa topologie. Nous ne balançons pas une application 1-tiers, on essaie à minima d&rsquo;adopter une architecture 2-Tiers. Soit 1 serveur Frontend et 1 serveur Backend.</p>



<p>Pour des raisons qui sont évidentes (enfonçage de porte ouverte) une application publiée ne doit pas héberger la BDD. L&rsquo;application doit être en DMZ<sup data-fn="146573c3-30d5-479a-b375-824245002261" class="fn"><a href="#146573c3-30d5-479a-b375-824245002261" id="146573c3-30d5-479a-b375-824245002261-link">5</a></sup> et la BDD dans une autres bulles avec un contrôle des flux entrants et sortants interlans.</p>



<p class="has-text-align-center"><strong>M&rsquo;sieur? Et pour l&rsquo;identification des flux ? Pour l&rsquo;attribution des ressources ? Comment on fait ?</strong></p>



<p>Donnez moi un <strong>R</strong>, un <strong>T</strong>, un <strong>F</strong> et un <strong>M</strong>&#8230; <strong>RTFM</strong><sup data-fn="8cf51c44-be31-4dbd-91c3-7dfca8006d40" class="fn"><a href="#8cf51c44-be31-4dbd-91c3-7dfca8006d40" id="8cf51c44-be31-4dbd-91c3-7dfca8006d40-link">6</a></sup> ! Il suffit encore une fois d&rsquo;avoir le courage de se palucher le wiki de l&rsquo;éditeur applicatif. Un peu d&rsquo;huile de coude n&rsquo;a jamais fait de mal.</p>



<p>Une fois la topologie bien pensée, passons à l&rsquo;architecture de notre serveur BDD.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Comme tout SGBD déployé il convient au minima d&rsquo;implémenter la topologie ci-contre. Soit, un disque dédié au système UNIQUEMENT. Un disque dédié au stockage des données de notre SGBD et en dernier lieu un disque dédié au dump de nos BDDs avec une périodicité définie.<br><br>J&rsquo;ajouterai également un quatrième disque quant aux journaux de la BDDs et les journaux de transaction (les fameux transaction logs). Toutefois, ayant une petite infrastructure, je m&rsquo;octroie le luxe de laisser ces derniers dans le /var/log.</td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="408" class="wp-image-3251" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_001_Macro.jpg" alt=""></td></tr></tbody></table></figure>



<p></p>



<h4 class="wp-block-heading">Hardware Requirements</h4>



<p>Niveau des ressources là c&rsquo;est une autre histoire&#8230; Si la documentation officielle nous communique les ressources et interopérabilités avec les dépendances tierces, je n&rsquo;ai malheureusement pas trouvé d&rsquo;informations sur les ressources matérielles. Dans un sens logique car cela va dépendre de ce que nous souhaitons traiter comme données etc.</p>



<p>J&rsquo;ai donc décidé d&rsquo;appliquer de mon plein gré et non sous la contrainte de calquer les recommandations MariaDB (<a href="https://mariadb.com/docs/analytics/mariadb-columnstore/management/deployment/columnstore-minimum-hardware-specification">lien</a>). Toutefois, cela fait un peu beaucoup pour moi&#8230;</p>



<p>Je partirai donc pour un minimum <strong>2 vCPU</strong> et <strong>4 Gio</strong> de <strong>RAM</strong>. Dans l&rsquo;idéal, je serai je pense sur du <strong>4 vCPU</strong> et <strong>8 Gio</strong> de RAM. Comme écrit plus haut, tout dépendra de ce que notre application va consommer en termes de traitement. Il faudra alors <em>raisonner en bon père de famille</em> (spéciale dédicasse) et ajuster les ressources afin d&rsquo;éviter la sur ou sous allocation.</p>



<p>Côté réseau, la documentation nous indique que le port <strong>5432/tcp</strong> est le port de communication par défaut. Surprise, nous pouvons changer le port dans le fichier de configuration&#8230;</p>



<p>Je pense qu&rsquo;avec le peu de base énoncée, nous pouvons passer à la pratique.</p>



<h2 class="wp-block-heading">Pratique</h2>



<p>Un dernier point pour faire une magnifique transition entre la théorie et cette partie. Il est à noter que les dépôts officiels des distributions contiennent une version de la solution PostgreSQL. Toutefois, il ne s&rsquo;agit généralement pas de la dernière version. Il est recommandé d&rsquo;ajouter le dépôt de l&rsquo;éditeur et de ne pas utiliser le dépôt système pour PostgreSQL.</p>



<h3 class="wp-block-heading">Installation</h3>



<p>Franchement, je trouve là la démarche super-mega overcool de proposer un webwizard pour définir comment déployer PostgreSQL selon les différents OS<sup data-fn="93299765-13f1-4d26-b6e1-157c6dc967ca" class="fn"><a href="#93299765-13f1-4d26-b6e1-157c6dc967ca" id="93299765-13f1-4d26-b6e1-157c6dc967ca-link">7</a></sup> et distributions (nous noterons au passage un excellent usage de la figure de style hyperbolique) (<a href="https://www.postgresql.org/download/">lien</a>).</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="559" src="https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_002_Install_Wizard-1024x559.jpg" alt="" class="wp-image-3252" srcset="https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_002_Install_Wizard-1024x559.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_002_Install_Wizard-300x164.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_002_Install_Wizard-768x419.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/10/APP_011_002_Install_Wizard.jpg 1523w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Je ne vais pas copier bêtement le script proposé. Mais reprendre chacune des lignes. Ce que je trouve admirable, c&rsquo;est la simplicité du déploiement. Pas besoin d&rsquo;installer 10k de dépendance en amont et de configurer ces dernières. </p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3247_4a47c7-b1 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3247_9174dd-7e"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>1 &#8211; Ajout du repo</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>A partir du lien fournit par le webwizard installer le nouveau repo :</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-3e11edfbd187fc3db365a2de1d87c0a8"><code>$ sudo dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="374" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO-1024x374.jpg" alt="" class="wp-image-3256" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO-1024x374.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO-300x110.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO-768x281.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO-1536x562.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_001_Install_REPO.jpg 1898w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3247_e9b6fd-28"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>2 &#8211; Désactivation du package de la source de distribution</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme indiqué précédemment, il convient de désactiver la version de postgreSQL contenu dans le repo par défaut. Ainsi, nous aurons une plus grande flexibilité dans le choix de version de nos composants.</p>



<p>A noter que mon système étant durci j&rsquo;ai été contrait de réaliser l&rsquo;opération en tant que root.</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-70f2c5674e9fe72800367c1d4d6a77f2"><code># dnf -qy module disable postgresql</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="867" height="611" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_002_Install_REPO.jpg" alt="" class="wp-image-3258" style="width:597px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_002_Install_REPO.jpg 867w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_002_Install_REPO-300x211.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_002_Install_REPO-768x541.jpg 768w" sizes="auto, (max-width: 867px) 100vw, 867px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3247_ded978-9c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>3 &#8211; Installation du Server PostgreSQL</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Rien de plus simple, il suffit de faire une petite recherche par précaution puis une installation de notre package.</p>



<p></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-2e80e318489950533c87033c0281a6a3"><code># dnf search postgresql18-server
# dnf install postgresql18-server</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="224" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO-1024x224.jpg" alt="" class="wp-image-3259" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO-1024x224.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO-300x66.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO-768x168.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO-1536x336.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_003_Install_REPO.jpg 1904w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3247_998fe7-16"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>4 &#8211; Initialisation et démarrage</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme tous SGBDs, il convient d&rsquo;initier la première installation. Puis de s&rsquo;assurer que le service va être lancer automatiquement au démarrage du système en cas de reboot.</p>



<p>Pour conclure, le traditionnel démarrage de notre daemon.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-4a134f820aa2ee375752bbdba91dcb4e"><code># /usr/pgsql-18/bin/postgresql-18-setup initdb
# systemctl enable postgresql-18
# systemctl start postgresql-18</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="89" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_004_Install_REPO-1024x89.jpg" alt="" class="wp-image-3260" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_004_Install_REPO-1024x89.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_004_Install_REPO-300x26.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_004_Install_REPO-768x67.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_004_Install_REPO.jpg 1432w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Pour le fun, une petite vérification 🙂</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="368" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_005_Install_REPO-1024x368.jpg" alt="" class="wp-image-3261" style="width:665px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_005_Install_REPO-1024x368.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_005_Install_REPO-300x108.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_005_Install_REPO-768x276.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_003_005_Install_REPO.jpg 1512w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>Notre daemon PostgreSQL étant déployé, j&rsquo;arrive toujours à ce point d&rsquo;application des bonnes pratiques systèmes. C&rsquo;est là que ça peut être délicat si on se plante dans la configuration car cela peut mener à repartir de zéro. D&rsquo;où l&rsquo;importance de lire la documentation encore une fois.</p>



<p class="has-text-align-center"><a href="https://www.youtube.com/watch?v=B4WJk2G9g38">C&rsquo;est qu&rsquo;un éléphant ça trompe énormément !</a></p>



<p>Et voilà comment on casse tout 😀</p>



<h3 class="wp-block-heading">Déplacement de la BDD Location</h3>



<p>Si nous gardons la topologie mis en place ci-haut, il sera nécessaire de déplacer le répertoire data stocké sur <strong>/var/lib/pgsql/18/data</strong> vers notre répertoire <strong>/mnt/database/postgresql/data</strong> monté sur notre disque <strong>/dev/sdb</strong>.</p>



<p>Je ne vais pas mentir, je me suis pris les pieds dans le tapis une fois et j&rsquo;ai dû restaurer ma VM. Toutefois, les étapes ci-dessous sont bien éprouvées et valide.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3247_981a8d-b1 kt-accordion-has-6-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3247_3b8c7b-15"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>1 &#8211; Arret du service</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>La base de la base est donc d&rsquo;arrêter le service postgresql :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-1f8706e1f6978715559ed7a91ef7839e"><code>$ sudo systemctl stop postgresql-18.service
$ sudo systemctl status postgresql-18.service</code></pre>



<p>Il est primordiale de s&rsquo;assurer que le service ne tourne plus.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3247_bca34b-7a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>2 &#8211; Création de l&rsquo;architecture cible</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Sur notre partition <strong>/dev/sdb1</strong> préalablement configurée et montée sur <strong>/mnt/database</strong>, nous allons créer et définir les droits et permissions pour autoriser notre compte postgres à accéder à ce dernier.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-447885826fb32d8410dc80fb0c19add8"><code>$ sudo mkdir /mnt/database/postgresql
$ sudo mkdir /mnt/database/postgresql/pg_sock
$ sudo mkdir /mnt/database/postgresql/data
$ sudo chown postgres:postgres /mnt/database/postgresql
$ sudo chmod 755 /mnt/database
$ sudo chmod 700 -R /mnt/database/postgresql</code></pre>



<p>Mais alors pourquoi 700 ? La base de donnée ainsi que l&rsquo;ensemble des fichiers de ressources doivent être accessible uniquement de l&rsquo;application par sécurité.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3247_ecd500-37"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>3 &#8211; Déplacement des données</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme j&rsquo;ai pris l&rsquo;habitude de faire comme pour MariaDB, je vais copier le contenu du répertoire data puis renommer la source afin d&rsquo;éviter tous dysfonctionnements.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d167a86f4bff37aaedd56d0ad0b28f24"><code>$ sudo rsync -av /var/lib/pgsql/18/data/ /mnt/database/postgresql/data/
$sudo mv /var/lib/pgsql/18/data /var/lib/pgsql/18/data.ori</code></pre>



<p>Une erreur classique lors de l&rsquo;usage de la commande rsync reste l&rsquo;oublie du <strong>/</strong>. Cela entrainera la copie du répertoire et non de son contenu uniquement. En gros, ça va bégayer dans les chemins (../postgresql/data/data/&#8230;).</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3247_9e61f4-e4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>4 &#8211; Modification de la configuration du service</strong> </span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le service est configuré pour démarrer le daemon sous <strong>/var/lib/psql/18</strong>. Pour prendre en charge le nouveau chemin, il faut modifier ce dernier. La philosophie et de surcharger la configuration.</p>



<p>Créer le répertoire qui va contenir la surcharge de notre daemon psql :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-5799c527e76b3dd224841f47fcb9af5d"><code>$ sudo mkdir -p /etc/systemd/system/postgresql-18.service.d</code></pre>



<p>Créer un fichier de surcharge qui va contenir le chemin du répertoire data :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-c0124622492296520e59a54ef19baf65"><code>$ sudo tee /etc/systemd/system/postgresql-18.service.d/override.conf &gt; /dev/null &lt;&lt;'EOF'
<strong>&#91;Service]
Environment="PGDATA=/mnt/database/postgresql/data/"
EOF</strong></code></pre>



<p>Par acquis de conscience, j&rsquo;aime vérifier que le fichier est bien présent ainsi que le contenu de ce dernier.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-eea78f3bea8eda733c5558b86588ba7e"><code>$ sudo cat /etc/systemd/system/postgresql-18.service.d/override.conf</code></pre>



<p>Le daemon &lsquo;system&rsquo; a été altéré (puisque j&rsquo;ai ajouté une configuration) et donc ? Un petit reload des familles pour prendre en compte le changement et zou.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-647d939155d8cb9e3cad7b43f10ba049"><code>$ sudo systemctl daemon-reload</code></pre>



<p></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane3247_cfaebc-a8"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>5 &#8211; SELinux</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Un étape un peu border avec la sécurité (comme un excès de Delirium un jeudi soir pour oublier une semaine compliqué).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="600" height="600" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_000_MoveData.png" alt="" class="wp-image-3270" style="width:180px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_000_MoveData.png 600w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_000_MoveData-300x300.png 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_000_MoveData-150x150.png 150w" sizes="auto, (max-width: 600px) 100vw, 600px" /></figure>
</div>


<p>Toutefois, il est important de noter un petit point et non des moindres sur notre fichier <strong>/etc/fstab.</strong> Il va être nécessaire d&rsquo;ajouter le contexte sur notre partition et de relabeliser notre point partition.</p>



<p>Editons le fichier avec VIM, VI ou NANO puis modifier la ligne comme ci-dessous en ajoutant au niveau des droits <strong><em>defaults,context=system_u:object_r:postgresql_db_t:s0</em></strong></p>



<p>Ce qui veut dire en SELinux :</p>



<ul class="wp-block-list">
<li><strong><em>Defaults :</em></strong> Activation des droits standards</li>



<li><strong><em>Context=</em></strong>
<ul class="wp-block-list">
<li><strong><em>system_u </em></strong>: Identité SELinux, sans impact concernant notre SGBD</li>



<li><strong><em>object_r </em></strong>: Rôle d&rsquo;objet de type fichier</li>



<li><strong><em>postgresql_db_t </em></strong>: Match avec le type de données PostgreSQL autorisé par SELinux. Ainsi, SELinux interdit à PostgreSQL d&rsquo;accéder à des fichiers qui ne sont pas dans le contexte.</li>



<li><strong><em>s0 </em></strong>: Le niveau de sécurité par défaut.</li>
</ul>
</li>
</ul>



<p>Il sera nécessaire de définir le bon contexte sur notre nouveau répertoire.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-61e8cef06eef9a02ab603be7b4d7da6e"><code>$ sudo semanage fcontext -a -t postgresql_db_t "/mnt/database/postgresql(/.*)?"
$ sudo restorecon -Rv /mnt/database/postgresql/</code></pre>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane3247_000ea0-1b"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>6 &#8211; Démarrage du service</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le moment de vérité.</p>



<p class="has-text-align-center"><strong>Vais je vomir l&rsquo;ensemble de mes bières et commander une nouvelle tournée pour noyer mon échec ou commander une nouvelle tournée pour célébrer le succès de cette opération ? 🙂</strong></p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d8b07f4b785f3f155bdcd6b81f7a6b46"><code>$ sudo systemctl start postgresql-18
$ sudo systemctl status postgresql-18</code></pre>



<p></p>
</div></div></div>
</div></div></div>



<p></p>



<p>Il faut noter que le service fonctionne. Néanmoins, il convient de se demander si nous pouvons requêter notre BDD à la suite de ce changement.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-8ac2a6e23ab32c55e977a18495a997d8"><code>$ sudo -u postgres psql -c "SELECT version();"</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="605" height="134" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_001_MoveData.jpg" alt="" class="wp-image-3271" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_001_MoveData.jpg 605w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_001_MoveData-300x66.jpg 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></figure>
</div>


<p>Vérifions également que le chemin du PGDATA a bien été pris en compte.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-9b56dcd5448d18c407b282c364d85d41"><code>$ sudo -u postgres psql -c "SHOW data_directory;"</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="605" height="94" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_002_MoveData.jpg" alt="" class="wp-image-3272" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_002_MoveData.jpg 605w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_006_002_MoveData-300x47.jpg 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></figure>
</div>


<p class="has-text-align-center">Ouf ça fonctionne 🙂</p>



<p>Place à l&rsquo;étape suivante ! <a href="https://www.youtube.com/watch?v=zRcRtpgox0U">BA-BA-BAR POM POM POM POM</a></p>



<h3 class="wp-block-heading">Sécurisation &amp; Configuration</h3>



<p>Nous revenons encore et toujours au même point. Qui dit données implique la sensibilité de ces dernières. Aujourd&rsquo;hui braquer une banque ne rapporte pas grand-chose. Le rapport bénéfices/risques n&rsquo;est pas bon&#8230; Mais braqué des données, utiliser ces dernières et les revendre apporte un bien meilleur rapport en termes de bénéfices / risques.</p>



<p>Donc, je me retrousse les manches car je ne suis pas un manche !</p>



<p>Si du côté <strong>MariaDB</strong> il existe le fameux <mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">mysql_secure_installation</mark>, ce n&rsquo;est malheureusement pas le cas chez <strong>PostgreSQL</strong>.</p>



<p>Il se pose alors de dresser un inventaire rapide des points que nous souhaitons sécuriser :</p>



<ol class="wp-block-list">
<li>Mot de passe du compte postgres</li>



<li>Restreindre l&rsquo;accès réseaux</li>



<li>Mettre en place une stratégie d&rsquo;authentification</li>



<li>Utiliser des algorithmes de chiffrement fort</li>



<li>Supprimer les BDDs inutiles</li>



<li>Droits sur les fichiers</li>



<li>SELinux</li>



<li>Firewall embarqué (même si je préfère le terme embedded)</li>



<li>Audit et Journaux d&rsquo;événements</li>
</ol>



<p>Ca fait une petite tripoté n&rsquo;est-il pas ? Naturellement, certains des points ci-haut ont déjà été traité lors du déploiement et du changement d&#8217;emplacement de la base de données.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id3247_ac7a8e-1e kt-accordion-has-9-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane3247_c547cc-2a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>1 &#8211; Password Account DB </strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme pour MariaDB (compte root), l&rsquo;utilisateur postgres ne possède pas de mot de passe. Il convient par sécurité de définir ce dernier afin qu&rsquo;il ne vienne une idée à un individu malveillant (comme un RSSI <sup data-fn="8ee11f8e-018a-4440-a1e7-f35e89fcaa7d" class="fn"><a href="#8ee11f8e-018a-4440-a1e7-f35e89fcaa7d" id="8ee11f8e-018a-4440-a1e7-f35e89fcaa7d-link">8</a></sup>lors d&rsquo;un audit ou pire un SysDBA<sup data-fn="d3ddcc3d-b108-4e68-9df7-2f478eb4d83d" class="fn"><a href="#d3ddcc3d-b108-4e68-9df7-2f478eb4d83d" id="d3ddcc3d-b108-4e68-9df7-2f478eb4d83d-link">9</a></sup>) de mettre sa truffe humide dans notre BDD.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-206bf12b018f671dfb5a3a5538e74534"><code>$ su - postgres
$ psql -c "alter user postgres with password '<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">MyP@ssw0rd</mark></strong>'"</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="181" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_001_SECU_postgres_user-1024x181.jpg" alt="" class="wp-image-3276" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_001_SECU_postgres_user-1024x181.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_001_SECU_postgres_user-300x53.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_001_SECU_postgres_user-768x135.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_001_SECU_postgres_user.jpg 1435w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Il est important de faire un petit <strong><em>clear de l&rsquo;historique</em></strong> de frappe. Un mot de passe en clair c&rsquo;est pas cool. </p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane3247_7f1d29-93"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>2 &#8211; Network Restrictions</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ouvrons le fichier de configuration <strong>/mnt/database/postgresql/data/postgresql.conf</strong>.</p>



<p>Attention comme indiqué précédemment, il faudra être authentifié en tant qu&rsquo;utilisateur postgres ou root.</p>



<p class="has-text-align-center">Recherchez la section CONNECTIONS AND AUTHENTIFICATION.</p>



<p>Se pose alors la question, depuis où je peux consulter ma BDDs et sur quel port ? Personnellement, le port je le laisse par défaut soit 5432/tcp. Toutefois, la source, il est bien de spécifier le subnet ou les adresses IPs qui sont autorisé à se connecter à notre SGBD. Naturellement, la valeur &lsquo;*&rsquo; est proscrite.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="903" height="295" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SecurNetRestriction.jpg" alt="" class="wp-image-3285" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SecurNetRestriction.jpg 903w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SecurNetRestriction-300x98.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SecurNetRestriction-768x251.jpg 768w" sizes="auto, (max-width: 903px) 100vw, 903px" /></figure>
</div>


<p>Ce paramétrage va de pair avec la configuration de notre UTM<sup data-fn="5b9359c6-adcf-4f72-9501-604602846dc7" class="fn"><a href="#5b9359c6-adcf-4f72-9501-604602846dc7" id="5b9359c6-adcf-4f72-9501-604602846dc7-link">10</a></sup> embedded (cf le point plus bas).</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane3247_0e912b-42"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>3 &#8211; Authentification Policies</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>On va changer de fichier. L&rsquo;objectif est de définir <strong>qui</strong> va se connecter à <strong>quoi</strong>, <strong>comment</strong> et depuis<strong> où</strong>.</p>



<p>Direction <strong>/mnt/database/postgresql/data/pg_hba.conf</strong></p>



<p>La logique de lecture est la suivante TYPE correspond à la nature de l&rsquo;authentification (local? hôte ?) pour quelle DATABASE (all ? replication ? db_test ?) pour quel USER (all ? r-one ?) depuis quelle ADDRESS (127.0.0.1/32 ? 0.0.0.0/0 ? 10.36.16.0/24 ?) et par quel METHOD (peer ? scram-sha-256? MD5?).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="865" height="465" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SECU_postgres_authmethod.jpg" alt="" class="wp-image-3277" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SECU_postgres_authmethod.jpg 865w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SECU_postgres_authmethod-300x161.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_002_SECU_postgres_authmethod-768x413.jpg 768w" sizes="auto, (max-width: 865px) 100vw, 865px" /></figure>
</div>


<p>Il est certain qu&rsquo;il faut limiter l&rsquo;usage au maximum du all comme du masque 0.0.0.0/0. Toutefois, il n&rsquo;y a pas de base les paramètres « implicites » de refus des connexions. C&rsquo;est donc à implémenter (dernières lignes de la capture d&rsquo;écran).</p>



<p>On sauvegarde, puis on reload le service.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-04f92932758700a31ff7c7cf90098ec9"><code>$ sudo systemctl reload postgresql-18</code></pre>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane3247_28b64d-f5"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>4 &#8211; Suite de chiffrement</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Toujours dans le fichier de configuration <strong>/mnt/database/postgresql/data/postgresql.conf</strong>. Attention comme indiqué précédemment, il faudra être authentifié en tant qu&rsquo;utilisateur postgres ou root.</p>



<p>Recherchez la section CONNECTIONS AND AUTHENTIFICATION et activez l&rsquo;algorithme de chiffrement <strong>scram-sha-256</strong>. Le <strong>MD5</strong>, nous passons notre tour hein ? Autant allez aux champignons sans capotes, c&rsquo;est du pareil au même.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="861" height="124" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_004_SecurAlgo.jpg" alt="" class="wp-image-3284" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_004_SecurAlgo.jpg 861w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_004_SecurAlgo-300x43.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_004_SecurAlgo-768x111.jpg 768w" sizes="auto, (max-width: 861px) 100vw, 861px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane3247_398349-d5"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>5 &#8211; Nettoyage des BDDs inutiles</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Il est important de lister les bases présentes sur notre SGBD et de supprimer les bases qui ne servent à rien.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d747d17bea2ce23c46de4de55c118af6"><code>$ su - postgres  -c "\l"
$ psql

postgres=#\l
postgres=# DROP DATABASE NAME_BDD;</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="300" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_005_SecurBDD-1024x300.jpg" alt="" class="wp-image-3283" style="width:672px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_005_SecurBDD-1024x300.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_005_SecurBDD-300x88.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_005_SecurBDD-768x225.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_005_SecurBDD.jpg 1278w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Attention : Il ne faut en aucun cas supprimer les bases template0 et template1. Ces dernières permettent (pour la 1) de générer les futurs BDDs) et (pour la 0) de regénérer la BDD de modèle.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane3247_3f7584-a2"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>6 &#8211; Permissions et ACLs</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme expliqué ci haut et pour des raisons évidentes. L&rsquo;accès aux données doivent être accessible uniquement du compte utilisateur postgres et root. Pas de quoi foutez milles éléphants&#8230;</p>



<p>Je glisse toutefois les commandes.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-ec0a5579650dc9a16dc8cbd6a240b2aa"><code>$ sudo chown -R postgres:postgres /mnt/database/postgresql/data
$ sudo chmod 700 /mnt/database/postgresql/data</code></pre>



<p></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane3247_596968-8b"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>7 &#8211; SELinux &lt;3</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous retrouvons la commande saisie ci-haut si nous avons modifié le database location.</p>



<p>Ainsi nous définissons le contexte de fichier de type <strong>postgresql_db_t </strong>à l&rsquo;ensemble des éléments qui sont situer sous <strong>/mnt/database/postgresql</strong>. Puis on restore le contexte.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-61e8cef06eef9a02ab603be7b4d7da6e"><code>$ sudo semanage fcontext -a -t postgresql_db_t "/mnt/database/postgresql(/.*)?"
$ sudo restorecon -Rv /mnt/database/postgresql/</code></pre>



<p></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-8 kt-pane3247_481508-49"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>8 &#8211; Firewall</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Avant c&rsquo;était iptables maintenant c&rsquo;est firewalld ou ufw. Personnellement je reste sur la configuration de firewalld.</p>



<p>Il convient d&rsquo;autoriser les flux 5432/tcp dans notre firewall si des connexions se font depuis un autre réseau ou une autre machine.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-f3a79338853f5457c41683c309df7089"><code>$ sudo firewall-cmd --permanent --add-service=postgresql
$ sudo firewall-cmd --reload</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="916" height="104" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_008_SecurFirewall.jpg" alt="" class="wp-image-3278" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_008_SecurFirewall.jpg 916w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_008_SecurFirewall-300x34.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_008_SecurFirewall-768x87.jpg 768w" sizes="auto, (max-width: 916px) 100vw, 916px" /></figure>
</div>


<p>Cela étant, il serait également plus précis de filtrer les connexions entrantes sur un réseau ou une adresse ip uniquement sur le port 5432/tcp.</p>



<p>J&rsquo;assume cette configuration du fait de mon UTM en amont qui filtre l&rsquo;ensemble des flux inter-lans.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-9 kt-pane3247_2ab698-4d"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>9 &#8211; Logs &amp; Audits</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Ouvrons le fichier de configuration <strong>/mnt/database/postgresql/data/postgresql.conf</strong>. Attention comme indiqué précédemment, il faudra être authentifié en tant qu&rsquo;utilisateur postgres ou root.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-363e1d6b3d3216113e190e6c29ea0d2b"><code># vim /mnt/database/postgresql/data/postgresql.conf</code></pre>



<p>Se rendre ensuite dans la section REPORTING AND LOGGING. Puis vérifiez que la configuration suivante est active.</p>



<p></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Activation de <strong>logging_collector</strong> sur <strong>on</strong> afin de récupérer les erreurs sous la forme json ou csv.<br><br>L&#8217;emplacement où va être stocké les journaux. Par défaut celui-ci se trouve dans le répertoire log. Il faudra renseigner si l&#8217;emplacement est différent le chemin absolu, le chemin relatif si c&rsquo;est un cluster.<br><strong>log_directory = &lsquo;log&rsquo;</strong><br><br>Le nom du fichier, par défaut ce dernier est sous le format <strong>postgresql-%Y-%m-%d_%H%M%S.log</strong>.<br><strong>log_filename = &lsquo;postgresql-%a.log&rsquo;</strong><br><br>Activer la journalisation pour l&rsquo;ensemble des événements de connexion et de déconnexion.<br><strong>log_connections = on<br>log_disconnections = on</strong><br><br>En guise de traitement des logs, nous choisirons ddl pour avoir les définitions des commandes utilisés. Attention, l&rsquo;usage de all peut être dangereux vis à vis des ressources.<br><strong>log_statement = &lsquo;ddl&rsquo;</strong></td><td><img loading="lazy" decoding="async" width="550" height="598" class="wp-image-3279" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_009_LogAudits.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_009_LogAudits.jpg 607w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_005_009_LogAudits-276x300.jpg 276w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>
</div></div></div>
</div></div></div>



<p></p>



<p>Une fois les modifications apportées, n&rsquo;oubliez pas que notre serveur PostgreSQL à besoin d&rsquo;être redémarré :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-98dfa67952528c695eccdaeed06c0a5c"><code>$ sudo systemctl restart postgresql-18</code></pre>



<p>Pour une configuration spécifique comme la gestion de la mémoire allouée, les fonctionnalités et j&rsquo;en passe. Je pense qu&rsquo;il est inutile d&rsquo;aborder cela dans ce billet.</p>



<p>Pourquoi ? Parce que cet aspect-là et intrinsèquement lié aux dépendances des applications qui nécessite le SGBD PostgreSQL.</p>



<h3 class="wp-block-heading">Premiers Pas</h3>



<p>Cette sous partie vise plus à entrevoir les commandes de bases pour instancier une BDD dans le cadre de déploiement d&rsquo;une application (spoiler Odoo par exemple ?).</p>



<p>Je n&rsquo;ai pas la prétention de réinventer la roue, il existe la documentation pour cela et je n&rsquo;ai pas non plus la prétention de devenir SysDBA. J&rsquo;ai juste envie de faire les choses bien et surtout en suivant la doctrine des 3S, Simple, Standard et Sécurisé (14 ans d&rsquo;ESN<sup data-fn="d2a363b8-1043-4f02-8054-3cb17bef0b81" class="fn"><a href="#d2a363b8-1043-4f02-8054-3cb17bef0b81" id="d2a363b8-1043-4f02-8054-3cb17bef0b81-link">11</a></sup> ça vous forge un homme !).</p>



<h4 class="wp-block-heading">Création d&rsquo;un user</h4>



<p>La création d&rsquo;un utilisateur suit un paradigme différent de MariaDB. La finesse de l&rsquo;application du contexte d&rsquo;un utilisateur se fera dans le fichier <strong>pg_hba.conf</strong>.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-00badcfad096e143c66e3e97bb28621c"><code>$ psql -U postgres

postgres=# CREATE USER user_odoo WITH PASSWORD 'MyPassw0rd';</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="789" height="74" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_001_pgsql_createuser.jpg" alt="" class="wp-image-3308" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_001_pgsql_createuser.jpg 789w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_001_pgsql_createuser-300x28.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_001_pgsql_createuser-768x72.jpg 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></figure>
</div>


<h4 class="wp-block-heading">Création d&rsquo;une BDD</h4>



<p>La création d&rsquo;une BDD nécessite qu&rsquo;un utilisateur (de la SGBD naturellement) ait le privilège <strong>CREATEDB</strong> ou d&rsquo;utiliser un compte <strong>super utilisateur</strong>. Cela parait logique mais pas pour tout le monde. La documentation nous rappelle que la création d&rsquo;une nouvelle base de données sera effectué en réalisant un clone de la BDD template1 (si, le truc qui ne fallait pas supprimer).</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-db61721f40e581d497a6d2a796b33b2f"><code>postgres=# CREATE DATABASE bdd_odoo;</code></pre>



<p>Toutefois, nous pouvons allez plus loin en définissant le propriétaire de la BDD, le jeu de caractère de la BDD ainsi que la collation locale afin de faciliter le tri des chaines. Par exemple :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d8ca2461b14d8ccc2be296cc60c4fc52"><code>postgres=# CREATE DATABASE bdd_odoo_18
			WITH OWNER user_odoo
			ENCODING 'UTF8'
			LC_COLLATE 'fr_FR.UTF-8'
			LC_CTYPE 'fr_FR.UTF-8'
			TEMPLATE template0;</code></pre>



<p class="has-text-align-center"><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">/!\</mark> ARTUNG <mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">/!\</mark> Bicyclette et petit vélo !</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Il n&rsquo;est pas impossible que vous tombiez sur une erreur de ce type « <em>invalid LC_COLLATE locale name</em>« . Cela signifie que tu vivras ta vie sans aucun soucis. (Tes vraiment sûre ?)<br>En gros, il manque le fichier de mappage de caractère au niveau système. Soit il n&rsquo;est pas présent, soit il n&rsquo;est pas généré.</td><td><img loading="lazy" decoding="async" width="550" height="182" class="wp-image-3309" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_002_pgsql_errorencodage.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_002_pgsql_errorencodage.jpg 617w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_002_pgsql_errorencodage-300x99.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td></tr></tbody></table></figure>



<p></p>



<p>Afin de vérifier si ce dernier est présent :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-2129546e20ca91bc0ad4b0849350e583"><code>$ sudo locale -a | grep fr</code></pre>



<p>Si cela ne retourne rien c&rsquo;est que le packet ne doit pas être installé. Alors installons le vin diou !</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-3-background-color has-text-color has-background has-link-color wp-elements-0f16e386d4fd3cd8ec3758c328dc2098"><code>$ sudo dnf install glibc-langpack-fr
$ sudo locale -a | grep fr</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="868" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_003_pgsql_installencodage-1024x868.jpg" alt="" class="wp-image-3310" style="width:722px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_003_pgsql_installencodage-1024x868.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_003_pgsql_installencodage-300x254.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_003_pgsql_installencodage-768x651.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_003_pgsql_installencodage.jpg 1033w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Surprise le fichier de mappage est présent ! Si nous rejouons la requête, cela fonctionne.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="281" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_004_pgsql_bddcreate-1024x281.jpg" alt="" class="wp-image-3311" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_004_pgsql_bddcreate-1024x281.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_004_pgsql_bddcreate-300x82.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_004_pgsql_bddcreate-768x211.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_004_pgsql_bddcreate.jpg 1466w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h4 class="wp-block-heading">Attribution des privilèges et rôles</h4>



<p>Comme tous systèmes de base de données, un incontournable reste la notion de rôle et de privilège. </p>



<p>Dans la pratique, il convient et je sais que j&rsquo;enfonce une porte ouverte d&rsquo;adopter la bonne pratique de créer des rôles et d&rsquo;affecter les rôles aux utilisateurs. Un rôle sur la BDD en modification, en lecture, superutilisateur ect. </p>



<p>Ainsi et c&rsquo;est d&rsquo;une logique implacable, si modification il doit avoir, je ne modifierai <span style="text-decoration: underline;"><strong>QUE</strong></span> le rôle et non utilisateur par utilisateur. MALINX le LYNX&#8230;</p>



<h5 class="wp-block-heading">Rôles</h5>



<p>Par défaut, nous retrouvons :</p>



<figure class="wp-block-table has-small-font-size"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center">SUPERUSER</td><td>Accès total à tout le serveur</td></tr><tr><td class="has-text-align-center" data-align="center">CREATEDB</td><td>Peut créer des bases de données</td></tr><tr><td class="has-text-align-center" data-align="center">CREATEROLE</td><td>Peut créer, modifier ou supprimer d&rsquo;autres rôles</td></tr><tr><td class="has-text-align-center" data-align="center">INHERIT</td><td>Hérite des privilèges des rôles dont il est membre (activé par défaut)</td></tr><tr><td class="has-text-align-center" data-align="center">LOGIN</td><td>Peut se connecter à PostgreSQL</td></tr><tr><td class="has-text-align-center" data-align="center">REPLICATION</td><td>Peut initier des connexions de réplication</td></tr><tr><td class="has-text-align-center" data-align="center">BYPASSRLS</td><td>Ignore les politiques de sécurité par lignes</td></tr></tbody></table></figure>



<p></p>



<p>Toujours dans le spoil (parce que <a href="https://www.youtube.com/watch?v=Txz9toiMFnE">je suis un mec underground moi. MOUMOUNIGAN !</a>) je vais créer un rôle pour ODOO qui permettra uniquement de se connecter, de créer une bdd avec un mot de passe.</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-d87a71f61879722c82d63d05166a54de"><code>postgres=# CREATE ROLE r_odoo LOGIN CREATEDB;</code></pre>



<p>Pour attribuer le rôle à un utilisateur (en prenant toujours le cas ODOO avec notre role r_odoo et user_odoo) :</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-2b890c0dd8242c780f421a72dff43509"><code>postgres=# GRANT r_odoo TO user_odoo;</code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="835" height="246" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_005_pgsql_grant.jpg" alt="" class="wp-image-3312" style="width:652px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_005_pgsql_grant.jpg 835w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_005_pgsql_grant-300x88.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_008_005_pgsql_grant-768x226.jpg 768w" sizes="auto, (max-width: 835px) 100vw, 835px" /></figure>
</div>


<h5 class="wp-block-heading">Privilèges</h5>



<p>La notion de privilèges que ce soit sur la BDD, les tables où les schémas suivent le principe de SQL. Ainsi il suffira d&rsquo;user des commandes GRANT accompagner de :</p>



<ul class="wp-block-list">
<li>CONNECT ON</li>



<li>USAGE</li>



<li>SELECT ON ALL</li>



<li>SELECT, INSERT, UPDATE, DELETE</li>



<li>ALTER</li>



<li>DROP</li>



<li>&#8230;</li>
</ul>



<p>Il est important de prendre en compte que le propriétaire de la BDD <span style="text-decoration: underline;"><strong>a tous les droits</strong></span>.</p>



<p>Toujours dans notre exemple ODOO, il n&rsquo;y aura donc pas de privilèges à appliquer.</p>



<h2 class="wp-block-heading">PostgreSQL Client</h2>



<p>Il existe un outil que j&rsquo;ai découvert à travers un case chez VEEAM pour un problème de protection O365 du nom de pgAdmin. Cette solution officielle est l&rsquo;outil graphique pour administrer PostrgreSQL.</p>



<p>Je pense important de présenter cette dernière car dans le cas où nous ne nous serions pas <strong><em>SQL native language</em></strong> ou <strong><em>seconde langue</em></strong>. Cela nous permettrait de bien comprendre certains dysfonctionnements ou structures.</p>



<p>L&rsquo;installation n&rsquo;est pas en soi bien complexe&#8230; Ma grand-mère y arriverait sans difficulté. Toutefois, je glisse le tips&#8230;</p>


<div class="kb-gallery-wrap-id-3247_8318b5-7d alignnone wp-block-kadence-advancedgallery"><div class="kb-gallery-ul kb-gallery-non-static kb-gallery-type-fluidcarousel kb-gallery-id-3247_8318b5-7d kb-gallery-caption-style-bottom-hover kb-gallery-filter-none" data-image-filter="none" data-lightbox-caption="true"><div class="kt-blocks-carousel splide kt-carousel-container-dotstyle-dark kt-carousel-arrowstyle-whiteondark kt-carousel-dotstyle-dark kb-slider-group-arrow kb-slider-arrow-position-center" data-slider-anim-speed="400" data-slider-scroll="1" data-slider-arrows="true" data-slider-dots="true" data-slider-hover-pause="false" data-slider-auto="" data-slider-speed="7000" data-slider-type="fluidcarousel" data-slider-center-mode="true" data-slider-gap="10px" data-slider-gap-tablet="10px" data-slider-gap-mobile="10px" data-show-pause-button="false"><div class="splide__track"><ul class="kt-blocks-carousel-init kb-blocks-fluid-carousel splide__list"><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_001_pgadmin.jpg" width="526" height="415" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_001_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_001_pgadmin.jpg" data-id="3294" class="wp-image-3294 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_001_pgadmin.jpg 526w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_001_pgadmin-300x237.jpg 300w" sizes="auto, (max-width: 526px) 100vw, 526px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_002_pgadmin.jpg" width="520" height="412" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_002_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_002_pgadmin.jpg" data-id="3295" class="wp-image-3295 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_002_pgadmin.jpg 520w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_002_pgadmin-300x238.jpg 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_003_pgadmin.jpg" width="523" height="412" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_003_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_003_pgadmin.jpg" data-id="3296" class="wp-image-3296 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_003_pgadmin.jpg 523w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_003_pgadmin-300x236.jpg 300w" sizes="auto, (max-width: 523px) 100vw, 523px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_004_pgadmin.jpg" width="522" height="413" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_004_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_004_pgadmin.jpg" data-id="3297" class="wp-image-3297 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_004_pgadmin.jpg 522w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_004_pgadmin-300x237.jpg 300w" sizes="auto, (max-width: 522px) 100vw, 522px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_005_pgadmin.jpg" width="524" height="413" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_005_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_005_pgadmin.jpg" data-id="3298" class="wp-image-3298 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_005_pgadmin.jpg 524w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_005_pgadmin-300x236.jpg 300w" sizes="auto, (max-width: 524px) 100vw, 524px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_006_pgadmin.jpg" width="522" height="410" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_006_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_006_pgadmin.jpg" data-id="3299" class="wp-image-3299 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_006_pgadmin.jpg 522w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_006_pgadmin-300x236.jpg 300w" sizes="auto, (max-width: 522px) 100vw, 522px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_007_pgadmin.jpg" width="520" height="411" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_007_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_007_pgadmin.jpg" data-id="3300" class="wp-image-3300 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_007_pgadmin.jpg 520w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_007_pgadmin-300x237.jpg 300w" sizes="auto, (max-width: 520px) 100vw, 520px" /></div></div></figure></div></div></li><li class="kb-slide-item kb-gallery-carousel-item splide__slide"><div class="kadence-blocks-gallery-item"><div class="kadence-blocks-gallery-item-inner"><figure class="kb-gallery-figure kadence-blocks-gallery-item-hide-caption"><div class="kb-gal-image-radius"><div class="kb-gallery-image-contain" ><img loading="lazy" decoding="async" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin.jpg" width="783" height="626" alt="" data-full-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin.jpg" data-light-image="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin.jpg" data-id="3301" class="wp-image-3301 skip-lazy" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin.jpg 783w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin-300x240.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_008_pgadmin-768x614.jpg 768w" sizes="auto, (max-width: 783px) 100vw, 783px" /></div></div></figure></div></div></li></ul></div></div></div></div>


<p>Certains pourrait dire, oui c&rsquo;est un PHPMyAdmin. Oui c&rsquo;est un fait. C&rsquo;est une IHM<sup data-fn="67016ea4-128a-4e54-8e78-994f2692832d" class="fn"><a href="#67016ea4-128a-4e54-8e78-994f2692832d" id="67016ea4-128a-4e54-8e78-994f2692832d-link">12</a></sup> en GUI<sup data-fn="91045dd7-1d19-4afb-9e40-c5064450683b" class="fn"><a href="#91045dd7-1d19-4afb-9e40-c5064450683b" id="91045dd7-1d19-4afb-9e40-c5064450683b-link">13</a></sup> pour faciliter l&rsquo;expérience quotidienne.</p>



<p>Pour se connecter, il suffira de renseigner les informations de connexion et de s&rsquo;assurer au préalable que la politique de communication est bien présente sur notre UTM concernant les flux interlans. Sans oublier de vérifier :</p>



<ul class="wp-block-list">
<li>La configuration du fichier pg_hba.conf est compliante</li>



<li>Les adresses d&rsquo;écoutes dans le fichier postgresql.conf ne sont pas restreinte cas localhost et que le bind d&rsquo;interface est bien configuré. (Le bind c&rsquo;est l&rsquo;ip de l&rsquo;interface du serveur, pas l&rsquo;adresse ip du client&#8230; Je dis ça parce que je vous vois venir hein !)</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout" style="border-style:none;border-width:0px"><tbody><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="434" class="wp-image-3303" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_009_pgadmin_connexion.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_009_pgadmin_connexion.jpg 727w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_009_pgadmin_connexion-300x237.jpg 300w" sizes="auto, (max-width: 550px) 100vw, 550px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="550" height="252" class="wp-image-3313" style="width: 550px;" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_011_pgadmin_connexion.jpg" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_011_pgadmin_connexion.jpg 1068w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_011_pgadmin_connexion-300x137.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_011_pgadmin_connexion-1024x469.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_011_pgadmin_connexion-768x352.jpg 768w" sizes="auto, (max-width: 550px) 100vw, 550px" /><br></td></tr></tbody></table></figure>



<p>Et si nous jetions un coup d&rsquo;œil dans le viseur pour observer nos logs voir si on voit notre <a href="https://www.youtube.com/watch?v=6xb898sQtu8&amp;list=RD6xb898sQtu8&amp;start_radio=1">pachyderm</a> numérique ?</p>



<pre class="wp-block-code has-theme-palette-9-color has-theme-palette-4-background-color has-text-color has-background has-link-color wp-elements-5de0cdf00246c3c34a09d22a2381ba79"><code>$ sudo tail -f /mnt/database/postgresql/data/log/postgresql-Wed.log</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="161" src="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion-1024x161.jpg" alt="" class="wp-image-3304" srcset="https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion-1024x161.jpg 1024w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion-300x47.jpg 300w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion-768x121.jpg 768w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion-1536x242.jpg 1536w, https://erwanguillemard.com/wp-content/uploads/2025/11/APP_011_007_010_pgadmin_connexion.jpg 1693w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Impeccable. Tout fonctionne 🙂</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Ce billet revient aux prémices des premiers articles rédigés il y a maintenant quasiment deux ans. Quelques choses de simple qui vise à jouer les aides mémoires de ma cafetière qui commence à s&rsquo;effriter.</p>



<p>Je ne tenais pas à me lancer dans un benchmark de « <em><strong>Est ce que l&rsquo;otarie et plus fort que l&rsquo;éléphant ?</strong></em> » cela ne m&rsquo;intéresse pas le moindre du monde. Toutefois et comme j&rsquo;ai pu l&rsquo;aborder en avant propos, le tournant des éditeurs vers la solution PostgreSQL mérite de s&rsquo;intéresser à cette dernière.</p>



<ul class="wp-block-list">
<li>VEEAM enchaine sa rupture technologique avec Windows (SE<sup data-fn="7604995b-87f0-4797-9ee8-4a7d54d21f02" class="fn"><a href="#7604995b-87f0-4797-9ee8-4a7d54d21f02" id="7604995b-87f0-4797-9ee8-4a7d54d21f02-link">14</a></sup> et/ou MSSQL) pour RHEL et PostgreSQL</li>



<li>ODOO qui reste dans la philosophie du libre</li>



<li>La Société Générale (faut bien renflouer les caisses après le passage de Jérôme KERVIEL&#8230; Ok, la blague est mauvaise, mais il fallait la faire. Trop tentante).</li>



<li>Patrick BALKANY pour gérer son patrimoine non déclaré. Ah non autant pour moi c&rsquo;est une fake news&#8230; Que je suis naïf 🙂</li>
</ul>



<p>Au delà des deux derniers points douteux, il est bien je pense de se garder deux SGBDs relationnels sous le coude les solutions MariaDB et PostgreSQL. L&rsquo;implémentation de la couche de sécurité relève d&rsquo;un défi parfois mais reste nécessaire et plus qu&rsquo;indispensable de nos jours.</p>



<p>Il manque toutefois un point que je n&rsquo;ai pas développé ici. La possibilité de sauvegarder une base de manière périodique. J&rsquo;avais traité le sujet pour MariaDB à la suite d&rsquo;une connerie de ma part un vendredi aprem sur l&rsquo;environnement de production. Je pense qu&rsquo;il serait bien de reprendre ce projet et de l&rsquo;adapter pour PostgreSQL 🙂</p>



<p>Ca fait un sujet supplémentaire à traiter d&rsquo;ici la fin d&rsquo;année. Mais surtout, le levé de voile ayant été fait un poil plus tôt ce billet est le tremplin pour l&rsquo;implémentation d&rsquo;ODOO comme mon ERP à venir.</p>



<p>Le mot de la fin :</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Egaré dans la base de données infernale, le sysadmin se nomme R-ONE. A la recherche du datalocation, le problème s&rsquo;appelle la durcification. Avec la solution VEEAM, il a pu rollback super vite.</em> Dérivant à dos d&rsquo;éléphant<em>, R-ONE arrivera toujours dans l&rsquo;étang&#8230; (faut bien se mouiller un peu qu&rsquo;ils disaient les anciens)</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.postgresql.org/community/survey/50-what-operating-system-is-your-primarylargest-production-postgresql-database-running-on">PostgreSQL Secteur par OS</a></li>



<li><a href="https://www.postgresql.org/files/documentation/pdf/18/postgresql-18-A4.pdf">PostgreSQL &#8211; Main Apps Guide</a></li>



<li><a href="https://www.postgresql.org/download/">PostgreSQL &#8211; Download</a></li>



<li><a href="https://www.pgadmin.org/download/">PGAdmin &#8211; Download</a></li>



<li><a href="https://mariadb.com/docs/analytics/mariadb-columnstore/management/deployment/columnstore-minimum-hardware-specification">MariaDB &#8211; Hardware Requirements</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="b793e32b-66d6-49b2-ab53-f36b018298f1"><strong>SGBD :</strong> Système de Gestion de Base de Données <a href="#b793e32b-66d6-49b2-ab53-f36b018298f1-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="393e6df6-2f56-48e8-9d39-7a0fdfff1fe2"><strong>BDD : </strong>Base De Données <a href="#393e6df6-2f56-48e8-9d39-7a0fdfff1fe2-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="400bfed0-8737-41bd-8083-b5ec5af14458"><strong>LSD :</strong> <strong> </strong>LySergique Diéthylamide <a href="#400bfed0-8737-41bd-8083-b5ec5af14458-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="172c5b99-4041-4446-85b6-d02e927f1b6e"><strong>ANSSI</strong> <strong>:</strong> Agence Nationale de Sécurité des Systèmes d&rsquo;Informations <a href="#172c5b99-4041-4446-85b6-d02e927f1b6e-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="146573c3-30d5-479a-b375-824245002261"><strong>DMZ :</strong> Demilitarized Zone <a href="#146573c3-30d5-479a-b375-824245002261-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="8cf51c44-be31-4dbd-91c3-7dfca8006d40"><strong>RTFM :</strong> Read The Fuck*ng Manual <a href="#8cf51c44-be31-4dbd-91c3-7dfca8006d40-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="93299765-13f1-4d26-b6e1-157c6dc967ca"><strong>OS :</strong> Operating System <a href="#93299765-13f1-4d26-b6e1-157c6dc967ca-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="8ee11f8e-018a-4440-a1e7-f35e89fcaa7d"><strong>RSSI </strong>: Responsable Sécurité des Systèmes d&rsquo;Informations <a href="#8ee11f8e-018a-4440-a1e7-f35e89fcaa7d-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="d3ddcc3d-b108-4e68-9df7-2f478eb4d83d"><strong>SysDBA :</strong> Administrateur des Systèmes de Bases de Données <a href="#d3ddcc3d-b108-4e68-9df7-2f478eb4d83d-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="5b9359c6-adcf-4f72-9501-604602846dc7"><strong>UTM : </strong>Unified threat management <a href="#5b9359c6-adcf-4f72-9501-604602846dc7-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="d2a363b8-1043-4f02-8054-3cb17bef0b81"><strong>ESN :</strong> Entreprise des Services Numériques <a href="#d2a363b8-1043-4f02-8054-3cb17bef0b81-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li><li id="67016ea4-128a-4e54-8e78-994f2692832d"><strong>IHM :</strong> Interface Homme Machine <a href="#67016ea4-128a-4e54-8e78-994f2692832d-link" aria-label="Aller à la note de bas de page 12">↩︎</a></li><li id="91045dd7-1d19-4afb-9e40-c5064450683b"><strong>GUI :</strong> Graphical User Interface <a href="#91045dd7-1d19-4afb-9e40-c5064450683b-link" aria-label="Aller à la note de bas de page 13">↩︎</a></li><li id="7604995b-87f0-4797-9ee8-4a7d54d21f02"><strong>SE :</strong> Système d&rsquo;Exploitation <a href="#7604995b-87f0-4797-9ee8-4a7d54d21f02-link" aria-label="Aller à la note de bas de page 14">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PROJET &#8211; Dream Nebula, VMWare KPI</title>
		<link>https://erwanguillemard.com/projet-dream-nebula-vmware-kpi/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sun, 07 Sep 2025 18:51:25 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Projet]]></category>
		<category><![CDATA[VEEAMONE]]></category>
		<category><![CDATA[VMWare]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=3089</guid>

					<description><![CDATA[Toc Toc Toc ? Il y a quelqu&#8217;un ? C&#8217;est moi Borgniol&#8230; Après 3 mois d&#8217;absence et de retrait vis à vis du dernier article, j&#8217;ai pris la décision de faire une pause. Des contextes complexes m&#8217;ont menés à devenir un homme fatigué, à deux doigts du break. Mais ne nous attardons pas sur ce...]]></description>
										<content:encoded><![CDATA[
<p class="has-text-align-center">Toc Toc Toc ? Il y a quelqu&rsquo;un ? C&rsquo;est moi Borgniol&#8230;</p>



<p>Après 3 mois d&rsquo;absence et de retrait vis à vis du dernier article, j&rsquo;ai pris la décision de faire une pause. Des contextes complexes m&rsquo;ont menés à devenir <a href="https://www.youtube.com/watch?v=TbHgzj5-YdA&amp;ab_channel=STUDIOCANALFrance">un homme fatigué, à deux doigts du break</a>. Mais ne nous attardons pas sur ce point si petit soit il mais sans le négliger non plus.</p>



<p>Bref, en parallèle du projet précédent Green Ray, dans ma fièvre créative j&rsquo;ai conçu sur la même période une autre application. J&rsquo;ai toujours à l&rsquo;esprit cette même pudeur de présenter mes travaux, vis à vis des solutions déjà présente sur le marché ou des regards critiques de mes pairs.</p>



<p>J&rsquo;ai rêvé depuis des nombreuses années d&rsquo;une solution qui permettrai de suivre dans le temps l&rsquo;évolution d&rsquo;un SI en terme de ressource dans un environnement virtualisé VMWare. Je sais encore une fois que ce rêve n&rsquo;est que la prolongation de la vision de mon prédécesseur. Ce dernier avait pensé et développé un tableau de bord dans un tableur pour définir le seuil de consommation d&rsquo;un environnement clustérisé VMWare et de définir la charge critique des ressources dans un fonctionnement normal et dégradé. Il avait également poussé le curseur jusqu&rsquo;à dissocier les grandes familles des ressources virtuelles.</p>



<p>La vie d&rsquo;une entreprise vous connaissez ? <a href="https://www.youtube.com/watch?v=nLU5pgSxqNU&amp;list=RDnLU5pgSxqNU&amp;start_radio=1&amp;ab_channel=RTSArchives">Ca s&rsquo;en va et ca revient</a> (ou pas&#8230;). Vous comprenez qu&rsquo;il a quitté l&rsquo;entreprise, emportant avec lui la solution qu&rsquo;il avait développé sur son temps personnel.</p>



<p>Je me suis donc inspiré de ces réflexions et ai poussé plus loin le curseur jusqu&rsquo;aux serveurs virtuelles, datastores etc. De ce contexte est né <strong>SS_043</strong> ou <strong>Dream Nebula</strong>, concrétisant l&rsquo;accomplissement d&rsquo;un projet de 3 ans. Mon application vient répondre à la problématique.</p>



<p class="has-text-align-center"><strong><em>Comment garantir le capacity planning d&rsquo;un système d&rsquo;information virtualisé sous VMWare dans son fonctionnement normal et dégradé dans le temps tout en garantissant une vision la plus précise de chaque type d&rsquo;environnement ainsi qu&rsquo;une synthèse des bulles métiers ou clients à des fins de facilitation de refacturation interne ou externe des ressources consommées.</em></strong></p>



<p>Encore une bien vaste problématique qui pourrait faire le sujet d&rsquo;une fin de cycle de cinquième année. 🙂</p>



<p>Les premières versions pour répondre aux attentes se basait sur les RVTools et les données qui en étaient retournées. Ainsi il m&rsquo;était donc facile de marcher dans les pas de mon prédécesseurs et d&rsquo;integrer et manipuler les données dans un tableau xlsxm.</p>



<p class="has-text-align-center"><strong>XLSXM tien donc ?</strong></p>



<p>Oui. Je rappel que je souhaite avoir une traçabilité dans le temps. Donc pas besoin de sortir de Saint-Cyr pour savoir que cela va se traiter par le biais de MACRO en VB. (Normalement avec juste les termes tableurs, MACRO et VB nous SACHONS que cela ne fonctionnera pas dans le temps en terme de maintient de la solution). Et bien spoiler, la première solution aura tenue un an et demi. A la fin cela ne ressemblait plus à grand chose et beaucoup d&rsquo;options automatisées étaient faites manuellement.</p>



<p class="has-text-align-center"><strong>Pourquoi ?</strong></p>



<p>Il y a bien des raisons et je vais les expliquer :</p>



<ul class="wp-block-list">
<li>La mise à jour des composants VMWares (vSphere et vCenter) ajoute ou modifie l&rsquo;ordre des colonnes. Donc il est nécessaire de réadapter l&rsquo;ensemble des formules dans le tableur</li>



<li>Les mises à jour du framework .NET et Windows rendent obsolètes certaines fonctionnalités au sein d&rsquo;excel. Retour case développement dans les MACRO</li>



<li>Certaines lignes sautent et donc cela décalent toutes les autres lignes</li>
</ul>



<p>C&rsquo;est à partir des points précédents que Dream Nebula ou SS_043 est né 🙂</p>



<p>Mon projet se base sur une technologie, VMWare et son usage des tags. Toutefois et à des fins d&rsquo;efficience, je me base sur VEEAMOne pour l&rsquo;attribution des tags VMWares. Je vous laisse si nécessaire vous référer à l&rsquo;article déjà présent sur le sujet. J&rsquo;insiste, l&rsquo;usage de VEEAMOne est optionnel.</p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Attention, bis repetita en approche&#8230;</p>



<p>Il est important de comprendre que ce billet ne rentrera pas dans le détail technique et ce pour des raisons évidentes de savoir faire et de protection intellectuelle. Le code source est disponible sur GitHub mais ne sera pas en libre accès.&nbsp;<strong>Ah ouai et pourquoi donc ?</strong></p>



<p>Comme j’ai pu le mentionner dans un&nbsp;<a href="https://erwanguillemard.com/projet-passerelle-veeamone-itop/">article précédent</a>&nbsp;je suis satisfait de ce que j’ai réussi à livrer et à créer. J’ai passé un bon nombre d’heure de recherche et de développement à concevoir la solution ainsi que la lecture des différentes documentations. Contrairement à d’autres projets je suis satisfait de la qualité du code produit et de l’architecture de ce dernier.</p>



<p>Ce qui m’amène au point, dois je commercialiser ce dernier ou le laisser à la disposition de tous ? Mon cœur peine à se décider… Je souhaite valoriser mon travail de recherche…</p>



<p>Bref, si votre curiosité est toujours suscitée je pense que le reste de l’article devrait être satisfaite. Dans le cas contraire, je vous laisse exécuter la combinaison&nbsp;<strong>Ctrl+F4</strong>.</p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>&nbsp;Windows Server 2k19 et version ultérieures ou Windows 11</li>



<li><strong>Apps :&nbsp;</strong>VCSA version 7 ou plus</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>PowerShell version 5 et superieur</li>



<li>PowerBI (optionnel)</li>



<li>ODBC drivers (SQLite3)</li>



<li>VEEAMOne version 12 ou plus (optionnel) </li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Guide</h2>



<ul class="wp-block-list">
<li><a href="https://erwanguillemard.com/projet-dream-nebula-vmware-kpi-partie-1-theorie/">Partie 1 : Théorie</a>
<ul class="wp-block-list">
<li>Définir l’expression du besoin et aborder le cahier des charges attendu. Ce qui implique l’architecture de l’application, du code. Les solutions retenues ainsi que les notions de sécurité</li>
</ul>
</li>



<li><a href="https://erwanguillemard.com/projet-dream-nebula-vmware-kpi-partie-2-pratique/">Partie 2 : Pratique</a>
<ul class="wp-block-list">
<li>Guide de déploiement de la solution et paramétrage de cette dernière.</li>



<li><mark><em><s>Oups, un mot de passe ? On échange avant ?</s></em>&nbsp;</mark><strong>#bisous</strong></li>
</ul>
</li>



<li><a href="https://erwanguillemard.com/projet-dream-nebula-vmware-kpi-partie-3-demonstration/">Partie 3 : Démonstration</a>
<ul class="wp-block-list">
<li>Faire une présentation de la solution dans les différents modes qui ont été développés.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Le mot de la fin</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Moi j&rsquo;ai la lèvre humide et je sais la science, de perdre au fond d&rsquo;un terminal ISE l&rsquo;antique conscience. Je sèche tous les pleurs sur mes KPIs triomphants, et fais rire les DSIs du rire du DEVOps</p>
<cite>Erwan GUILLEMARD refondu de <em><a href="https://www.youtube.com/watch?v=3LY2y-x92CA&amp;ab_channel=L%C3%A9oFerr%C3%A9">Charles BAUDELAIRE</a></em></cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://techdocs.broadcom.com/us/en/vmware-cis/vcf/power-cli/latest/powercli.html">VMWare &#8211; PowerCLI</a></li>
</ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PROJET – Green Ray, VEEAM Reporting</title>
		<link>https://erwanguillemard.com/projet-green-ray-veeam-reporting/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sun, 13 Apr 2025 18:28:21 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Projet]]></category>
		<category><![CDATA[VEEAM]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=2988</guid>

					<description><![CDATA[Après un an d&#8217;attente, me voilà prêt à présenter le résultat de mes travaux dans ce billet. Pourquoi un an ? Je pensais et pense toujours qu&#8217;il est difficile de présenter une solution sans expliquer préalablement sur quels produits et solutions mon application s&#8217;appuie&#8230; Une fois n&#8217;est pas coutume, je me réfère aux saintes écritures...]]></description>
										<content:encoded><![CDATA[
<p>Après un an d&rsquo;attente, me voilà prêt à présenter le résultat de mes travaux dans ce billet. Pourquoi un an ? Je pensais et pense toujours qu&rsquo;il est difficile de présenter une solution sans expliquer préalablement sur quels produits et solutions mon application s&rsquo;appuie&#8230;</p>



<p>Une fois n&rsquo;est pas coutume, je me réfère aux saintes écritures</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Et moi, je te dis que tu es Pierre, et que sur cette pierre je bâtirai mon Église, et que les portes du séjour des morts ne prévaudront point contre elle.</em></p>
<cite>Matthieu, 16:13:18</cite></blockquote>



<p>De ce verset, je bâti donc le mien</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Et moi, je te dis que tu es SS_034, et que sur cette application je bâtirai mes KPIs, et que les défaillances des jobs de protection ne prévaudront point contre elle.</em></p>
<cite>Le rédacteur de ce billet</cite></blockquote>



<p>Ne voyez pas dans cette reformulation une quelconque provocation de ma part ou quelques pensées négatives quant à mon sarcasme et ironie qui m&rsquo;habite. J&rsquo;ai une éducation des plus classiques dans l&rsquo;ordre mariste. Passons.</p>



<p>Enfin, vous comprendrez mieux je pense l&rsquo;allusion à la rédaction des articles précédents sur les différents produits VEEAM puisque mon application s&rsquo;appuie sur ces derniers. Cela à représenter un travail personnel titanesque en dehors de mon activité professionnelle&#8230;</p>



<p class="has-text-align-center"><strong>Mais c&rsquo;est quoi ton application SS_034 ou Green Ray ? Et ça sert à quoi ? Quel rapport avec les produits VEEAM ?</strong></p>



<p>Avant de répondre à l&rsquo;ensemble des questions, la problématique à laquelle j&rsquo;ai été confronté prends son origine courant mars 2023, dans mon environnement professionnel.</p>



<p class="has-text-align-center"><strong><em>Comment s&rsquo;assurer de l&rsquo;état des mécanismes de protection des systèmes d&rsquo;informations quotidien fournit par les produits VEEAM et établir à partir de ces données des indicateurs de performance afin de s&rsquo;assurer du bon respect des engagements contractuels interne ou externe.</em>    </strong></p>



<p>C&rsquo;est marrant car je dirai que cette problématique conviendrait pour un mémoire de fin de cycle de 5 année. 🙂</p>



<p><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">/!\</mark> Spoiler</strong>, j&rsquo;ai non seulement trouvé une solution à cette problématique mais ce dernier a pris une tournure inattendue au cours de ces deux dernières années.</p>



<p><strong>Hé banane, nous nous en doutons sinon tu n&rsquo;aurais pas pondu un article&#8230; Mouai, bà je suis certains qu&rsquo;il existe déjà des applications ou fonctionnalités internes ou externes à VEEAM qui permet de faire ça ? Tu as réinventé la roue&#8230; Encore un article p*te à clic&#8230;</strong></p>



<p>C&rsquo;est vrai que l&rsquo;argumentaire se tiens, toutefois pouvez vous me sortir les statistiques par jobs ou par organisations sur un mois précis ? Sur 13 mois glissant ? Déduire une tendance ? Allez y je vous regarde 🙂</p>



<p>Donc pour répondre aux 3 questions précédemment énoncées :</p>



<ul class="wp-block-list">
<li>En tant que MSP<sup data-fn="11686542-5715-4e20-969a-5cdb194875ff" class="fn"><a href="#11686542-5715-4e20-969a-5cdb194875ff" id="11686542-5715-4e20-969a-5cdb194875ff-link">1</a></sup> dans le milieu professionnel, l&rsquo;usage des produits VCC<sup data-fn="92323b67-b45b-408c-8fac-a724d7ed02e1" class="fn"><a href="#92323b67-b45b-408c-8fac-a724d7ed02e1" id="92323b67-b45b-408c-8fac-a724d7ed02e1-link">2</a></sup>, VSPC<sup data-fn="a38a8437-b0a8-4ade-973b-c2b6d616d957" class="fn"><a href="#a38a8437-b0a8-4ade-973b-c2b6d616d957" id="a38a8437-b0a8-4ade-973b-c2b6d616d957-link">3</a></sup> pour administrer et gérer les différents serveurs de sauvegarde VBR<sup data-fn="f0776cc3-c9f7-4336-bf91-3ae744f36c9c" class="fn"><a href="#f0776cc3-c9f7-4336-bf91-3ae744f36c9c" id="f0776cc3-c9f7-4336-bf91-3ae744f36c9c-link">4</a></sup> ou VB MO365<sup data-fn="728dfc79-57bc-4ca5-9b67-18fad8c6fadd" class="fn"><a href="#728dfc79-57bc-4ca5-9b67-18fad8c6fadd" id="728dfc79-57bc-4ca5-9b67-18fad8c6fadd-link">5</a></sup>, il est logique que je me concentre sur les solutions de l&rsquo;éditeur VEEAM. De plus VEEAM s&rsquo;inscrit depuis la <a href="https://www.veeam.com/blog/fr/leader-gartner-magic-quadrant.html">5 années consécutives</a> comme le leader de la sauvegarde sur le marché.</li>



<li>L&rsquo;application développée par mes soins vient collecter, traiter et présenter les données quotidiennes des jobs de sauvegardes tout en garantissant la flexibilité de la solution et la plus grande sécurité possible</li>



<li>Le nom du projet est SS_034_TOOLS_Backup-Reporting (toujours ma nomenclature personnelle <strong>SystemScript</strong> numéro <strong>34</strong>). Mes proches m&rsquo;ont fait remarquer à maintes reprises que le nom est difficilement commercialisable. C&rsquo;est pourquoi Green Ray est plus adapté. En raison d&rsquo;un relevé quotidien des outils VEEAM d&rsquo;un vert caractéristique, je me suis dit que cela revenait à <a href="https://www.youtube.com/watch?v=8AcbSv-FfJ0&amp;ab_channel=WilliamShellerVEVO">guetter le dernier rayon vert du soir</a> 🙂</li>
</ul>



<p class="has-text-align-center"><strong>Tu dis difficilement commercialisable ?</strong> <em>Je reviendrai plus tard sur ce point.</em></p>





<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Il est important de comprendre que ce billet ne rentrera pas dans le détail technique et ce pour des raisons évidentes de savoir faire et de protection intellectuelle. Le code source est disponible sur GitHub mais ne sera pas en libre accès.&nbsp;<strong>Ah ouai et pourquoi donc ?</strong></p>



<p>Comme j&rsquo;ai pu le mentionner dans un <a href="https://erwanguillemard.com/projet-passerelle-veeamone-itop/">article précédent</a> je suis satisfait de ce que j&rsquo;ai réussi à livrer et à créer. J&rsquo;ai passé un bon nombre d&rsquo;heure de recherche et de développement à concevoir la solution ainsi que la lecture des différentes documentations. Contrairement à d&rsquo;autres projets je suis satisfait de la qualité du code produit et de l&rsquo;architecture de ce dernier.</p>



<p>Ce qui m&rsquo;amène au point, dois je commercialiser ce dernier ou le laisser à la disposition de tous ? Mon cœur peine à se décider&#8230; Je souhaite valoriser mon travail de recherche&#8230;</p>



<p>Bref, si votre curiosité est toujours suscitée je pense que le reste de l&rsquo;article devrait être satisfaite. Dans le cas contraire, je vous laisse exécuter la combinaison <strong>Ctrl+F4</strong>. </p>



<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>&nbsp;Windows Server 2k19 et version ultérieures ou Windows 11</li>



<li><strong>Apps :&nbsp;</strong>VSPC version 7 ou plus</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>PowerShell version 5 et ultérieures</li>



<li>PowerBI (optionnel)</li>



<li>ODBC drivers (SQLite3)</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Guide</h2>



<ul class="wp-block-list">
<li><a href="https://erwanguillemard.com/projet-green-ray-veeam-reporting-partie-1-theorie/">Partie 1 : Théorie</a>
<ul class="wp-block-list">
<li>Définir l&rsquo;expression du besoin et aborder le cahier des charges attendu. Ce qui implique l&rsquo;architecture de l&rsquo;application, du code. Les solutions retenues ainsi que les notions de sécurité</li>
</ul>
</li>



<li><a href="https://erwanguillemard.com/projet-green-ray-veeam-reporting-partie-2-pratique/">Partie 2 : Pratique</a>
<ul class="wp-block-list">
<li>Guide de déploiement de la solution et paramétrage de cette dernière.</li>



<li><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color"><em><s>Oups, un mot de passe ? On échange avant ?</s></em> </mark><strong>#bisous</strong></li>
</ul>
</li>



<li>Partie 3 : Démonstration
<ul class="wp-block-list">
<li>Faire une présentation de la solution dans les deux modes qui ont été développés.  </li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Bien, difficile de conclure un projet sur lequel je reste assez nébuleux (mais pas opaque, je tiens à la nuance). Certes il y a la théorie et je garde le guide d&rsquo;installation dans sa culotte de chasteté, mais la démonstration fait le taf non ? 🙂</p>



<p>Je vois dans cette solution un bon moyen d&rsquo;assister les RSSIs<sup data-fn="b95106c9-785f-4f51-b34e-3c03333fe855" class="fn"><a href="#b95106c9-785f-4f51-b34e-3c03333fe855" id="b95106c9-785f-4f51-b34e-3c03333fe855-link">6</a></sup>, DSIs<sup data-fn="b2786152-1f87-47e8-8a28-5972898c8603" class="fn"><a href="#b2786152-1f87-47e8-8a28-5972898c8603" id="b2786152-1f87-47e8-8a28-5972898c8603-link">7</a></sup> qu&rsquo;ils soient internalisés ou non. Cela permet de montrer du concret au DG<sup data-fn="a3dd87fb-6a5a-4a42-a687-4d4cc5987cdc" class="fn"><a href="#a3dd87fb-6a5a-4a42-a687-4d4cc5987cdc" id="a3dd87fb-6a5a-4a42-a687-4d4cc5987cdc-link">8</a></sup>, DAF<sup data-fn="1721ce52-7980-4395-9564-0ae6b7a2198e" class="fn"><a href="#1721ce52-7980-4395-9564-0ae6b7a2198e" id="1721ce52-7980-4395-9564-0ae6b7a2198e-link">9</a></sup> ou PDG<sup data-fn="b66ce7ae-6091-4047-ac97-8f2722f359e9" class="fn"><a href="#b66ce7ae-6091-4047-ac97-8f2722f359e9" id="b66ce7ae-6091-4047-ac97-8f2722f359e9-link">10</a></sup> quant au travail de longue haleine réalisé par les équipes (oui, on ne va pas se mentir pour le commun des utilisateurs nous sommes désagréables et nous passons nos journées à boire des cafés en nous tirant sur le noeud&#8230; Sans oublier les cabinets de recrutement qui trouve normal de nous proposer un salaire confortable de 30-35k€ annuel). Plus sérieusement, cela permet à la direction d&rsquo;accorder un crédit et de la confiance à ses collaborateurs et d&rsquo;avoir ainsi une bonne vision de la sécurité de son entreprise.</p>



<p>J&rsquo;ai malheureusement trop vu de société externalisée ou équipe interne faire preuve de laxisme ou pire maquiller les rapports de sauvegarde et ce à l&rsquo;insu de leur client ou employeur/repsonbale&#8230; Mais bon, c&rsquo;est triste d&rsquo;écrire ces mots. <em>La fin justifie les moyens</em>&#8230; C&rsquo;est qu&rsquo;il faut la décrocher cette prime annuelle&#8230;</p>



<p>Je ne peux donc qu&rsquo;encourager encore une fois les DAF, DSI, DG ou PDG <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">de réclamer</mark></strong> les indicateurs des jobs de protection journalier, hebdomadaire, mensuel et annuel. Même si vous ne comprenez pas grand chose, cela reste des chiffres et il est important de savoir pourquoi certaines fois cela n&rsquo;a pas fonctionné et comment les équipes ont traité le dysfonctionnement. Et il faut faire preuve à certain moment de fermeté et dans d&rsquo;autres cas être indulgent. Il n&rsquo;est pas aisé de garder une main de fer dans un gant de velours.</p>



<p>De plus, ces métriques jouent un rôle important auprès de votre assurance en cas de sinistre informatique. En plus je suis quasiment certains qu&rsquo;une police d&rsquo;assurance cybersécurité a été souscrit. Le risque zéro n&rsquo;existant pas, si vous arrivez à prouver que votre sauvegarde tiens la route et fait l&rsquo;objet d&rsquo;un point de suivi régulier cela devrait faciliter l&rsquo;indemnisation du sinistre.</p>



<p>Si nous revenons plus à même du projet <em>Green Ray</em>, la flexibilité de l&rsquo;application permettant d&rsquo;interfacer n&rsquo;importe quelle solution de reporting (puisque que basé sur une BDD<sup data-fn="591af98b-59ee-4ce6-94dc-cf81b933aa08" class="fn"><a href="#591af98b-59ee-4ce6-94dc-cf81b933aa08" id="591af98b-59ee-4ce6-94dc-cf81b933aa08-link">11</a></sup>) répond au niveau et compétence de chaque RSI ou DSI. La possibilité d&rsquo;activer ou non le mode debug facilite la correction d&rsquo;erreur comme le contrôle dans un fichier de log.</p>



<p>Bien que pour l&rsquo;instant l&rsquo;application ne prend en compte que les jobs de protection de type Backup, BackupCopy et Replication ainsi que les jobs de protection pour Microsoft O365, l&rsquo;application a été pensée pour s&rsquo;adapter assez rapidement que ce soit aux différents niveaux, de l&rsquo;acquisition des données à leurs restitutions en passant par leurs traitements. Si ce n&rsquo;est pas évolutif à quoi bon ? Egalement le fait qu&rsquo;elle puisse traiter plusieurs organisations permets de répondre à un besoin de fournisseur de service et de faciliter la tâche d&rsquo;un Responsable des Services Hébergés par exemple &lt;3 (A la limite du narcissisme non ? C&rsquo;est inquiétant).</p>



<p>Le seul regret que j&rsquo;ai pour l&rsquo;instant en ce mois de Mars 2025 reste que le code est écrit en Powershell et non en C#, C/C++ ou VB .NET (PS c&rsquo;est en .NET non ? 🙂 ). Je pourrais me lancer dans un programme en C/C++ mais pour le coup je suis rouillé. Il serait pas mal d&rsquo;incorporer le rendu directement dans VEEAM (VEEAM One ou dans la VSPC) mais le produit ne doit pas être ouvert pour réaliser ce type d&rsquo;opération (et heureusement).</p>



<p>La version béta 2.0 (en dehors de la factorisation du mode service pour éviter la redondance de code) est stable. Je sais qu&rsquo;il reste des optimisations possibles et de potentiel modules à développer, mais ça l&rsquo;avenir nous le dira si oui ou non je vais investir de nouveau du temps 🙂 En toutes circonstances je suis bien loin de la version 1.0 à manipuler des CSVs dans un fichier XLSX avec des formules à rallonges !</p>



<p>Le mot de la fin</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Mes PKIs ils sont super ! Quand on les refreshent ils sortent. On peut acquisitionner à Quimper ou à Chalon-Sur-Saone. Ils ont l&rsquo;option&#8230; sécurisantes. Qui résonnent dans mon bureau-eau-eau&#8230; </em></p>
<cite>Erwan GUILLEMARD <em>refondu de <a href="https://www.youtube.com/watch?v=UvQ4x9_e1oE&amp;ab_channel=ArneVinzon-Topic">Arne VINZON</a></em></cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.veeam.com/blog/fr/leader-gartner-magic-quadrant.html">VEEAM : Leader Gartner</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="11686542-5715-4e20-969a-5cdb194875ff"><strong>MSP</strong> : Managed Services Providers <a href="#11686542-5715-4e20-969a-5cdb194875ff-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="92323b67-b45b-408c-8fac-a724d7ed02e1"><strong>VCC</strong> : VEEAM Cloud Connect <a href="#92323b67-b45b-408c-8fac-a724d7ed02e1-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="a38a8437-b0a8-4ade-973b-c2b6d616d957"><strong>VSPC</strong> : VEEAM Service Provider Console <a href="#a38a8437-b0a8-4ade-973b-c2b6d616d957-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="f0776cc3-c9f7-4336-bf91-3ae744f36c9c"><strong>VBR</strong> : VEEAM Backup et Replication <a href="#f0776cc3-c9f7-4336-bf91-3ae744f36c9c-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="728dfc79-57bc-4ca5-9b67-18fad8c6fadd"><strong>VB MO365</strong> :  VEEAM Backup for Microsoft 365 <a href="#728dfc79-57bc-4ca5-9b67-18fad8c6fadd-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="b95106c9-785f-4f51-b34e-3c03333fe855"><strong>RSSI :</strong> Responsable Sécurité des Systèmes d&rsquo;Informations <a href="#b95106c9-785f-4f51-b34e-3c03333fe855-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="b2786152-1f87-47e8-8a28-5972898c8603"><strong>DSI :</strong> Directeur des Systèmes d&rsquo;Informations <a href="#b2786152-1f87-47e8-8a28-5972898c8603-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="a3dd87fb-6a5a-4a42-a687-4d4cc5987cdc"><strong>DG :</strong> Directeur Général <a href="#a3dd87fb-6a5a-4a42-a687-4d4cc5987cdc-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="1721ce52-7980-4395-9564-0ae6b7a2198e"><strong>DAF :</strong> Directeur Administratif et Financier <a href="#1721ce52-7980-4395-9564-0ae6b7a2198e-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="b66ce7ae-6091-4047-ac97-8f2722f359e9"><strong>PDG :</strong> Président Directeur Général <a href="#b66ce7ae-6091-4047-ac97-8f2722f359e9-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="591af98b-59ee-4ce6-94dc-cf81b933aa08"><strong>BDD :</strong> Base De Données <a href="#591af98b-59ee-4ce6-94dc-cf81b933aa08-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps &#8211; VEEAM Service Provider Console</title>
		<link>https://erwanguillemard.com/apps-veeam-service-provider-console/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Sun, 23 Feb 2025 21:30:00 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[VEEAM]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=2658</guid>

					<description><![CDATA[J&#8217;ai décidé de traiter un des sujets qui me tiens à cœur depuis un moment. La gestion et l&#8217;administration au quotidien à travers une multitude de solution, plateforme peut vite devenir complexe et pousser certains SysAdmin au bord du break. Mais en dehors de l&#8217;aspect technique et du maintien opérationnel nous pouvons ajouter l&#8217;aspect financier...]]></description>
										<content:encoded><![CDATA[
<p>J&rsquo;ai décidé de traiter un des sujets qui me tiens à cœur depuis un moment. La gestion et l&rsquo;administration au quotidien à travers une multitude de solution, plateforme peut vite devenir complexe et pousser certains <a href="https://www.youtube.com/watch?v=TbHgzj5-YdA&amp;ab_channel=STUDIOCANALFrance">SysAdmin au bord du break</a>.</p>



<p>Mais en dehors de l&rsquo;aspect technique et du maintien opérationnel nous pouvons ajouter l&rsquo;aspect financier « déclaratif mensuel des licences » en supplément. Bonjour la boite d&rsquo;anxiolytique.</p>



<p>Cela passe encore quand c&rsquo;est une petite structure, mais quand en plus nous devenons fournisseur de la solution (provider chez nos amis d&rsquo;outre-manche) cela peut vite devenir un calvaire de facturer mensuellement les bonnes quantités et d&rsquo;éviter une sur ou sous facturation. Egalement et je l&rsquo;ai déjà vu, se faire régulariser de manière pro-active pour une « mauvaise déclaration » n&rsquo;a rien d&rsquo;une partie de plaisir.</p>



<p>Ayant dans mon quotidien professionnel la lourde tâche de garantir la disponibilité de l&rsquo;infrastructure et produit lié à la sauvegarde à travers les produits VEEAMs en tant qu&rsquo;usager et fournisseurs de service, je suis contraint de réaliser chaque fin du mois un rapport lié à la consommation de <strong>TOUS</strong> les produits de chacune de nos organisations.</p>



<p>Afin de ne pas voir une vague de suicide collectif, VEEAM a su entendre les cris du SysAdmin en détresse et a su proposer un outil pour lui faciliter la tâche ! Mais qu&rsquo;est ce que nous sommes gâtés dit donc !</p>



<p>Plus sérieusement, VEEAM avec son nouveau système de licence universelle (VUL<sup data-fn="c686f661-ae3b-427d-b948-30b5ed404386" class="fn"><a href="#c686f661-ae3b-427d-b948-30b5ed404386" id="c686f661-ae3b-427d-b948-30b5ed404386-link">1</a></sup>) a su rendre les choses simples et s&rsquo;adapter à l&rsquo;évolution des SIs<sup data-fn="c49f3d57-69aa-4166-a8ce-09b57637e0a8" class="fn"><a href="#c49f3d57-69aa-4166-a8ce-09b57637e0a8" id="c49f3d57-69aa-4166-a8ce-09b57637e0a8-link">2</a></sup> et s&rsquo;adapter par sa flexibilité d&rsquo;évolution des ressources présentes sur ces derniers aussi bien sur les infrastructures Cloud (Privées, Publics) ou les infrastructures OnPremise (je reviendrais plus en détail sur ce point plus bas).</p>



<p>Au delà de la flexibilité technique automatiquement cela ouvre la porte à une flexibilité et efficience budgétaire.</p>



<p class="has-text-align-center"><strong><em>On tient quelque chose là ? Tu as mis chers amis le doigt sur un sujet sensible. Tu as mis le doigt sur la VUL&#8230; (En raison de la blague d&rsquo;un trop haut niveau de qualité sur l&rsquo;échelle du beauf, 10 minutes de suspension&#8230;) </em></strong></p>



<p>Ainsi, en simplifiant le système de licensing et l&rsquo;application de ce dernier, VEEAM offre avec l&rsquo;un de ces produits la possibilité de :</p>



<ul class="wp-block-list">
<li>Unifier l&rsquo;ensemble des solutions sous une seule application (une grande partie)</li>



<li>Permettre la gestion par les clients d&rsquo;un fournisseur « l&rsquo;administration » de leur environnement VEEAM</li>



<li>Avoir une vue orienté business et maitriser les éléments financiers</li>



<li>Garantir l&rsquo;état de santé de leurs environnements</li>
</ul>



<p>Et voilà que la solution VSPC<sup data-fn="1d8bc6a0-985e-40e5-9463-565198a13ab8" class="fn"><a href="#1d8bc6a0-985e-40e5-9463-565198a13ab8" id="1d8bc6a0-985e-40e5-9463-565198a13ab8-link">3</a></sup> fait son entrée. Un tonnerre d&rsquo;applaudissement pour la VEEAM Service Provider Console ! (Les 10 minutes de suspension sont toutes relatives&#8230;)</p>



<p><em>VEEAM le leader de la sauvegarde développa une solution centrale  pour suivre et d&rsquo;administrer chaque solution. Dans cette solution ils déversèrent leurs simplicités et leurs volontés de faciliter la vie des SysAdmins. Une application, la VSPC pour les administrer tous&#8230; <a href="https://www.youtube.com/watch?v=5tddNO6YVZU&amp;ab_channel=MaisEncore">#CRAQUAGE?</a></em></p>





<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong> Windows Server 2k19 et versions ultérieures</li>



<li><strong>Apps : </strong>VEEAM B&amp;R 12.x, VEEAMOne 12.x, VSPC 8.0</li>



<li><strong>Autres : </strong>
<ul class="wp-block-list">
<li><a href="https://erwanguillemard.com/windows-veeam-backup-replication/">VEEAM B&amp;R 12.x</a></li>



<li><a href="https://erwanguillemard.com/apps-veeam-one/">VEEAM One 12.x</a></li>



<li>License VEEAM Entreprise</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Il est important dans la continuité des bonnes résolutions de cette année 2025 d&rsquo;essayer de réaliser des billets moins conséquents.</p>



<p>C&rsquo;est pourquoi, je partirai du principe où les environnements VEEAM B&amp;R et VEEAM One sont déjà déployés. Je pars également du principe dans le bon respect du silotage réseau et de la mise en place du tiering que nos 3 environnements ne sont pas sur le même réseau.</p>



<p>Nous verrons donc dans les parties ci-dessous comment déployer l&rsquo;application VSPC sur une architecture 2 tiers. L&rsquo;objectif étant (<strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">Attention spoiler</mark></strong>) d&rsquo;implémenter dans un second billet l&rsquo;architecture (light) VCC<sup data-fn="dc27ed83-7aa0-420d-8a49-2102adea8ae7" class="fn"><a href="#dc27ed83-7aa0-420d-8a49-2102adea8ae7" id="dc27ed83-7aa0-420d-8a49-2102adea8ae7-link">4</a></sup> [sous réserve d&rsquo;obtenir une licence NFR<sup data-fn="1f7b2a1f-f0fd-45a8-8b07-2a58b8eccf73" class="fn"><a href="#1f7b2a1f-f0fd-45a8-8b07-2a58b8eccf73" id="1f7b2a1f-f0fd-45a8-8b07-2a58b8eccf73-link">5</a></sup>, mais je pense que cela ne sera pas possible. Sauf peut-être en demandant poliment et gentiment].</p>



<p>Je n&rsquo;aborderai donc pas ce point ni celui de MS O365<sup data-fn="4ae01a41-e78e-41c7-900a-9aa6b92f6c0d" class="fn"><a href="#4ae01a41-e78e-41c7-900a-9aa6b92f6c0d" id="4ae01a41-e78e-41c7-900a-9aa6b92f6c0d-link">6</a></sup> (pour des raisons de ressources). C&rsquo;est pourquoi les schémas seront épurés au possible. Croyez moi, cela va nous simplifier la vie.</p>



<p>Comme pour les autres articles et encore une fois quitte à me répéter. Il s&rsquo;agit là de mon implémentation, établie sur le guide officiel. Comme d&rsquo;accoutumé, rien ne vous oblige à suivre <strong>MON</strong> mode opératoire.</p>



<h2 class="wp-block-heading">Guide</h2>



<p>Vous êtes plusieurs à m&rsquo;avoir fait la douce remarque que mes articles vous amenaient à des états de crapulences du fait de leur longueur passablement excessive. J&rsquo;ai pris la bonne résolution de faire plus court et de jouer les citrates de bétaïne pour nos cellules grises. Malheureusement, je n&rsquo;y arrive pas&#8230;</p>



<p>Alors m&rsquo;est venu l&rsquo;idée de changer de format et de vous présenter des « sous-parties ». A voir si ce format est plus adapté. 🙂</p>



<ul class="wp-block-list">
<li><strong><a href="https://erwanguillemard.com/apps-vspc-partie-1-theorie/">Partie 1 : Théorie</a></strong>
<ul class="wp-block-list">
<li>Aborder les bonnes pratiques, l&rsquo;architecture et topologie la plus adéquate pour la VSPC. Les performances systèmes requis, le mode de licensing ainsi que les permissions</li>
</ul>
</li>



<li><strong><a href="https://erwanguillemard.com/apps-vspc-partie-2-pratique/">Partie 2 : Pratique</a></strong>
<ul class="wp-block-list">
<li>Installation de l&rsquo;infrastructure 2/3, configuration de l&rsquo;application en tant que VSPC uniquement et Intégration de deux produits VEEAM.</li>
</ul>
</li>



<li><strong><a href="https://erwanguillemard.com/apps-vspc-partie-3-visite-guidee/">Partie 3 : Visite Guidée</a></strong>
<ul class="wp-block-list">
<li>Présentation des différents menus, onglets et fonctionnalités proposé par la console VSPC</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Le produit VEEAM Service Provider Console est un produit puissant qui permet de centraliser en un seul point l&rsquo;ensemble des produits VEEAM d&rsquo;une ou plusieurs organisations. Pensé pour les fournisseurs de services managés, cette solution sait transformer des données techniques en données analytiques et financières tout en garantissant une flexibilité des services clients, allant même si nous le souhaitons s&rsquo;inscrire non plus dans une offre B2B<sup data-fn="047c763c-d64d-4b63-9a59-f8b0634d1294" class="fn"><a href="#047c763c-d64d-4b63-9a59-f8b0634d1294" id="047c763c-d64d-4b63-9a59-f8b0634d1294-link">7</a></sup> mais dans une logique commerciale B2B2B<sup data-fn="dcaa868d-b545-4bae-9518-b37e964d2117" class="fn"><a href="#dcaa868d-b545-4bae-9518-b37e964d2117" id="dcaa868d-b545-4bae-9518-b37e964d2117-link">8</a></sup> (et non <a href="https://www.youtube.com/watch?v=Oh0Dqp8AzL0&amp;ab_channel=100%25ChansonFran%C3%A7aise">2Be3</a>&#8230;).</p>



<p class="has-text-align-center"><strong>Son objectif ? Je dirai plutôt ces objectifs au pluriel.</strong></p>



<p>Faciliter l&rsquo;administration et le MCO<sup data-fn="0a60dd5d-f38a-46f9-a459-848565dad7cc" class="fn"><a href="#0a60dd5d-f38a-46f9-a459-848565dad7cc" id="0a60dd5d-f38a-46f9-a459-848565dad7cc-link">9</a></sup> des environnements VEEAM des différentes organisations liées à la VSPC. Démontrer l&rsquo;efficience de la solution sur la flexibilité d&rsquo;ajustement des licences à la hausse comme à la baisse sur les différents produits en temps réel. Les outils internes présent permettent de définir une stratégie commerciale simple et efficace sur les différents produits VEEAM, que nous MSP<sup data-fn="40b40f20-1692-4d57-9c5e-6519fa7e1267" class="fn"><a href="#40b40f20-1692-4d57-9c5e-6519fa7e1267" id="40b40f20-1692-4d57-9c5e-6519fa7e1267-link">10</a></sup> avons dans notre catalogue de service.</p>



<p class="has-text-align-center"><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-6-color"><strong>&lt;3 La VSPC, le rêve de tous SysAdmin gestionnaire d&rsquo;hébergement &lt;3</strong></mark></p>



<p>Toutefois, l&rsquo;outil n&rsquo;est pas parfait&#8230; </p>



<p class="has-text-align-center"><strong>Quoi, t&rsquo;es choqué déçu ?! T&rsquo;es qu&rsquo;un sa**p ! Je m&rsquo;explique, ne dressez pas mon procès sans savoir ce que je vais écrire 🙂</strong></p>



<p>Oui l&rsquo;outil n&rsquo;est pas parfait à mon gout. Il est difficile de dissocier la partie VSPC des services VCC bien que logique car ce dernier est prévu pour une usage fournisseur. Admettons que cela ne soit pas un problème, cela nécessite je pense une équipe dédiée à la sauvegarde et autres modes de protection.</p>



<p>Une équipe pour gérer VEEAM ? Oui une équipe pour traiter <strong>TOUS</strong> les produits VEEAM depuis l&rsquo;hébergement Providers et Managed. L&rsquo;offre doit être construit dans ce sens afin de fournir un service clé en main à vos clients (du moins si je monte ma boite demain, je tournerai une offre dans ce sens et je ne vous dis pas tout ! ) :</p>



<ul class="wp-block-list">
<li>Gestion des sauvegardes, réplications avec rapports hebdomadaire, mensuels, annuels</li>



<li>MCO des produits VEEAMs</li>



<li>Ajustements des licences</li>



<li>TCO, plan d&rsquo;investissement et d&rsquo;amortissement</li>



<li>Revendeur en tant que marque blanche</li>
</ul>



<p>De mon expérience personnelle (si maigre soit elle), l&rsquo;exploitation VEEAM n&rsquo;est pas bien réalisée par les équipes externes ou internes. La mise à jour d&rsquo;un certains nombres de VEEAM prend un temps important. Imaginons maintenant la mise à jour des infrastructure :</p>



<ul class="wp-block-list">
<li>VSPC</li>



<li>VEEAMOne</li>



<li>VEEAM Backup et Réplication</li>



<li>VB Microsoft O365</li>



<li>VCC</li>



<li>etc</li>
</ul>



<p>Et attention, à l&rsquo;ordre d&rsquo;application&#8230;</p>



<p>Maintenir l&rsquo;architecture VEEAM peut vite devenir complexe. De plus, la validation des prérequis et l&rsquo;élaboration de la matrice d&rsquo;interopérabilité entre les solutions tierces demande également une bonne analyse.</p>



<p> Bref, une équipe dédiée à VEEAM est impératif <strong>#MYPOINTOFVIEW</strong>.</p>



<p>La grosse faiblesse de la VSPC à mon sens reste le détail de l&rsquo;analytique et du nombre de data exploitable. Difficile de faire une analyse sur 13 mois glissante ou sur une période donnée par organisation ou par job&#8230; Donc l&rsquo;établissement de rapports hebdomadaire, mensuels ou annuels sont compromis ? Non car comme je l&rsquo;ai dit, l&rsquo;API<sup data-fn="1d085218-842d-45d8-834d-93db22c4c6c3" class="fn"><a href="#1d085218-842d-45d8-834d-93db22c4c6c3" id="1d085218-842d-45d8-834d-93db22c4c6c3-link">11</a></sup> fournit par la VSPC,  noyaux convergeant des solutions VEEAM qui y sont liées va nous offrir par sa flexibilité et puissance la bouffée d&rsquo;oxygène dont nous avons besoin pour arriver à nos fins 🙂</p>



<p class="has-text-align-center"><strong><em>[Non je n&rsquo;ai toujours pas d&rsquo;action VEEAM, mais peut-être un petit peu amoureux&#8230; :-°]</em></strong></p>



<p>Bref, si cet article est présent et si j&rsquo;ai voulu présenter cette solution il faut se douter que j&rsquo;ai une idée derrière la tête. Prochainement, je vous lâche un teaser comme dise la GEN Z (pas certain qu&rsquo;ils disent ce genre de chose. Un banger peut-être ?).</p>



<p>Le mot de la fin</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Si Voltaire considère le travail comme la plus grande consolation pour les malheurs inséparables de la condition humaine, c&rsquo;est qu&rsquo;il ne connaissait pas la VSPC et qu&rsquo;il aurait dû faire craquer le compte CPF de Candide pour la VMCE !</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://helpcenter.veeam.com/docs/vac/provider_admin/get_started.html?ver=81">VSPC : Guide</a></li>



<li><a href="https://helpcenter.veeam.com/docs/vac/deployment/ports.html?ver=81">VSPC : Guide Ports</a></li>



<li><a href="https://helpcenter.veeam.com/docs/vac/deployment/permissions.html?ver=81">VSPC : Guide Permissions</a></li>



<li><a href="https://helpcenter.veeam.com/docs/vac/provider_admin/manage_one.html?ver=81">VSPC : VEEAMOne</a> </li>



<li><a href="https://helpcenter.veeam.com/docs/vac/provider_admin/manage_vbr.html?ver=81">VSPC : VEEAM B&amp;R</a></li>



<li><a href="https://helpcenter.veeam.com/docs/vac/rest/reference/vspc-rest.html?ver=81">VSPC : Guide API</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="c686f661-ae3b-427d-b948-30b5ed404386"><strong>VUL</strong> : VEEAM Universal License <a href="#c686f661-ae3b-427d-b948-30b5ed404386-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="c49f3d57-69aa-4166-a8ce-09b57637e0a8"><strong>SIs</strong> : Système d&rsquo;Information <a href="#c49f3d57-69aa-4166-a8ce-09b57637e0a8-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="1d8bc6a0-985e-40e5-9463-565198a13ab8"><strong>VSPC</strong> : VEEAM Service Provider Console <a href="#1d8bc6a0-985e-40e5-9463-565198a13ab8-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="dc27ed83-7aa0-420d-8a49-2102adea8ae7"><strong>VCC</strong> : VEEAM Cloud Connect <a href="#dc27ed83-7aa0-420d-8a49-2102adea8ae7-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="1f7b2a1f-f0fd-45a8-8b07-2a58b8eccf73"><strong>NFR</strong> : Not For Resale <a href="#1f7b2a1f-f0fd-45a8-8b07-2a58b8eccf73-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="4ae01a41-e78e-41c7-900a-9aa6b92f6c0d"><strong>MS O365</strong> : Microsoft Office 365 <a href="#4ae01a41-e78e-41c7-900a-9aa6b92f6c0d-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="047c763c-d64d-4b63-9a59-f8b0634d1294"><strong>B2B</strong> : Business To Business <a href="#047c763c-d64d-4b63-9a59-f8b0634d1294-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="dcaa868d-b545-4bae-9518-b37e964d2117"><strong>B2B2B</strong> : Business To Business To Business <a href="#dcaa868d-b545-4bae-9518-b37e964d2117-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="0a60dd5d-f38a-46f9-a459-848565dad7cc"><strong>MCO</strong> : Maintient en Condition Opérationnel <a href="#0a60dd5d-f38a-46f9-a459-848565dad7cc-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="40b40f20-1692-4d57-9c5e-6519fa7e1267"><strong>MSP</strong> : Managed Service Provider (Fournisseur de Services Administrés) <a href="#40b40f20-1692-4d57-9c5e-6519fa7e1267-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="1d085218-842d-45d8-834d-93db22c4c6c3"><strong>API</strong> : Application Programming Interface <a href="#1d085218-842d-45d8-834d-93db22c4c6c3-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li></ol>


<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projet &#8211; Passerelle VEEAMOne/ITOP</title>
		<link>https://erwanguillemard.com/projet-passerelle-veeamone-itop/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Tue, 12 Nov 2024 22:23:33 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Projets]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[iTop]]></category>
		<category><![CDATA[Projet]]></category>
		<category><![CDATA[VEEAMONE]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=2428</guid>

					<description><![CDATA[Bien, ça fait un petit moment que j&#8217;avais ça en réserve et que je me devais de vous présenter ce petit projet. Cela m&#8217;a demandé du temps. Pourquoi vous demandez vous ? Excellente question à toi qui vient d&#8217;aborder la lecture de ce billet. La réponse est simple et s&#8217;articule en deux points. Laissez-moi donc...]]></description>
										<content:encoded><![CDATA[
<p>Bien, ça fait un petit moment que j&rsquo;avais ça en réserve et que je me devais de vous présenter ce petit projet. Cela m&rsquo;a demandé du temps. Pourquoi vous demandez vous ?</p>



<p>Excellente question à toi qui vient d&rsquo;aborder la lecture de ce billet. La réponse est simple et s&rsquo;articule en deux points. Laissez-moi donc les énumérer :</p>



<ul class="wp-block-list">
<li>J&rsquo;attendais impatiemment la sortie communautaire LTS<sup data-fn="f191d455-4717-4aaf-8ff4-82c9265b904b" class="fn"><a href="#f191d455-4717-4aaf-8ff4-82c9265b904b" id="f191d455-4717-4aaf-8ff4-82c9265b904b-link">1</a></sup> ITOP 3.2.X en lieu et place de la version 2.7.X (entre nous ITOP c&rsquo;est fait une sacrée beauté &lt;3)</li>



<li>J&rsquo;avais une flemme monstrueuse de remonter un ITOP from scratch, sur un environnement durci et configurer ce dernier pour « mon organisation »</li>
</ul>



<p>Bref, malgré un emploi du temps le jour bien remplie. Me voilà repris d&rsquo;insomnie et de doutes qu&rsquo;il faut ma foi bien occuper.</p>



<p class="has-text-align-center"><strong><em>Sinon, tu te la joues BOOMER qui raconte sa LIFE sur Facebook ? Tu vas nous parler de ton projet et de tes travaux ?</em></strong> <strong><em><a href="https://www.youtube.com/watch?v=hPpdJEMRGwE&amp;ab_channel=FranceInter">#RIENAFOUTRE</a></em></strong></p>



<p>Promis, j&rsquo;arrête pour au moins deux paragraphes&#8230; Je suis parti d&rsquo;une problématique professionnelle (qui n&rsquo;intéresse malheureusement que moi et non certains de mes pairs&#8230;), comment s&rsquo;assurer des états de notre outils de supervision (monitoring) et du bon traitement des alarmes avertissements ou erreurs remontées sur notre SI<sup data-fn="d7c86f1e-4938-4f27-a623-2239f16a69e6" class="fn"><a href="#d7c86f1e-4938-4f27-a623-2239f16a69e6" id="d7c86f1e-4938-4f27-a623-2239f16a69e6-link">2</a></sup> ?</p>



<p>Une première approche est de prendre un ETP<sup data-fn="f1d99d7a-2755-48a1-8e82-84bc9b93e4c0" class="fn"><a href="#f1d99d7a-2755-48a1-8e82-84bc9b93e4c0" id="f1d99d7a-2755-48a1-8e82-84bc9b93e4c0-link">3</a></sup> compétent et qui ne coute pas trop à la société, de le scotcher à une chaise devant la solution de monitoring et de l&rsquo;autoriser à dormir que lorsque tout est au vert fixe !</p>



<p>Cette première méthode est loin de plaire à nos amis syndicalistes, partisans du code du travail et certains RH.</p>



<p>Il y a donc une seconde approche, celle où les éditeurs de solution de surveillance des SIs partent du postulat que les alertes sont envoyées par courriel (hé oui je n&rsquo;ai pas écrit e-mail). Mais là encore, c&rsquo;est compliqué de ne pas se noyer dans la volumétrie des mails et de ne pas passer à côté d&rsquo;un événement important. Point positif, nous pouvons mettre plusieurs personnes/collaborateurs derrière une BAL<sup data-fn="0aa1a249-3ecf-41de-9099-f521c19d40af" class="fn"><a href="#0aa1a249-3ecf-41de-9099-f521c19d40af" id="0aa1a249-3ecf-41de-9099-f521c19d40af-link">4</a></sup>. Quoi que cela demande de la communication (et la communication dans une entreprise n&rsquo;est pas une compétence acquise de tous. Un peu comme la politesse&#8230;).</p>



<p>Et enfin, il y a la troisième approche. Qui arrive timidement par certains éditeurs de solution de supervision qui propose d&rsquo;interfacer leurs plateformes avec une solution de ticketing (souvent ITSM<sup data-fn="1fd80a16-6c1d-4153-90e3-0ecc9f956387" class="fn"><a href="#1fd80a16-6c1d-4153-90e3-0ecc9f956387" id="1fd80a16-6c1d-4153-90e3-0ecc9f956387-link">5</a></sup>). Là autant vous dire que je fais un gros cœur avec les mains devant mon écran. C&rsquo;est ainsi que dans un article précédent traitant de VEEAMOne (je n&rsquo;ai toujours pas d&rsquo;action qu&rsquo;on se le dise), VEEAMOne propose une connexion à la solution de ticketing ServiceNow. Franchement c&rsquo;est super, il n&rsquo;y a rien à faire sauf sortir le chéquier, changer de solution de ticketing si nous en avions déjà un, lancer des projets de migration&#8230; Bref ça me pose un problème car ce n&rsquo;est pas l&rsquo;outil que j&rsquo;utilise pour la gestion de mes tickets.</p>



<p>Là, encore une fois nous avons deux possibilités :</p>



<ul class="wp-block-list">
<li>Notre solution ITSM peut créer des tickets sur réception de notification mail. Soit de manière plus concrète avec un peu de paramétrage, nous allons faire créer une requête lors de la réception d&rsquo;un email d&rsquo;alerte ou d&rsquo;avertissement. (Perso, je ne suis pas fan de cette méthode).</li>



<li>Nous utilisons les APIs des deux solutions et nous développons une petite passerelle 🙂 (Perso j&rsquo;aime d&rsquo;avantage).</li>
</ul>



<p>Toutefois et comme c&rsquo;est la solution que je vais présenter il est important de comprendre avant d&rsquo;aller plus loin qu&rsquo;il y a des avantages et beaucoup de contraintes à développer une passerelle (entre nous, nous l&rsquo;appellerons GW<sup data-fn="25af4c42-afb9-44b3-9039-e222037b293e" class="fn"><a href="#25af4c42-afb9-44b3-9039-e222037b293e" id="25af4c42-afb9-44b3-9039-e222037b293e-link">6</a></sup> parce que c&rsquo;est un mot qui me soule à écrire. Hé oui au ch***e la loi Toubon ! Mais que de grossièreté !).</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Avantages</strong></td><td class="has-text-align-center" data-align="center"><strong>Inconvénients</strong></td></tr><tr><td class="has-text-align-center" data-align="center">Langages libres<br>Découvertes techniques<br>Satisfaire l&rsquo;appétence techniques</td><td class="has-text-align-center" data-align="center">Avoir une documentation sur les deux APIs<br>MCO du code lors des montées de version<br>Bien penser son code<br>Penser générique</td></tr></tbody></table></figure>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="513" height="144" src="https://erwanguillemard.com/wp-content/uploads/2024/10/AP_010_002_GW.png" alt="" class="wp-image-2431" srcset="https://erwanguillemard.com/wp-content/uploads/2024/10/AP_010_002_GW.png 513w, https://erwanguillemard.com/wp-content/uploads/2024/10/AP_010_002_GW-300x84.png 300w" sizes="auto, (max-width: 513px) 100vw, 513px" /></figure>
</div>


<p class="has-text-align-center has-small-font-size"><em>Nous remarquerons l&rsquo;acquisition des compétences et maitrise de l&rsquo;application PAINT. Oui, j&rsquo;ai un doctorat en PAINT appliqué !</em></p>





<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong>&nbsp;Windows Server 2k19 et version ultérieures</li>



<li><strong>Apps :&nbsp;</strong>VEEAMOne 12.x, ITOP 3.2.X</li>



<li><strong>Autres :</strong>
<ul class="wp-block-list">
<li>PowerShell version 5 et ultérieures</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Comme d&rsquo;habitude, je vais proposer ci-dessous un usage sécuriser de l&rsquo;outil. Je n&rsquo;ai pas la prétention toutefois de garantir un haut niveau de sécurité dans le code (ça fait longtemps et je suis un peu rouillé dans ce domaine).</p>



<p>J&rsquo;annonce en amont que le code source ne sera pas accessible sur le GitHub en libre accès. <strong>Ah ouai et pourquoi donc ?</strong></p>



<p>Je suis plutôt content de ce que j&rsquo;ai créé. Toutefois, je ne suis pas satisfait de la qualité du code et de certaines méthodes que j&rsquo;ai pu développer. Je pense qu&rsquo;un grand pas a été fait mais que cette aventure nécessite d&rsquo;être porté par et avec d&rsquo;autres personnes et ceux afin de proposer ce projet comme quelques choses d&rsquo;abouti et de communautaire. Mais voyez vous, je ne suis plus dev et je rentre sur un terrain et domaine ou le jugement est facile, faire un peu moins.</p>



<p>C&rsquo;est pourquoi, si vous êtes intéressé par ce projet, je suis à votre disposition pour échanger et collaborer sur ça factorisation et évolution.</p>



<p>Je vous rassure toutefois, je vais aller assez loin dans mes choix et dans la logique dont j&rsquo;ai construit cette GW. Sinon à quoi bon faire un article sur le sujet si ce n&rsquo;est que pour satisfaire une petit plaisir solitaire issue du fruit d&rsquo;une masturbation intellectuelle ?</p>



<h2 class="wp-block-heading">Théorie</h2>



<p>Je tiens à garder un format à peu près standard pour chacun de mes articles. Dans ce cas précis, nous considérons cette partie plus comme un cahier des charges et expressions des besoins. Naturellement, nous apporterons des réponses et solutions ce qui n&rsquo;est donc pas tout à fait juste un cahier des charges.</p>



<p>(Mais qu&rsquo;est-ce qu&rsquo;il peut être torturé ce garçon&#8230; Oui mais non ce n&rsquo;est pas ça, mais ça tout de même. Quelqu&rsquo;un veut-il prendre l&rsquo;initiative de lui mettre un coup de pelle derrière les oreilles pour qu&rsquo;il aille à l&rsquo;essentiel ?)</p>



<h3 class="wp-block-heading">Expression du besoin</h3>



<p>Bien, nous avons tous à ce jour des infrastructures virtualisées en local (onpremise) ou dans le cloud (privé ou public). En tant que fournisseur de service (Service Provider), je suis contraint de réaliser l&rsquo;exploitation de l&rsquo;ensemble de mon infrastructure hébergé chaque jour pour l&rsquo;ensemble de nos clients. Toutefois, mon périmètre est restreint aux services et infrastructures permettant d&rsquo;assurer le bon fonctionnement des environnements constituant notre infrastructure.</p>



<p>Comment s&rsquo;assurer que les serveurs clients ont bien leurs MCO<sup data-fn="f29fcc2d-94f5-4c52-9877-bad186eaca9c" class="fn"><a href="#f29fcc2d-94f5-4c52-9877-bad186eaca9c" id="f29fcc2d-94f5-4c52-9877-bad186eaca9c-link">7</a></sup> d&rsquo;effectuer par les équipes opérationnelles ? Comment s&rsquo;assurer que le responsable informatique effectue bien son MCO ?</p>



<p>Il est facile et malheureusement (je l&rsquo;ai constaté) il est facile de cacher des dysfonctionnements d&rsquo;exploitations aux yeux de l&rsquo;entreprise et de ces dirigeants. Un peu comme il est facile de cacher des cadavres dans les placards quand il n&rsquo;y a plus de place sous le tapis.</p>



<p>Possédant une solution ITSM/CMDB<sup data-fn="54fccf78-98cb-4623-8360-19b237ba2ba9" class="fn"><a href="#54fccf78-98cb-4623-8360-19b237ba2ba9" id="54fccf78-98cb-4623-8360-19b237ba2ba9-link">8</a></sup>, j&rsquo;ai nommé ITOP (là non plus je n&rsquo;ai pas d&rsquo;action), pourquoi ne pas faire remonter les éléments de notre supervision VEEAMOne dans ce dernier.</p>



<p>Cela permettrait de s&rsquo;assurer d&rsquo;être pro actif lors d&rsquo;un potentiel dysfonctionnement d&rsquo;exploitation (espace disque, consommation élevée de CPU, RAM etc.) et dans les cas les plus complexe de garder une trace du traitement et donc nourrir la base de connaissance de notre service IT ?</p>



<p>Il sera donc utile de définir un cycle de vie.</p>



<h3 class="wp-block-heading">Cahier des Charges</h3>



<p>Afin de répondre aux besoins, je prends le parti de ne pas développer de module directement côté ITOP, ni côté VEEAMOne.</p>



<p>Pourquoi ? ITOP n&rsquo;est pas pour moi une solution que je maitrise à 100% et cela demande des compétences WEB (HTML/CSS/PHP/JS et autres frameworks) que je ne possède pas. Côté VEEAMOne l&rsquo;application n&rsquo;est pas « ouverte ». Toutefois la solution que je souhaite proposer tend à une intégration côté VEEAMOne. Finalement, une fois que le code a été pondu une fois, il suffit de le traduire et l&rsquo;adapter dans un autre langage.</p>



<p>J&rsquo;ai choisi d&rsquo;utiliser en langage le framework .NET Powershell (version 5 et plus) afin d&rsquo;exécuter les opérations sur un un environnement Windows.</p>



<p>Le script sera utilisé sur un serveur Windows indépendant des deux solutions applicatives.</p>



<p>Dans un premier temps, le script sera utilisé de manière quotidienne une seule fois à 09h00. Aucun module d&rsquo;exception sera implémenté car rien ne justifie de ne pas faire remonter les alertes. Lors de la présence d&rsquo;une alerte dans la console de supervision, une alerte sera créée singulièrement avec pour contenu la dite alarme au format HTML 5.</p>



<p>Le demandeur du ticket sera un utilisateur identifié comme une service bot. Le ticket sera affecté au service IT compétent et identifié.</p>



<h4 class="wp-block-heading">Topographie &#8211; Infrastructure</h4>



<p>L&rsquo;infrastructure réseau est plutôt simple. Il suffira de prendre les ports par défaut si ces derniers n&rsquo;ont pas été modifiés (1239 pour accéder l&rsquo;API WEB de VEEAMOne et 443 pour accéder à l&rsquo;API d&rsquo;ITOP). Dans le cas contraire, il faudra chercher un dans les paramètres pour trouver l&rsquo;information.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="865" height="180" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_003_Topographie_network.png" alt="" class="wp-image-2441" style="width:485px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_003_Topographie_network.png 865w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_003_Topographie_network-300x62.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_003_Topographie_network-768x160.png 768w" sizes="auto, (max-width: 865px) 100vw, 865px" /></figure>
</div>


<p>Dans l&rsquo;idée, je souhaite tirer les informations et données du serveur VEEAMOne via le Serveur Tools et pousser les données vers le Serveur ITOP.</p>



<h4 class="wp-block-heading">Topographie &#8211; Applicative</h4>



<p>La logique de traitement a été identifié et pensé de la manière suivante (dans un premier temps car je pense perfectible la chose).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="886" height="283" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_004_Topographie_applicative.png" alt="" class="wp-image-2443" style="width:560px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_004_Topographie_applicative.png 886w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_004_Topographie_applicative-300x96.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_004_Topographie_applicative-768x245.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></figure>
</div>


<p>Nous admirons le schéma pour apprendre à compter jusqu&rsquo;à 9 !</p>



<ul class="wp-block-list">
<li><strong>1</strong> : Appel API pour l&rsquo;ouverture de session de manière sécurisé et demande de récupération des données à collecter</li>



<li><strong>2</strong> : Autorisation de connexion et retour des données collectées ou non si absente</li>



<li><strong>3</strong> : Traitement des données brutes récupérées de VEEAMOne afin de faciliter la création des requêtes ITOP</li>



<li><strong>4</strong> : Appel API pour l&rsquo;ouverture de session de manière <mark style="background-color:rgba(0, 0, 0, 0);color:#fd0000" class="has-inline-color">NON sécurisé</mark><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">e</mark> (pour l&rsquo;instant) et demande de récupération des données nécessaires à la qualification des données à traiter</li>



<li><strong>5</strong> : Autorisation de connexion et retour des données demandées</li>



<li><strong>6</strong> : Création d&rsquo;une requête via API avec les informations traitées/extraites de VEEAMOne et les informations ITOP.</li>



<li><strong>7</strong> : Retour de la requête API, si cette dernière retourne un code différent de 0 il faudra se <a href="https://www.youtube.com/watch?v=XDVZoMlxzJA&amp;ab_channel=IsabelleAdjaniVEVO">plonger</a> dans la documentation et dans le MCD<sup data-fn="8cde5590-e181-4d7a-b4a4-ace5fddd45c0" class="fn"><a href="#8cde5590-e181-4d7a-b4a4-ace5fddd45c0" id="8cde5590-e181-4d7a-b4a4-ace5fddd45c0-link">9</a></sup> d&rsquo;ITOP.</li>



<li><strong>8</strong> : Appel d&rsquo;un stimulus par appel API pour assigner la requête à une équipe et respecter le cycle de vie ITOP.</li>



<li><strong>9</strong> : Comme pour l&rsquo;étape 7 il conviendra d&rsquo;être vigilant à l&rsquo;erreur retournée. Sans quoi, vous retourner avec ADJANI en case piscine.</li>
</ul>



<h4 class="wp-block-heading">Topographie &#8211; Logiciel</h4>



<p>Le script sera pensé de la manière suivante. Une partie exécutable permettant de réaliser l&rsquo;appel des différentes fonctions et l&rsquo;import des modules comportant les fonctions statiques.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="918" height="337" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_005_Topographie_logicielle.png" alt="" class="wp-image-2446" style="width:607px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_005_Topographie_logicielle.png 918w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_005_Topographie_logicielle-300x110.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_005_Topographie_logicielle-768x282.png 768w" sizes="auto, (max-width: 918px) 100vw, 918px" /></figure>
</div>


<p>En résumer, nous avons un fichier .ps1 qui va servir d&rsquo;exécutable et trois fichiers module powershell qui nous permettrons de réaliser distinctement les actions pour chacune des applications VEEAMOne et ITOP.</p>



<p><strong>Tain le mec nous dit plus haut avec un air supérieur qu&rsquo;il va nous apprendre à compter jusqu&rsquo;à 9 et là il nous dit 3 fichiers pour 2 applications. Tu nous prendrais pas par hasard pour des raclures de bidets ?</strong></p>



<p>C&rsquo;est juste et c&rsquo;est bien l&rsquo;effet souhaité. Je me suis aperçu avec le temps que la génération de rapport en HTML pesait lourd dans les fonctions ou dans les modules et qu&rsquo;il ne serait pas déconnant de dédier un module à la partie HTML. De plus un rapport nous pouvons considérer celui-ci comme immuable dans le temps. Donc il peut être qualifié comme module. 🙂 <a href="https://www.youtube.com/watch?v=u8ccGjar4Es&amp;ab_channel=Psychostick">Soit en conclusion 2+1 = 3. Mais n&rsquo;allons pas plus loin.</a></p>



<p>Et si nous regardions ce qu&rsquo;il y a dans le ventre des 3 modules ? Oui mais gros malin, tu nous as dit que tu ne voulais pas partager ton code. Tu vas faire comment ? Hé bien dirons nous que cela revient à regarder un porno sur CANAL+ sans abonnement (époque que certains lecteurs ne connaitront jamais). On devine, mais personne n&rsquo;en profite vraiment (où alors vous êtes des grands malades !).</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2428_1711b0-ca kt-accordion-has-3-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2428_c24b5a-2e"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">SS_039_1_COMBODO_itop_api.psm1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le module est constitué de 6 fonctions. Nous noterons le camouflage de deux informations capitales (d&rsquo;où le NON sécurisée plus haut). Il faudrait avec un peu d&rsquo;huile de coude que je modifie le code pour que ce dernier gère l&rsquo;authentification via la fonctionnalité CLIXML. Promis je travaille dessus.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="789" height="353" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_ITOP.png" alt="" class="wp-image-2448" style="width:668px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_ITOP.png 789w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_ITOP-300x134.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_ITOP-768x344.png 768w" sizes="auto, (max-width: 789px) 100vw, 789px" /></figure>
</div>


<p>Il existe deux versions de ce module. Une version compatible ITOP 2.7.X LTS et une version ITOP 3.2.X LTS. La fonction API propre à la création d&rsquo;une requête diffère entre ces deux versions.</p>



<ul class="wp-block-list">
<li><strong>formatItopNumberCustomer</strong> : Fonction qui permet de récupérer le nom et le numéro identifiant le client dans le cas où le format est du type XX-CUSTOMER. Cette fonction est plus orientée dans le cas de Service Provider. Mais qui peut le plus peu le moins c&rsquo;est pourquoi la fonction est présente par défaut</li>



<li><strong>Invoke-RestiTopMethod</strong> : Fonction qui permet de réaliser l&rsquo;appel API</li>



<li><strong>Get-REST_API_iTop</strong> : Fonction qui permet de réaliser des requêtes de type CORE/GET à notre instances ITOP</li>



<li><strong>Get-Organization</strong> : Permet de récupérer la liste des organisations présentes dans ITOP et ceux pour pouvoir créer les requêtes dans la bonne organisation</li>



<li><strong>CreateRequest-REST_API_ITOP</strong> : Fonction qui permet de réaliser des requêtes de type CORE/CREATE à notre instances ITOP pour créer une requête</li>



<li><strong>ApplyStimulus-REST_API_ITOP</strong> : Fonction qui permet de réaliser des requêtes de type CORE/APPLY_STIMULUS à notre instances ITOP pour assigner un état à notre requête créé précédemment</li>
</ul>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2428_992d3f-fc"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">SS_039_1_HTML_report.psm1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le module est constitué de 2 fonctions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="348" height="139" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_HTML.png" alt="" class="wp-image-2450" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_HTML.png 348w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_HTML-300x120.png 300w" sizes="auto, (max-width: 348px) 100vw, 348px" /></figure>
</div>


<ul class="wp-block-list">
<li><strong>Set-ITOP_HTML-VEEAMONEREPORT</strong> : Fonction qui prend un certain nombre d&rsquo;argument en paramètre afin d&rsquo;établir le rapport HTML qui sera poussé dans le corps de notre requête ITOP</li>



<li><strong>Set-ITOP_HTML-ErrorReport</strong> : Fonction qui prend un certain nombre d&rsquo;argument en paramètre afin d&rsquo;établir le rapport HTML d&rsquo;erreur qui sera poussé dans le corps de notre requête ITOP dans le cas où la fonction initiale n&rsquo;a pas pu aboutir</li>
</ul>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2428_eb27a0-ed"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">SS_039_1_VEEAM_One_api.psm1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous retrouvons sensiblement les mêmes fonctions que dans le module dédié à ITOP. Bien qu&rsquo;à l&rsquo;inverse, je n&rsquo;ai pas été fainéant car la gestion de l&rsquo;authentification est sécurisée pour VEEAMOne&#8230;</p>



<p>Passons, le module est composé de 9 fonctions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="576" height="408" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_VEEAMOne.png" alt="" class="wp-image-2451" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_VEEAMOne.png 576w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_006_Module_VEEAMOne-300x213.png 300w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure>
</div>


<ul class="wp-block-list">
<li><strong>Invoke-RestVEEAMOneMethod</strong> : Fonction qui permet de réaliser l&rsquo;appel API</li>



<li><strong>Connect-VEEAMOneAPI</strong> : Fonction qui permet d&rsquo;établir la connexion au webservice VEEAMOne</li>



<li><strong>Disconnection-VEEAMOneAPI</strong> : Fonction qui permet de cloturer la connexion au webservice VEEAMOne</li>



<li><strong>Get-ServerInformations</strong> : Fonction qui permet de retourner les informations du serveur VEEAMOne</li>



<li><strong>Get-Sessions</strong> : Fonction qui permet de retourner l&rsquo;ID de la session en cours</li>



<li><strong>Get-AllAlarms</strong> : Fonction qui permet de retourner toutes les alarmes en cours sur l&rsquo;application VEEAMOne à tous les niveaux Infrastructures à Backup de l&rsquo;hôte jusqu&rsquo;au VMs</li>



<li><strong>Get-License</strong> : Fonction qui permet de retourner les informations relatives aux licences</li>



<li><strong>VEEAMONE_Extract_Informations</strong> : Fonction qui permet de traiter les informations retournées précédemment et de consolider ces dernières</li>



<li><strong>Get-VEEAMONE_GlobalDataObject</strong> : Fonction qui appel la fonction précédente pour consolider le retour dans un seul objet</li>
</ul>
</div></div></div>
</div></div></div>



<h4 class="wp-block-heading">Sécurité</h4>



<p>La partie sécurité est un vrai enjeu. Je n&rsquo;ai malheureusement pas implémenté dans cette version à ce moment (version 1.3) la redirection des sorties dans un fichier de log. J&rsquo;ai gardé le mode debug, mais cela ne sera viable sur le long terme pour assurer un support adéquat.</p>



<p>Il en va de soi que nous avons besoin de 3 comptes en nous basant sur le principe de RBAC<sup data-fn="0290669f-efb9-4ab6-a7b3-b4f7eff01b1c" class="fn"><a href="#0290669f-efb9-4ab6-a7b3-b4f7eff01b1c" id="0290669f-efb9-4ab6-a7b3-b4f7eff01b1c-link">10</a></sup>.</p>



<ul class="wp-block-list">
<li><strong>VEEAMOne</strong> : Un compte permettant d&rsquo;accéder à l&rsquo;application en API en pouvant réaliser des requêtes. Donc membre du <strong><em>GLS VEEAM ONE Administrator</em></strong> par chance, le serveur étant joint au domaine, il suffira de peupler le bon GGS. Néanmoins, ce compte doit être vu comme un compte de service. Donc à restreindre dans les règles de l&rsquo;art pour empêcher toutes ouvertures de sessions</li>



<li><strong>ITOP</strong> : Le compte doit être protégé par un mot de passe robuste. Ce dernier doit avoir obligatoirement les profils <strong>Administrator</strong> et <strong>REST Services User</strong>. Ce compte devant accéder à l&rsquo;ensemble des données cela justifie le profil Administrator.</li>



<li><strong>Compte de Service</strong> : Il va être nécessaire d&rsquo;utiliser un compte de service pour exécuter notre tâche. Je préfère dans un premier temps passer par un compte utilisateur du domaine restreint plutôt que par un gMSA<sup data-fn="80135d95-15b4-4cd0-a0ec-c8ffde965f4b" class="fn"><a href="#80135d95-15b4-4cd0-a0ec-c8ffde965f4b" id="80135d95-15b4-4cd0-a0ec-c8ffde965f4b-link">11</a></sup></li>
</ul>



<p>Il faut également se poser la question du répertoire où va être stocké et appelé les scripts. Je ne préfère pas stocker ce dernier sur un partage réseau mais en local sur la partition système. Toutefois, je retire l&rsquo;accès du groupe utilisateur et ajoute la lecture et exécution uniquement sur le GLS des comptes de services restreints.</p>



<p>Il en sera de même pour le répertoire <strong>_auth</strong> qui va contenir l&rsquo;ensemble des éléments sécurisés d&rsquo;accès aux ressources via CLIXML.</p>



<p>Je pense qu&rsquo;avec toutes ces informations nous devrions être en capacité de réaliser le paramétrage nécessaire pour une implémentation.</p>



<h2 class="wp-block-heading">Pratiques</h2>



<p>L&rsquo;implémentation se déroulera en quatre mouvements (comme une <a href="https://www.youtube.com/watch?v=Rd0HnxWm5CY&amp;ab_channel=DWClassicalMusic">symphonie</a>), c&rsquo;est à dire le paramétrage des solutions et création des comptes, le paramétrage du script, la mise en place de la tâche planifiée et pour finir les tests de bon fonctionnement.</p>



<h3 class="wp-block-heading">Paramétrages des solutions &amp; création des accès</h3>



<h4 class="wp-block-heading">VEEAMOne</h4>



<p>Pour l&rsquo;application VEEAMOne, il n&rsquo;y a pas grand chose à faire. Tout va se faire au niveau de la création d&rsquo;un utilisateur dans notre Active Directory.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2428_5dc585-d8 kt-accordion-has-2-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2428_bf6ff7-17"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Création de l&rsquo;utilisateur</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Créer un utilisateur qui devra être utilisateur du domaine.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="753" height="565" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_007_VEEAMOne_User.png" alt="" class="wp-image-2455" style="width:532px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_007_VEEAMOne_User.png 753w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_007_VEEAMOne_User-300x225.png 300w" sizes="auto, (max-width: 753px) 100vw, 753px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2428_b590a6-f4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Assignation à un groupe</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Afin de limiter les risques au maximum, nous allons ajouter notre utilisateur au groupe de service pour restreindre le périmètre d&rsquo;attaque de ce compte.</p>



<p>Nous allons également ajouter ce dernier en tant que membre du GLS VEEAM One Administrator qui est membre du groupe local de notre serveur VEEAMOne.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="498" height="479" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_008_VEEAMOne_Group.png" alt="" class="wp-image-2456" style="width:367px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_008_VEEAMOne_Group.png 498w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_008_VEEAMOne_Group-300x289.png 300w" sizes="auto, (max-width: 498px) 100vw, 498px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>Bien, passons à ITOP.</p>



<h4 class="wp-block-heading">ITOP</h4>



<p>Contrairement à VEEAMOne, il va falloir réaliser un certain nombre de modification sur notre ITOP.</p>



<p>La création d&rsquo;un ticket nécessite plusieurs champs :</p>



<ul class="wp-block-list">
<li>Le client</li>



<li><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Un demandeur</mark></li>



<li>L&rsquo;origine</li>



<li>Le titre</li>



<li>Le corps</li>



<li><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Le service</mark></li>



<li>Type de Requête</li>



<li>L&rsquo;impact</li>



<li>L&rsquo;urgence</li>



<li>La priorité</li>



<li><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">L&rsquo;Equipe de contact</mark></li>
</ul>



<p>Nous allons avoir besoin de nous assurer de la bonne existence des champs ci-haut en vert. Dans le cas contraire, il faudra créer ces derniers.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2428_2cac9a-af kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2428_69acff-fd"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Personne</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="388" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_009_ITOP_Personn-1024x388.png" alt="" class="wp-image-2458" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_009_ITOP_Personn-1024x388.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_009_ITOP_Personn-300x114.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_009_ITOP_Personn-768x291.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_009_ITOP_Personn.png 1514w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2428_7ce1ca-20"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Compte utilisateur</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="568" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_012_ITOP_CompteUtilisateur-1024x568.png" alt="" class="wp-image-2459" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_012_ITOP_CompteUtilisateur-1024x568.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_012_ITOP_CompteUtilisateur-300x166.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_012_ITOP_CompteUtilisateur-768x426.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_012_ITOP_CompteUtilisateur.png 1069w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2428_7ea98e-82"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Services</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="443" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_010_ITOP_Services-1024x443.png" alt="" class="wp-image-2460" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_010_ITOP_Services-1024x443.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_010_ITOP_Services-300x130.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_010_ITOP_Services-768x332.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_010_ITOP_Services.png 1498w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2428_4ad432-b7"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Contact</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="296" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_011_ITOP_EquipeInterne-1024x296.png" alt="" class="wp-image-2461" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_011_ITOP_EquipeInterne-1024x296.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_011_ITOP_EquipeInterne-300x87.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_011_ITOP_EquipeInterne-768x222.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_011_ITOP_EquipeInterne.png 1508w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div></div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Paramétrage du script</h3>



<p>Encore une fois, pourquoi nous narguer avec ton script si tu nous en donnes pas l&rsquo;accès ? Tu connais l&rsquo;histoire de <a href="https://www.youtube.com/watch?v=KLhOa5Jm1js&amp;ab_channel=Gojira">Marie-Antoinette</a> ?</p>



<p>Je le redis, ma décision de ne pas lever le voile maintenant n&rsquo;est pas définitive et je préfère anticiper lorsque celui-ci deviendrait accessible de tous. Toutefois avec les éléments déjà communiqués il est aisé de faire du reverse engineering.</p>



<p>Certaines variables sont donc à définir. Il serait plus aisé de créer un fichier xml (pour les jeunes dinosaures comme moi à défaut d&rsquo;un fichier ini pour les vieux dinosaures) ou d&rsquo;un fichier json (pour la nouvelle génération) pour gérer la configuration de l&rsquo;outil. M&rsquo;enfin, je ne suis que sur une version 1.3 et je dois monter en compétence dans certain domaine. Le temps étant toujours l&rsquo;éternel problème&#8230;</p>



<p>Applicable pour la version 1.3</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2428_2ea77b-68 kt-accordion-has-3-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="0">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2428_88c9ca-f7"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; SS_039_1.0_ConnectorVEEAMOne-ITOP.ps1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>On ne touche pas la première ligne, sauf si les modules changent. Je choisie de gérer le chargement des modules à travers le script.</p>



<p>La seconde ligne se trouve être tout simplement le chemin absolu où va être stocké notre script.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="741" height="73" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_101_ITOP_ps1conf.png" alt="" class="wp-image-2463" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_101_ITOP_ps1conf.png 741w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_101_ITOP_ps1conf-300x30.png 300w" sizes="auto, (max-width: 741px) 100vw, 741px" /></figure>
</div>


<p>La variable $_const_defaultItopOrganisation doit contenir le nom de l&rsquo;organisation ITOP par défaut. Dans le cas d&rsquo;un fonctionnement en tant que Service Providers, l&rsquo;outil basculera vers dans une autre condition. Si l&rsquo;organisation client n&rsquo;est pas trouvé, l&rsquo;incident sera remonté directement dans l&rsquo;organisation par défaut.</p>



<p>Il en est de même pour la variable $_const_defaultTeam_from_defaultOrganization qui va contenir l&rsquo;équipe pour qui le ticket va être assigné. Dans le cas contraire, l&rsquo;équipe sera définie sur une valeur en dur dans le code.</p>



<p>Nous ne touchons pas au format date.</p>



<p>Plus loin dans le script nous trouvons les variables liées au system notamment pour la partie authentification.</p>



<p>Il sera nécessaire de modifier le nom du domaine, le compte qui va être utilisé pour établir la connexion à l&rsquo;application VEEAMOne. De renseigner le chemin absolu où va être stocké le fichier CLIXML pour l&rsquo;authentification.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="620" height="58" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_102_ITOP_ps1conf.png" alt="" class="wp-image-2464" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_102_ITOP_ps1conf.png 620w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_102_ITOP_ps1conf-300x28.png 300w" sizes="auto, (max-width: 620px) 100vw, 620px" /></figure>
</div>


<p>Je ferai un article sur les différentes gestions des credentials et moyen d&rsquo;authentification en powershell à l&rsquo;avenir car je pense utile pour moi de connaitre l&rsquo;ensemble des méthodes et de faire un rapide feedback. Décidemment, le respect de la loi allgood est <a href="https://www.youtube.com/watch?v=qfqA1sTKhmw&amp;ab_channel=Palmashow">dead</a> là !</p>



<p>Bref, je reviendrai sur ce point plus tard, mais dans le cas d&rsquo;un dysfonctionnement d&rsquo;authentification il suffira de supprimer le fichier xml.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2428_dedfde-4e"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; SS_039_1_VEEAM_One_api.psm1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans le fichier de module propre à VEEAMOne il faut regarder les lignes suivantes.</p>



<p><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">STOP ! RED FLAGS !!</mark> Depuis quand on balance des variables dans un fichier module ou header (.h représente !) gros cochon ! <em>Si l&rsquo;indien ou le vieux VERMEU te voyaient, tu ne convoiterais pas comme ça cette banane !</em></p>



<p>Oui je sais, pour le coup j&rsquo;ai fait de la merde par paquet de 10 et c&rsquo;est dégeulasse Mais avec ça je suis au moins certain que ce n&rsquo;est pas du chat GPT ! Je vous explique l&rsquo;hérésie. J&rsquo;ai d&rsquo;abord fait le code en ps1 (version 1.0) puis je me suis dit que l&rsquo;architecture n&rsquo;était pas la bonne. J&rsquo;ai donc refactorisé une partie du code mais pas tout. Ce heurte alors à la portabilité des variables, les appels et le transfert d&rsquo;argument&#8230; J&rsquo;ai fait comme d&rsquo;habitude. <a href="https://www.youtube.com/watch?v=JmghDKkeiik&amp;ab_channel=bref.">Je remets à demain, qui le remet à plus tard, mais pas à jamais&#8230;</a></p>



<p>Enfin, passons et regardons ce qui doit être modifié</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="541" height="74" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_103_ITOP_psm1V1_conf.png" alt="" class="wp-image-2465" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_103_ITOP_psm1V1_conf.png 541w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_103_ITOP_psm1V1_conf-300x41.png 300w" sizes="auto, (max-width: 541px) 100vw, 541px" /></figure>
</div>


<p>Préciser dans la première ligne l&rsquo;url de notre serveur VEEAMOne. Ne pas oublier d&rsquo;ouvrir les flux si besoin et de bien commencer par <strong>https://</strong> et terminer par <strong>/api</strong>.</p>



<p>Pour le reste, pas besoin de toucher 🙂</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2428_91e4f8-3e"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; SS_039_1_COMBODO_itop_api.psm1</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Idem que pour le volet précédent concernant le module VEEAMOne, c&rsquo;est à gerber&#8230; Mais c&rsquo;est comme ça et dans la vie il faut savoir serrer les dents et garder les gros morceaux (si vous avez l&rsquo;image, oui c&rsquo;est hard et dégelasse).</p>



<p>Mais comme présenté plus haut, c&rsquo;est encore plus insupportable car le couple d&rsquo;authentification à ITOP est en clair dans le fichier&#8230;</p>



<p>Oui je vais corriger ça. 🙂 Mais regardons tout de même les variables à adapter.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="766" height="87" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_104_ITOP_psm1V1_conf.png" alt="" class="wp-image-2469" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_104_ITOP_psm1V1_conf.png 766w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_104_ITOP_psm1V1_conf-300x34.png 300w" sizes="auto, (max-width: 766px) 100vw, 766px" /></figure>
</div>


<p>Dans la première ligne relative à l&rsquo;url, modifier portail.erwanguillemard.com:443 par votre url en spécifiant le port. Naturellement si vous êtes en HTTPS pas besoin de préciser le port.</p>



<p>Préciser la version de l&rsquo;API, le compte utilisateur créé précédemment (celui avec le profil REST) ainsi que son mot de passe.</p>



<p>Laissez la varibale d&rsquo;outfields à *. Sans quoi vous ne retournerez pas l&rsquo;ensemble de tous les attributs lors des appels API.</p>
</div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Sécurité</h3>



<p>Deux aspects sont à considérer sur ce point. Je ne traiterai pas de la partie gMSA car cela fera le biais d&rsquo;un autre billet.</p>



<ul class="wp-block-list">
<li>Qui peut accéder au répertoire scripts ?</li>



<li>Qui peut accéder au fichier permettant l&rsquo;authentification ?</li>
</ul>



<p>A ces deux questions, je répondrai uniquement les utilisateurs administrateurs du domaines et local de notre serveur en contrôle total ainsi que le groupe de services en lecture exécutions et écritures uniquement sur le répertoire _auth. Oui sinon comment exporter le fichier xml ?</p>



<p>Ainsi, nous passerions des droits suivants :</p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Avant</strong></td><td class="has-text-align-center" data-align="center"><strong>Après</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="145" class="wp-image-2471" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_105_beforeACL.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_105_beforeACL.png 726w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_105_beforeACL-300x124.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="150" class="wp-image-2472" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_106_afterACL.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_106_afterACL.png 731w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_106_afterACL-300x129.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td></tr></tbody></table></figure>



<h3 class="wp-block-heading">Taches Planifiées</h3>



<p>Pour la tache planifiée, rien de plus simple il suffit de suivre le vieux Raffiki (ou <a href="https://www.abcduvin.com/index.php/term/1,2703.xhtml">Riquiqui</a> mais à trop le suivre celui là on peut <a href="https://www.youtube.com/watch?v=Gk9rW4q7y8Q&amp;ab_channel=chance">terminer mal mon copaing</a>), il connait le chemin.</p>



<p>Néanmoins, j&rsquo;ai buté et bute encore sur un os. Je vous ai cassé les pieds avec le CLIXML pour sécuriser l&rsquo;authentification ? Et bien cela se retourne contre moi&#8230; Mais pourquoi donc ?</p>



<p>Le principe du chiffrement via CLIXML repose sur l&rsquo;usage d&rsquo;une <strong>SecureString</strong> au sens .NET du terme. Pour assurer ce chiffrement, le système utilise l&rsquo;information de la session utilisateur ainsi que du SE. Or pour déchiffrer l&rsquo;information il faut donc que les conditions de chiffrement soient présente (évident <em>Capt&rsquo;ain Obivous</em>).</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Chiffrement</strong></td><td class="has-text-align-center" data-align="center"><strong>Déchiffrement</strong></td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="272" class="wp-image-2477" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_110_import.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_110_import.png 451w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_110_import-300x233.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="269" class="wp-image-2478" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_111_export.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_111_export.png 461w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_111_export-300x230.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td></tr></tbody></table></figure>



<p>Sauf que dans notre contexte et avec les moyens mise en œuvre pour sécuriser le compte de service nous nous retrouvons avec un usage batard&#8230; Effectivement, même si la tache planifiée utilise le bon compte, cette dernière est planifié dans une autre session. Ce qui nous retourne une erreur « bête » de déchiffrement&#8230; (POWNED mon gars).</p>



<p>Paradoxalement, si nous appelons le script en dehors de la tâche planifiée, ce dernier fonctionne sans problème. J&rsquo;ai déjà des idées et piste pour prendre pleine possession du sujet. Il faut contacter MARSHAL 🙂</p>



<p>Finalement, pas besoin de MARSHAL, après plusieurs semaines (en réalité ça fait 2 ans que je cherche&#8230; Mais chut !) je suis tombé dans les méandres d&rsquo;une discussion entre deux developper .NET dans le cadre d&rsquo;une autre projet sur cet problématique. Le post datant de 2015, en tant normal je passe alégrement mon chemin, mais là j&rsquo;ai lu la problématique et la démarche pour tenter de résoudre cette dernière. La théorie est bonne, mais semblait incomplète. Et pour le coup elle était bien incomplète. Tout est une histoire de contexte.</p>



<p>La génération du fichier chiffré (Export-CLIXML) ne doit pas être fait dans la session utilisateur, mais dans le contexte de l&rsquo;utilisateur. Et donc ? Et donc chers amis, il est nécessaire de générer le fichier depuis la tâche la première fois en demandant au préalable la saisie des credentials par l&rsquo;utilisateur. De cette manière, même avec ma session qui a servi à l&rsquo;exécution, je ne peux pas déchiffrer le contenu du fichier (fallait y penser).</p>



<p>Poussant le vice plus loin, cela fonctionne avec mon compte de service, mais également avec un compte de type MSA<sup data-fn="1efa48a9-bd98-4fd0-8da2-65480836c319" class="fn"><a href="#1efa48a9-bd98-4fd0-8da2-65480836c319" id="1efa48a9-bd98-4fd0-8da2-65480836c319-link">12</a></sup>. Pour plus de détail, je vous laisse me contacter 😉</p>



<p>M&rsquo;enfin comme dirait Gaston LAGAFFE, je pose tout de même les paramètres de la tâche planifiée ici.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2428_25d085-26 kt-accordion-has-5-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2428_9751bb-01"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Général</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="634" height="486" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk1.png" alt="" class="wp-image-2479" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk1.png 634w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk1-300x230.png 300w" sizes="auto, (max-width: 634px) 100vw, 634px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2428_72dc40-33"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Trigger</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="641" height="521" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk2.png" alt="" class="wp-image-2480" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk2.png 641w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk2-300x244.png 300w" sizes="auto, (max-width: 641px) 100vw, 641px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2428_c455ea-29"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Action</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="634" height="484" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk3.png" alt="" class="wp-image-2481" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk3.png 634w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk3-300x229.png 300w" sizes="auto, (max-width: 634px) 100vw, 634px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2428_6c3bef-f4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Conditions</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="635" height="484" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk4-1.png" alt="" class="wp-image-2484" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk4-1.png 635w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk4-1-300x229.png 300w" sizes="auto, (max-width: 635px) 100vw, 635px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2428_9ee5ef-75"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show" type="button"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; Settings</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="639" height="486" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk5-1.png" alt="" class="wp-image-2485" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk5-1.png 639w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_107_tsk5-1-300x228.png 300w" sizes="auto, (max-width: 639px) 100vw, 639px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>En truandant la chose (comprendre en insérant le password en dur et en clair), c&rsquo;est ok.</p>



<h3 class="wp-block-heading">Tests et Debug</h3>



<p>Nous n&rsquo;allons pas nous mentir, une petite fonction ou menu de debug ne serait pas du luxe. Je me le note c&rsquo;est promis. (T&rsquo;ain, il y a du pain sur la planche d&rsquo;ici Noël&#8230;).</p>



<p>Allons jeter un œil <a href="https://www.youtube.com/watch?v=sFsKTkrOIps&amp;ab_channel=InaChansons"><s>du côté de chez Swann</s></a> euh de notre ITOP pardon dans la vue des tickets en cours. Oui j&rsquo;ai aussi du travail sur mon infra @home. 🙂 Mais cela nous montre l&rsquo;intérêt de la solution ?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="291" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global-1024x291.png" alt="" class="wp-image-2487" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global-1024x291.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global-300x85.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global-768x218.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global-1536x437.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_global.png 1565w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Et si nous regardons une requête plus en détail ?</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="611" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_detail-1024x611.png" alt="" class="wp-image-2486" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_detail-1024x611.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_detail-300x179.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_detail-768x459.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_108_detail.png 1422w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Nous retrouvons la valeur des attributs renseignés précédemment dans notre appel API. Le ticket est bien assigné à notre organisation <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">00-RONELAB</mark>, le demandeur est le <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Service VEEAMONE</mark>. La requête est dans l&rsquo;état <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Assignée</mark> à une équipe <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Equipe Interne</mark> depuis l&rsquo;origine <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">Supervision</mark>. La catégorie de Service est <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">SE</mark> etc. Nous retrouvons également dans le corps de notre requête l&rsquo;ensemble des <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">informations contextuelles</mark> dans la première et seconde ligne puis le <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">détail de l&rsquo;erreur</mark> dans la troisième ligne.</p>



<p>Oui mais si ça ne fonctionne pas, tu debugs comment ?</p>



<p>Pour le coup, il nous suffira de lire les retours des calls API d&rsquo;ITOP. Si c&rsquo;est 0 tu exaltes de joie si c&rsquo;est 100 tu lis gentiment le message d&rsquo;insultes et tu corriges. Dans la grande majorité des cas les erreurs résultent d&rsquo;une modification côté ITOP d&rsquo;une valeur attendue ou d&rsquo;une valeur manquante.</p>



<p>Je vous glisse un exemple ci-dessous du script en mode debug sur la création d&rsquo;une requête à la suite d&rsquo;une alarme VEEAMOne.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="449" src="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_109_tsk5-1024x449.png" alt="" class="wp-image-2488" style="width:840px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_109_tsk5-1024x449.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_109_tsk5-300x132.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_109_tsk5-768x337.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/11/AP_010_109_tsk5.png 1249w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Dans le bloc jaune, nous avons la création du ticket. Nous voyons clairement le retour <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">code=0</mark> nous informant que l&rsquo;opération de création c&rsquo;est bien passé. Notre ticket est donc dans l&rsquo;état « Nouveau ». Dans le bloc rouge qui gère l&rsquo;assignation de notre requête (pour respecter le cycle de vie) nous constatons que nous avons une erreur qui est retourné lors de notre appel API, présence d&rsquo;une insulte et d&rsquo;un <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-2-color">code=100</mark>. Etrangement, la requête échoue mais le ticket est bien assigné. Au vu du message, la requête est incomplète ou doit comporter une erreur de syntaxe. A creuser&#8230; 🙂</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La supervision comme nous le savons déjà offre une bonne vision de l&rsquo;état de santé de notre système d&rsquo;information. Cependant, il résulte lors d&rsquo;incidents ou de dysfonctionnements légers d&rsquo;exploitation un manque de suivi quant à leur résolution. Certes, un dysfonctionnement d&rsquo;espace disque sur une VM<sup data-fn="d45a292e-81b8-49a9-9313-85d6dc8e238d" class="fn"><a href="#d45a292e-81b8-49a9-9313-85d6dc8e238d" id="d45a292e-81b8-49a9-9313-85d6dc8e238d-link">13</a></sup> n&rsquo;apporte pas d&rsquo;information technique quant à sa résolution. A l&rsquo;inverse, un dysfonctionnement de synchronisation DRS<sup data-fn="64f0d887-4193-4ca4-b5fb-28e45b10840e" class="fn"><a href="#64f0d887-4193-4ca4-b5fb-28e45b10840e" id="64f0d887-4193-4ca4-b5fb-28e45b10840e-link">14</a></sup> qui nécessite de toucher au service vpxuser nécessite de nourrir la base de connaissance et de garder une trace dans la solution ITSM.</p>



<p>Vous êtes efficaces ? Soyons efficients ! L&rsquo;avantage d&rsquo;une passerelle applicative permet de se focaliser sur un point d&rsquo;entrée unique et donc d&rsquo;être réactif. Attention cela ne veut pas dire qu&rsquo;il ne faut pas regarder les autres consoles.</p>



<p>Il sera également intéressant de mesurer la volumétrie de requête créé et de se poser la question sur la stabilité ou non du SI et d&rsquo;engager ou non un plan correctif sur l&rsquo;infrastructure ou sur imaginons dans un certains cas son remplacement ou son renforcement.</p>



<p>Sur le plan service, cette méthode permettrait également de faire grandir les équipes opérationnelles quant aux traitements des différentes alarmes remontées.</p>



<p>D&rsquo;un point de vu personnel, je souffre de cette frustration de vouloir bien faire sans atteindre pleinement mon but. Le code ne sera jamais assez bien pour moi. Il reste à améliorer, factoriser, sécuriser. C&rsquo;est un métier, un métier que je n&rsquo;ai pas su faire le mien à l&rsquo;époque et maintenant (d&rsquo;un autre côté du cherche aussi, développer en Notepad++ et en Powershell ISE aussi&#8230;). <s>La frustration sur le CLIXML me laisse un gout amer. Néanmoins, pourquoi mentir et dire que tout va bien et que cela fonctionne alors que ce n&rsquo;est pas le cas ? C&rsquo;est également l&rsquo;objectif de ce site parler de ce qui fonctionne et de ce qui ne fonctionne pas ou pas comme il devrait.</s> <mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">Hourra ! (petit update 3 mois après&#8230;). Le gout amer est partie 🙂 A partir de ce jour le script est sécurisé à travers un fichier généré par CLIXML depuis un compte de service standard et gMSA. La méthode était la bonne, mais pas la pratique. Tout est histoire de contexte finalement.</mark> Comme quoi avec persévérance 🙂</p>



<p>Il serait également facile de me reprocher sur ce petit projet de ne pas avoir émis la possibilité de traiter directement les flux de mails directement dans ITOP. Mais la tâche devient tout de suite plus titanesque. Comment gérer la remédiation dans le cas d&rsquo;une variation d&rsquo;alarme ? Je laisse ça a d&rsquo;autre, il y a des APIs il faut les utiliser. La génération de ticket sur un flux de messagerie entrant doit selon moi être définie dans un cas d&rsquo;usage précis et n&rsquo;est pas adapté à un usage de monitoring, supervision.</p>



<p>Bref, à voir si certaines personnes seraient intéressés d&rsquo;échanger sur le sujet et de faire grandir ce petit projet. A savoir que je ne baisserai pas les bras car <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">SPOILER ALERTE</mark></strong>, j&rsquo;ai déjà développé les GWs :</p>



<ul class="wp-block-list">
<li><strong>VEEAM B&amp;R &lt;-&gt; ITOP</strong></li>



<li><strong>VSPC &lt;-&gt; ITOP</strong></li>
</ul>



<p>Oui M&rsquo;sieurs, Dames ! Et je vais faire les mêmes articles mais avec les corrections !</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Bonjour, je viens pour la clim ! Mon papa m&rsquo;a toujours dit de ne pas accepter les call APIs des inconnus&#8230;  C&rsquo;est que j&rsquo;ai eu un CRUD sur toi, tu aimes les films de gladiateur ?</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.servicenow.com/fr/">ServiceNow</a></li>



<li><a href="https://www.veeam.com/fr/products/free/monitoring-analytics.html">VEEAMOne</a></li>



<li><a href="https://www.combodo.com/ITOP">ITOP by COMBODO</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="f191d455-4717-4aaf-8ff4-82c9265b904b"><strong>LTS</strong> : Long Time Support <a href="#f191d455-4717-4aaf-8ff4-82c9265b904b-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="d7c86f1e-4938-4f27-a623-2239f16a69e6"><strong>SI :</strong> Système d&rsquo;Information <a href="#d7c86f1e-4938-4f27-a623-2239f16a69e6-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="f1d99d7a-2755-48a1-8e82-84bc9b93e4c0"><strong>ETP :</strong> Equivalent Temps Plein <a href="#f1d99d7a-2755-48a1-8e82-84bc9b93e4c0-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="0aa1a249-3ecf-41de-9099-f521c19d40af"><strong>BAL</strong> : Boites Aux Lettres <a href="#0aa1a249-3ecf-41de-9099-f521c19d40af-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="1fd80a16-6c1d-4153-90e3-0ecc9f956387"><strong>ITSM</strong> : Information Technology Service Management <a href="#1fd80a16-6c1d-4153-90e3-0ecc9f956387-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="25af4c42-afb9-44b3-9039-e222037b293e"><strong>GW</strong> : GateWay ou Passerelle <a href="#25af4c42-afb9-44b3-9039-e222037b293e-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="f29fcc2d-94f5-4c52-9877-bad186eaca9c"><strong>MCO</strong> : Maintien en Condition Opérationel <a href="#f29fcc2d-94f5-4c52-9877-bad186eaca9c-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="54fccf78-98cb-4623-8360-19b237ba2ba9"><strong>CMDB</strong> : Configuration Management Database <a href="#54fccf78-98cb-4623-8360-19b237ba2ba9-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="8cde5590-e181-4d7a-b4a4-ace5fddd45c0"><strong>MCD</strong> : Modèle Conceptuel des Données <a href="#8cde5590-e181-4d7a-b4a4-ace5fddd45c0-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="0290669f-efb9-4ab6-a7b3-b4f7eff01b1c"><strong>RBAC</strong> : Role Based Access Control <a href="#0290669f-efb9-4ab6-a7b3-b4f7eff01b1c-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="80135d95-15b4-4cd0-a0ec-c8ffde965f4b"><strong>gMSA</strong> : GroupManaged Service Account <a href="#80135d95-15b4-4cd0-a0ec-c8ffde965f4b-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li><li id="1efa48a9-bd98-4fd0-8da2-65480836c319"><strong>MSA</strong> : Managed Service Account <a href="#1efa48a9-bd98-4fd0-8da2-65480836c319-link" aria-label="Aller à la note de bas de page 12">↩︎</a></li><li id="d45a292e-81b8-49a9-9313-85d6dc8e238d"><strong>VM</strong> : Virtual Machine <a href="#d45a292e-81b8-49a9-9313-85d6dc8e238d-link" aria-label="Aller à la note de bas de page 13">↩︎</a></li><li id="64f0d887-4193-4ca4-b5fb-28e45b10840e"><strong>DRS</strong> : Distributed Ressources Scheduler <a href="#64f0d887-4193-4ca4-b5fb-28e45b10840e-link" aria-label="Aller à la note de bas de page 14">↩︎</a></li></ol>


<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps &#8211; VEEAM One</title>
		<link>https://erwanguillemard.com/apps-veeam-one/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Tue, 01 Oct 2024 21:28:44 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Securité]]></category>
		<category><![CDATA[VEEAM]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=2214</guid>

					<description><![CDATA[Avoir un système d&#8217;information, c&#8217;est bien. Savoir si ce dernier est en bonne santé c&#8217;est une autre paire de manche&#8230; Pourquoi commencer ce billet en étant si désagréable ? Parce que le sujet de la supervision, surveillance ou « monitoring » représente un enjeu capital pour l&#8217;activité des entreprises et il existe un large panel de solution...]]></description>
										<content:encoded><![CDATA[
<p>Avoir un système d&rsquo;information, c&rsquo;est bien. Savoir si ce dernier est en bonne santé c&rsquo;est une autre paire de manche&#8230;</p>



<p>Pourquoi commencer ce billet en étant si désagréable ? Parce que le sujet de la supervision, surveillance ou « monitoring » représente un enjeu capital pour l&rsquo;activité des entreprises et il existe un large panel de solution payante ou gratuite sur le marché. Toutes ces solutions ne couvrent pas les mêmes périmètres de surveillance. Il est donc facile de multiplier les applications et de ne plus savoir où donner de la tête.</p>



<p>Personnellement, j&rsquo;aime dissocier la surveillance d&rsquo;un SI avec 3 types de solutions :</p>



<ul class="wp-block-list">
<li>Firewall et Liens</li>



<li>Réseau Local</li>



<li>Equipements Infrastructures Physiques et Virtuels</li>
</ul>



<p>Dans certains cas, une 4 et dernière brique peut être amenée à être utilisée pour superviser des services applicatifs. Néanmoins, je ne suis pas un grand fan de ce niveau de surveillance (mais c&rsquo;est mon opinion personnel) et il faut bien justifier le poste d&rsquo;un Responsable Informatique dans sa société non ? (Je suis réducteur, mais un RSI ça sert à bien d&rsquo;autre chose et ça ne fait pas que de boire des cafés <a href="https://www.youtube.com/watch?v=pX594TK_VIc&amp;ab_channel=100%25ChansonFran%C3%A7aise">toute la sainte journée</a> avec Martine de l&rsquo;accueil. Coucou Martine 🙂 ).</p>



<p>Je souhaite donc aborder le point de surveillance « Equipements Infrastructures Physiques et Virtuels » à travers une solution payante.</p>



<p>Soyons claire sur un point car je vois venir les détracteurs de la communauté GNU/UNIX et autres DAFs (bien trop proche de leurs budgets).</p>



<p class="has-text-align-center"><strong>« Ouai mais il y a des solutions gratuites sous licence GNU qui font très bien l&rsquo;affaire. En plus tu n&rsquo;arrêtes pas de nous em*****r avec tes RHELs. VENDU ! » </strong></p>



<p class="has-text-align-left">Mon avocat à la barre, commis d&rsquo;office me représente et assure ma défense.</p>



<p>« Mon client, tiens à préciser qu&rsquo;il présentera une solution de supervision libre dans un autre billet car il est important de couvrir un périmètre similaire et plus flexible. Mon client s&rsquo;engage dans cette démarche pour réduire sa peine si toutefois il est jugé coupable. Dans un second temps, il est important de se rapporter à la maxime « Le pas cher coute trop cher ». Une solution libre et gratuite c&rsquo;est bien. Mais le jour où le MCO ne se passe pas comme prévu il est facile de passer un nombre d&rsquo;heure conséquent. Les solutions payantes offrent un service de support et de correctif en cas de vulnérabilité critique. » <strong>CHEH !</strong> Et en plus je vais tenter de vous convaincre que nous pouvons gagner ou économiser du <a href="https://www.youtube.com/watch?v=-0kcet4aPpQ&amp;ab_channel=PinkFloyd">MONEY MONEY</a>.</p>



<p>J&rsquo;ai donc décidé, d&rsquo;après le titre de ce billet de continuer avec les solutions VEEAM, VEEAMOne.</p>



<p>Pourquoi le choix de VEEAMOne ? La solution est cross plateforme et permet d&rsquo;avoir une bonne visibilité sur le socle de virtualisation, les ressources virtualisées ainsi que l&rsquo;ensemble des éléments et environnement propres à la sauvegarde (VBO365, VDP). La cerise sur le gâteau reste la partie Business View, Reporting et Capacity Planning. Mais promis, je reviendrai plus en détail sur ces points bonus.</p>



<p>Je me garde également pour plus tard un autre article pour lequel j&rsquo;ai besoin de VEEAMOne 🙂</p>





<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong> Windows Server 2k19 et version ultérieures</li>



<li><strong>Apps : </strong>VEEAM B&amp;R 12.x, VEEAMOne 12.x, VMWare/Hyperv</li>



<li><strong>Autres : </strong>
<ul class="wp-block-list">
<li><a href="https://erwanguillemard.com/windows-veeam-backup-replication/">VEEAM B&amp;R 12.x</a></li>



<li>License VEEAM Entreprise</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Avant-Propos</h2>



<p>Dans une logique de garantir un niveau de sécurité optimal, j&rsquo;ai <s>dans un premier temps</s> longtemps pensé que l&rsquo;ensemble des environnements de surveillance (supervision/monitoring) devaient être dans le même subnet que les éléments d&rsquo;administrations ou de management. Maintenant, mon approche est différente. Je préfère dédier un subnet pour l&rsquo;ensemble des solutions.</p>



<p>Mais pourquoi ? Je juge ces éléments sensibles. Ils donnent une bonne, trop bonne visibilité sur l&rsquo;ensemble du SI. Admettons que la bulle de monitoring soit compromise, il nous suffira de restreindre totalement les flux réseaux ou à en limiter les flux depuis des ressources isolés. De plus, et cela se vérifie avec le temps certaines solutions de monitoring apportent des fonctionnalités d&rsquo;actions sur les ressources sous surveillance ou de remédiations automatiques. (Mon dernier HP Tour Customer &amp; Partner nous indique bien la tendance de l&rsquo;IA et sa capacitée [monstrueuse ?] de traitement). Bref, ce n&rsquo;est pas <a href="https://www.youtube.com/watch?v=5V2D1aXX_UM&amp;ab_channel=EtienneleBolideur">un outil à mettre dans toutes les mains, c&rsquo;est un coup à être satellisé</a>&#8230;</p>



<h2 class="wp-block-heading">Théorie</h2>



<h3 class="wp-block-heading">Architecture &amp; Best Pratices</h3>



<p>Encore une fois, chacun voit midi à sa porte. Il est donc compliqué de définir une MO<sup data-fn="f06205f4-5aa7-41f6-ad2f-a0700244a619" class="fn"><a href="#f06205f4-5aa7-41f6-ad2f-a0700244a619" id="f06205f4-5aa7-41f6-ad2f-a0700244a619-link">1</a></sup> empirique. Cela dépendra des technologies et solutions utilisées que ce soit en socle de virtualisation (VMWare, HyperV etc) et produits VEEAM (VBO MS365, VBR<sup data-fn="6c5e019d-9bd7-488f-a99c-94a276a87a42" class="fn"><a href="#6c5e019d-9bd7-488f-a99c-94a276a87a42" id="6c5e019d-9bd7-488f-a99c-94a276a87a42-link">2</a></sup>, VCC<sup data-fn="e2646e5b-baaf-473d-b129-d2ce9a62c9bc" class="fn"><a href="#e2646e5b-baaf-473d-b129-d2ce9a62c9bc" id="e2646e5b-baaf-473d-b129-d2ce9a62c9bc-link">3</a></sup> etc).</p>



<p>Mais commençons par le début. Qu&rsquo;est-ce que contient VEEAM One et qu&rsquo;a-t-il dans le ventre ?</p>



<p>VEEAM One se décompose de deux grandes parties. Une partie client et une partie serveur.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_324bad-37 kt-accordion-has-2-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_6b2239-22"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">Clients</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme on s&rsquo;en doute, cela permet d&rsquo;accéder aux données des environnements virtualisés ainsi que les données relatives à la sauvegarde, réplication et autres. Toutefois, nous distinguerons deux types de client.</p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td><img loading="lazy" decoding="async" width="120" height="152" class="wp-image-2308" style="width: 120px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_020_VEEAMClient.png" alt=""></td><td class="has-text-align-center" data-align="center"><strong>Client Lourd :</strong> Son objectif est de permettre à travers la console d&rsquo;accéder à l&rsquo;ensemble des données de manière efficiente et d&rsquo;avoir une vue globale sur notre infrastructure et d&rsquo;interagir avec ce dernier selon les alertes remontées par les différentes sondes.<br><br>Il sera nécessaire de déployer/installer le client sur le poste concerné et d&rsquo;ouvrir les ports.<br><br><img loading="lazy" decoding="async" width="250" height="274" class="wp-image-2310" style="width: 250px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_020_1_VEEAMClient.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_020_1_VEEAMClient.png 445w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_020_1_VEEAMClient-274x300.png 274w" sizes="auto, (max-width: 250px) 100vw, 250px" /></td></tr><tr><td><img loading="lazy" decoding="async" width="120" height="107" class="wp-image-2309" style="width: 120px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_021_VEEAMWebClient.png" alt=""></td><td class="has-text-align-center" data-align="center"><strong>Client Web :</strong> A l&rsquo;inverse, la console web est moins orientée « opérationnelle » au sens technique, mais plus au sens qualitatif avec l&rsquo;élaboration de rapport, de tableau de bord et de définir l&rsquo;évolution du SI (capacity planning, optimisation des ressources, optimisation des couts etc).<br><br>Si les flux sont ouverts, il suffira d&rsquo;accéder à ce dernier à travers un navigateur web à travers l&rsquo;url <a href="https://monserver.contoso.lab:1239">https://monserver.contoso.lab:1239</a><br><br><img loading="lazy" decoding="async" width="250" height="210" class="wp-image-2311" style="width: 250px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_021_1_VEEAMWebClient.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_021_1_VEEAMWebClient.png 952w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_021_1_VEEAMWebClient-300x252.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_021_1_VEEAMWebClient-768x646.png 768w" sizes="auto, (max-width: 250px) 100vw, 250px" /><br></td></tr></tbody></table></figure>



<p>Ce qui nous donne le schéma des flux suivants.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="764" height="408" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_022_Schemaclients.png" alt="" class="wp-image-2313" style="width:479px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_022_Schemaclients.png 764w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_022_Schemaclients-300x160.png 300w" sizes="auto, (max-width: 764px) 100vw, 764px" /></figure>
</div>


<p>Donc si nous résumons, les choses. Le client lourd sera satisfaire les équipes opérationnelles et la partie client web les responsables / directeurs de services. Les jambes et la tête en sommes. 🙂</p>



<p>Dans son fonctionnement et c&rsquo;est là l&rsquo;une des forces de la solution. Le client lourd fonctionne sur la base d&rsquo;une API. Ce qui implique que nous pouvons réaliser TOUTES les actions qui sont présents dans la console 😀 (<em>Vous me voyez venir avec mes grosses charentaises ? </em>)</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_df8e0c-b3"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">Serveur</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>La partie serveur est bien plus complexe. De facto, les deux clients présentés précédemment sont présents sur le serveur</p>



<ul class="wp-block-list">
<li>VEEAM One Client</li>



<li>VEEAM One Web Client</li>
</ul>



<p>Ce qui est logique puisqu&rsquo;il faut bien administrer la solution&#8230;</p>



<p>Toutefois, nous rencontrons également les rôles suivants :</p>



<ul class="wp-block-list">
<li>VEEAM One Server</li>



<li>VEEAM One Database</li>



<li>VEEAM One Agent</li>



<li>VEEAM One WebServices</li>
</ul>



<p>Dans le détail de chaque rôle, la partie <strong><em>Server</em></strong> va servir à la collecte des informations, des données et stocker ces dernières dans la <strong><em>Database</em></strong> afin de pouvoir par la suite les restituer sur l&rsquo;action de l&rsquo;utilisateur à travers les clients (web ou lourd). Il est possible de mutualiser la base de données VEEAMOne (MSSQL) avec d&rsquo;autres produits. Toutefois je préfère ne pas mettre tous mes œufs dans le même panier et tenter de mutualiser mes BDDs, cela reviendrait à essayer <a href="https://fr.wikipedia.org/wiki/Jacques_Pr%C3%A9vert">d&rsquo;additionner un veau avec des cigarettes</a>&#8230;</p>



<p>La partie WebServices permettra comme nous pouvons nous en douter de garantir l&rsquo;accès depuis un navigateur web au WebClient ainsi qu&rsquo;à l&rsquo;API.</p>



<p class="has-text-align-center"><strong>C&rsquo;est quoi la partie Agent ? Ne me dit pas qu&rsquo;il faut se palucher le déploiement d&rsquo;un agent sur les ressources que nous souhaitons surveiller ? Si c&rsquo;est le cas, j&rsquo;arrête ma lecture après ta réponse !  </strong></p>



<p class="has-text-align-left">La partie Agent n&rsquo;est pas à déployer sur toutes les ressources et heureusement. VEEAM One a été pensé pour être flexible ! La communication avec les applications de virtualisation se font soit par le biais de protocoles « classiques » ou par les APIs constructeurs.</p>



<p class="has-text-align-left">L&rsquo;Agent est nécessaire uniquement lors du monitoring, de remonter d&rsquo;informations (logs) et d&rsquo;effectuer des commandes de remédiations si nécessaire entre les serveurs VBRs et le serveur VEEAM One. Le guide, recommande son installation, toutefois il n&rsquo;est obligatoire de déployer l&rsquo;agent (personnellement, pourquoi ne pas le faire ?).</p>



<p>La partie Agent comporte deux modes. Un mode client (paramètre par défaut) ainsi qu&rsquo;un mode serveur. La différence entre les deux se trouve dans l&rsquo;exécution des commandes de remédiation qui ne sont présentes que dans le mode client. La partie serveur quant à elle va gérer les mises à jour des signatures et analyser les journaux VBR.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="527" height="314" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_027_V1Agent.png" alt="" class="wp-image-2324" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_027_V1Agent.png 527w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_027_V1Agent-300x179.png 300w" sizes="auto, (max-width: 527px) 100vw, 527px" /></figure>
</div>


<p>Et si nous réalisions une petite Map des différents flux ? 🙂 Naturellement, je ne compte pas réinventer la roue, mais juste mettre en avant ce que je vais implémenter plus tard. Pour le reste, il suffira de consulter le <a href="https://helpcenter.veeam.com/docs/one/deployment/ports.html?ver=120">lien constructeur</a>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="965" height="563" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_023_Schemaglobal.png" alt="" class="wp-image-2319" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_023_Schemaglobal.png 965w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_023_Schemaglobal-300x175.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_023_Schemaglobal-768x448.png 768w" sizes="auto, (max-width: 965px) 100vw, 965px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>Comme pour le serveur VEEAM dans un billet précédent, une restriction des flux sortant vers l&rsquo;extérieur est appliquée sur le serveur VEEAMOne. Ainsi, seul les URLs et NDDs habilités à communiquer avec VEEAM et MS sont autorisés.</p>



<p>Soit pour VEEAM One :</p>



<ul class="wp-block-list">
<li>Serveurs de mise à jour :
<ul class="wp-block-list">
<li>dev.veeam.com</li>
</ul>
</li>



<li>Serveurs de licences :
<ul class="wp-block-list">
<li>one.butler.veeam.com</li>



<li>download2.veeam.com</li>
</ul>
</li>
</ul>



<p>Okay, maintenant que nous voyons un peu plus clair dans nos différents flux, posons-nous la traditionnelle question du « le principe de moindre privilège ».</p>



<h3 class="wp-block-heading">Access &amp; Less Privileged</h3>



<p>Cette partie (peu importe la solution à mettre en place) est un véritable casse-tête. La simplicité voudrait que nous attribuions les permissions root ou system pour avoir la paix.</p>



<p>« <strong>Regarde, ça fonctionne !</strong> » J&rsquo;aime à répondre à ça soit par le traditionnel « <strong>Peinture sur merde égal propreté</strong> » ou « <strong>Je travaillais comme ça quand mon patron m&rsquo;a viré</strong>« .</p>



<p>Soyons sérieux deux secondes&#8230; VEEAM nous mache encore une fois le travail et nous allons voir en détail comment configurer les différents comptes avec les moindres privilèges. Cependant, je pense utile de nous remémorer que dans certains cas, il est obligatoire d&rsquo;attribuer des permissions d&rsquo;administrateur du domaine ou à privilège (sudo) et malheureusement nous ne pouvons pas faire autrement.</p>



<p>Dans ce cas de figure, il est difficile de faire autrement. Néanmoins, nous pouvons et je dirai même c&rsquo;est notre devoir de mettre tous les artifices en place pour restreindre le périmètre d&rsquo;exposition de ce type de compte.</p>



<p>Nous distinguons dans notre cas 3 accès à configurer. L&rsquo;accès à l&rsquo;application, l&rsquo;accès à notre socle de virtualisation et notre infrastructure de sauvegarde.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_aaa050-62 kt-accordion-has-3-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_83fd4b-43"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; VEEAM BR : Infrastructure de sauvegarde</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans le respect des bonnes pratiques, notre serveur VEEAM n&rsquo;est pas joint au domaine. Nous avons besoin pour interconnecter VEEAMOne à notre serveur VEEAM d&rsquo;un compte administrateur local.</p>



<p>Pourquoi ? Parce que VEEAMOne doit avoir les droits nécessaires pour déployer son agent. Comme présenté précédemment, il nous faut contraindre ce compte.</p>



<p>Typiquement, nous pouvons considérer ce compte comme une compte de service. Il nous faudra alors interdire les connections locales et distantes à ce compte directement sur le serveur VEEAM.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="439" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges-1024x439.png" alt="" class="wp-image-2322" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges-1024x439.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges-300x129.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges-768x330.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges-1536x659.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_024_VBR_LessPrivileges.png 1792w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Attention, étant un compte local il sera nécessaire d&rsquo;effectuer au minima une rotation du mot de passe une fois par an.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_37fa8f-f9"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; VMWare : Infrastructure de virtualisation</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Là, c&rsquo;est plutôt simple, il suffit d&rsquo;utiliser directement le compte root de notre VCSA<sup data-fn="dfdd2de5-6caa-4ca5-b9de-f8668765a621" class="fn"><a href="#dfdd2de5-6caa-4ca5-b9de-f8668765a621" id="dfdd2de5-6caa-4ca5-b9de-f8668765a621-link">4</a></sup>.</p>



<p class="has-text-align-center"><strong>NO WWWWAAAAYYYYY !</strong></p>



<p>RTFM<sup data-fn="97d37c9d-5bb7-4bcb-a6f4-d4c3276e8b40" class="fn"><a href="#97d37c9d-5bb7-4bcb-a6f4-d4c3276e8b40" id="97d37c9d-5bb7-4bcb-a6f4-d4c3276e8b40-link">5</a></sup> mon gars ! VEEAM explique ce qu&rsquo;il faut faire (<a href="https://helpcenter.veeam.com/docs/one/deployment/connection_to_virtual_servers.html?ver=120#vmware">ici</a>). Je ne vais donc pas m&rsquo;attarder là-dessus.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="849" height="589" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_025_VOne_LessPrivileges.png" alt="" class="wp-image-2323" style="width:737px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_025_VOne_LessPrivileges.png 849w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_025_VOne_LessPrivileges-300x208.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_025_VOne_LessPrivileges-768x533.png 768w" sizes="auto, (max-width: 849px) 100vw, 849px" /></figure>
</div>


<p>Là, il y a deux écoles. Je n&rsquo;ai pas encore fait un article sur le sujet VCSA et personnellement je ne sais pas si j&rsquo;ai envie d&rsquo;en faire un car les interfaces changes tout le temps au gré des montées de version VMWare. Bref, il reste à définir si nous souhaitons utiliser des comptes locaux ou un compte du domaine pour interconnecter VEEAMOne à notre environnement VMWare.</p>



<p>Les raisons sont toujours les mêmes. Sécurité, Sécurité et Sécurité.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_ba4b68-66"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; VEEAMOne : Application</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;application se base également sur le principe de moindre privilège ainsi que sur le principe de RBAC<sup data-fn="418f9970-4de2-4a8c-8125-451c42d430e8" class="fn"><a href="#418f9970-4de2-4a8c-8125-451c42d430e8" id="418f9970-4de2-4a8c-8125-451c42d430e8-link">6</a></sup> (un truc vraiment cool pour les SysAdmins).</p>



<p>Nous retrouvons donc les schémas 3-Tiers classiques, utilisateurs lecture seul, utilisateur avec pouvoir et les utilisateurs administrators.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="469" height="69" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014-1_LocalGroups.png" alt="" class="wp-image-2326" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014-1_LocalGroups.png 469w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014-1_LocalGroups-300x44.png 300w" sizes="auto, (max-width: 469px) 100vw, 469px" /></figure>
</div>


<p>Sur notre serveur VEEAMOne, nous retrouverons ainsi les groupes locaux qu&rsquo;il siéra à notre guise de peupler en respectant les bonnes pratiques et recommandation avec les ressources de notre domaine.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="48" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014_SecurityGroups-1024x48.png" alt="" class="wp-image-2325" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014_SecurityGroups-1024x48.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014_SecurityGroups-300x14.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014_SecurityGroups-768x36.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_014_SecurityGroups.png 1290w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Pour enfoncer le clou, les rôles énumérés précédemment permettent les actions ci-dessous. A nous de mettre les bonnes ressources techniques en face du bon profil.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Rôles</strong></td><td><strong>Permissions</strong></td></tr><tr><td>VO Read-Only</td><td>Accès à la surveillance des données en lecture seule<br>Accès à la génération de rapport</td></tr><tr><td>VO Powered</td><td>Accès à la surveillance des données<br>Accès à la génération de rapport</td></tr><tr><td>VO Administrator</td><td>Accès à l&rsquo;ensemble de la plateforme<br>Accès à l&rsquo;administration des données<br>Accès à la génération de rapports<br>Modification de la configuration VEEAMOne</td></tr></tbody></table></figure>
</div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Licensing</h3>



<h2 class="wp-block-heading">Pratiques</h2>



<p>Nous considérons que le serveur Windows a été durci au préalable et que nous possédons un serveur à jour.</p>



<p>Nous avons également téléchargé en amont les sources (iso) de Veeam One.</p>



<p>Nous ne traiterons ici que de l&rsquo;installation d&rsquo;un server <em><strong>VEEAMOne « AllinOne »</strong></em> (car j&rsquo;ai un petit lab). Mais il est possible d&rsquo;envisager un déploiement 3-Tiers (VEEAMOne Server, MSSQL Server et VEEAMOne UI). Je propose quelques choses de standard (car il faut sur un petit LAB <a href="https://www.youtube.com/watch?v=teKygneXkX8&amp;ab_channel=DisneyFR">se satisfaire du nécessaire et être heureux</a>) sur la base de VEEAM BR, ESXi<sup data-fn="95c79d00-006e-451e-8bff-c3326dcebb69" class="fn"><a href="#95c79d00-006e-451e-8bff-c3326dcebb69" id="95c79d00-006e-451e-8bff-c3326dcebb69-link">7</a></sup> et VCSA.</p>



<h3 class="wp-block-heading">Installation</h3>



<p>Nous partons donc du principe que notre serveur Windows est déjà configuré et <span style="text-decoration: underline;">joint à un domaine</span> (oui oui, j&rsquo;ai bien écrit joint à un domaine). Que nous avons une appliance vCenter (joint ou non au domaine) ainsi qu&rsquo;un serveur VEEAM BR (non joint au domaine et préalablement durci et conforme aux recommandations VEEAM.</p>



<p>Les prérequis en termes de ressources doivent être les suivantes (pour une Single Server):</p>



<ul class="wp-block-list">
<li><strong>OS :</strong> WIN10, WIN11, WS 2012 à WS 2022</li>



<li><strong>CPU :</strong> 4 cores (minimum)</li>



<li><strong>RAM :</strong> 8 Go (Minimum) / 16 Go (Recommandé)</li>



<li><strong>Disk :</strong> 50 Go pour la SGBD MSSQL et VEEAMOne DB</li>



<li><strong>Network :</strong> 1 Gbps minimum</li>
</ul>



<figure class="wp-block-table"><table class="has-background has-fixed-layout" style="background-color:#fff300"><tbody><tr><td><strong><span style="text-decoration: underline;">/!\ Attention :</span></strong> Cela relève de mon settings. Les recommandations en termes de performances ne sont pas à être négligées. (Oui il ne va pas falloir être un rat. Je vous connais bande de SysAdmin pret à gagner 1 vCPU par ci, par là et autres petits Go de RAM.)<br>Vous retrouverez les liens ci-dessous pour les recommandations :<br><br><a href="https://helpcenter.veeam.com/docs/one/deployment/supported_platforms.html?ver=120">Supported Virtualization Platforms</a><br><a href="https://helpcenter.veeam.com/docs/one/deployment/integration_with_vbr.html?ver=120">Supported VEEAM BR</a><br><a href="https://helpcenter.veeam.com/docs/one/deployment/system_requirements.html?ver=120">Supported System</a><br><a href="https://helpcenter.veeam.com/docs/one/deployment/requirements.html?ver=120">VEEAMOne Sizing</a></td></tr></tbody></table></figure>



<p>Top à la vachette, démarrons l&rsquo;installation !</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_08d8d8-43 kt-accordion-has-15-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_9f111f-c0"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; You are a wizard Veeam ONE !</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="722" height="563" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_001_install.png" alt="" class="wp-image-2328" style="width:422px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_001_install.png 722w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_001_install-300x234.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_9a80bf-9b"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Server or client ?</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="725" height="565" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_002_serverclient.png" alt="" class="wp-image-2329" style="width:438px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_002_serverclient.png 725w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_002_serverclient-300x234.png 300w" sizes="auto, (max-width: 725px) 100vw, 725px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_4f6ef2-18"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Licenses &amp; EULA</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="722" height="565" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_003_EULA.png" alt="" class="wp-image-2331" style="width:461px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_003_EULA.png 722w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_003_EULA-300x235.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2214_b1291e-83"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; License bite ! (Ou restez en Community Edition)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="564" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_004_License.png" alt="" class="wp-image-2330" style="width:447px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_004_License.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_004_License-300x234.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2214_84f8d7-20"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; VEEAM One Service Account (si si ombre !)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="721" height="562" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_005_UserADAccount.png" alt="" class="wp-image-2332" style="width:464px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_005_UserADAccount.png 721w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_005_UserADAccount-300x234.png 300w" sizes="auto, (max-width: 721px) 100vw, 721px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane2214_ed759e-ad"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">6 &#8211; System Check&#8230; Hold on 2 minutes</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="566" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006_Features.png" alt="" class="wp-image-2333" style="width:466px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006_Features.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006_Features-300x235.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane2214_a2ab2e-2c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">7 &#8211; Install or not 😀 (Customize)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="723" height="562" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006-1_Features.png" alt="" class="wp-image-2334" style="width:525px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006-1_Features.png 723w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_006-1_Features-300x233.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-8 kt-pane2214_0e4fbd-5c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.0 &#8211; Customize, Choose VEEAM Components</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="561" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_007_Customize.png" alt="" class="wp-image-2335" style="width:450px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_007_Customize.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_007_Customize-300x232.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-9 kt-pane2214_d20322-2f"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.1 &#8211; Customize, Database</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="723" height="564" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_008_Database.png" alt="" class="wp-image-2336" style="width:567px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_008_Database.png 723w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_008_Database-300x234.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-10 kt-pane2214_1c71f8-3c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.2 &#8211; Customize, DataLocations</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="721" height="562" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_009_DataLocation.png" alt="" class="wp-image-2337" style="width:462px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_009_DataLocation.png 721w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_009_DataLocation-300x234.png 300w" sizes="auto, (max-width: 721px) 100vw, 721px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-11 kt-pane2214_61f9c2-a1"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.3 &#8211; Customize, Mode</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="564" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_010_DatacollectionMode.png" alt="" class="wp-image-2338" style="width:460px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_010_DatacollectionMode.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_010_DatacollectionMode-300x234.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-12 kt-pane2214_20c0e6-66"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.4 &#8211; Customize, Ports</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="565" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_011_PortConfiguration.png" alt="" class="wp-image-2339" style="width:429px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_011_PortConfiguration.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_011_PortConfiguration-300x234.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-13 kt-pane2214_0a1717-df"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8.5 &#8211; Customize, Resume &amp; Install (sure ?)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="723" height="563" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_012_Recap.png" alt="" class="wp-image-2340" style="width:425px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_012_Recap.png 723w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_012_Recap-300x234.png 300w" sizes="auto, (max-width: 723px) 100vw, 723px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-14 kt-pane2214_2a3480-9c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">9 &#8211; Install ongoing, please offer me a coffee &lt;3</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="724" height="563" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_013_Installing.png" alt="" class="wp-image-2341" style="width:433px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_013_Installing.png 724w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_013_Installing-300x233.png 300w" sizes="auto, (max-width: 724px) 100vw, 724px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-15 kt-pane2214_aadef7-ca"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">10 &#8211; CONGRATULATION</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p class="has-text-align-center"><em>A prononcer façon <a href="https://www.youtube.com/watch?v=mpnUEybriF4&amp;ab_channel=NotANoobGamer">Smash Brosh</a> 🙂</em></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="725" height="568" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_015_Finished.png" alt="" class="wp-image-2342" style="width:439px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_015_Finished.png 725w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_015_Finished-300x235.png 300w" sizes="auto, (max-width: 725px) 100vw, 725px" /></figure>
</div></div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Configuration</h3>



<p>Lors du premier lancement du client VEEAMOne, nous allons être invité à configurer l&rsquo;application. Il faut comprendre par configuration le paramétrage général du serveur. Pour ce qui relève de la configuration des autres vues ou fonctionnalités, cela relèvera d&rsquo;une partie dédiée dans cet article ou d&rsquo;un article à part entière (je n&rsquo;ai pas encore décidé).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="521" height="387" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_016_FirstStart.png" alt="" class="wp-image-2344" style="width:408px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_016_FirstStart.png 521w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_016_FirstStart-300x223.png 300w" sizes="auto, (max-width: 521px) 100vw, 521px" /></figure>
</div>


<p>De la sorte et je pense qu&rsquo;il est utile de le souligner une nouvelle fois, un système de supervision et de monitoring sans être notifier reviens <a href="https://www.youtube.com/watch?v=13dvENdB2rA&amp;ab_channel=DidierSuper-Topic">à commander un steack frites alors que l&rsquo;on aime pas les frites et que l&rsquo;on est végétarien. Hé ben c&rsquo;est con !</a> Configurons alors les notifications.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_1f36f5-d3 kt-accordion-has-7-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_b92a6d-cd"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; SMTP un incontournable !</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous commençons à avoir l&rsquo;habitude avec les solutions VEEAM de configurer les notifications. C&rsquo;est exactement la même chose que pour VEEAM BR, à l&rsquo;exception que l&rsquo;IHM<sup data-fn="2744af2e-fbb4-47dd-9745-c0bdb6873d2f" class="fn"><a href="#2744af2e-fbb4-47dd-9745-c0bdb6873d2f" id="2744af2e-fbb4-47dd-9745-c0bdb6873d2f-link">8</a></sup> est d&rsquo;une couleur différente.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="703" height="637" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_0_ConfigSMTP.png" alt="" class="wp-image-2351" style="width:489px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_0_ConfigSMTP.png 703w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_0_ConfigSMTP-300x272.png 300w" sizes="auto, (max-width: 703px) 100vw, 703px" /></figure>
</div>


<p>M&rsquo;autorisez vous à passer cette partie ? Naturellement car je fais ce que je veux 🙂 Le seul point, bien penser à ouvrir les flux outbounds concernant le protocole utilisé. Sinon ba ça marche pas et ça ne court pas non plus&#8230; (Il est comique le garçon&#8230;)</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_d1297d-64"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; A qui le postier doit il délivrer le courrier ?</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans ce cas, nous pouvons ajouter plusieurs adresses mails en destinataire des notifications selon l&rsquo;état des notifications (Toutes, les erreurs et avertissements, les resolved etc).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="706" height="639" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_1_EmailNotifications.png" alt="" class="wp-image-2352" style="width:503px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_1_EmailNotifications.png 706w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_1_EmailNotifications-300x272.png 300w" sizes="auto, (max-width: 706px) 100vw, 706px" /></figure>
</div>


<p>Toutefois, cela pose un problème car si nous souhaitons notifier qu&rsquo;une équipe particulière sur certaines ressources, cela va être difficile de se coltiner toutes les notifications de l&rsquo;infrastructure et donc d&rsquo;être pollué&#8230;</p>



<p>Il faut voir ce paramétrage ci à destination de l&rsquo;équipe Cloud, Services Hébergés et autres fiches de poste. Concernant les notifications plus ciblées à destination d&rsquo;équipe spécialisée, je reviendrai dessus dans la partie Business View.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_01ef1e-d7"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Politiques de notification</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Pour cette étape, je suis un peu un SysAdmin sans personnalité car je vais laisser les paramétrages par défaut.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="705" height="642" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_2_DefaultNotificationPolicy.png" alt="" class="wp-image-2353" style="width:538px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_2_DefaultNotificationPolicy.png 705w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_2_DefaultNotificationPolicy-300x273.png 300w" sizes="auto, (max-width: 705px) 100vw, 705px" /></figure>
</div>


<p>Il est possible de définir et de modifier un template. Dans mon cas d&rsquo;usage, je trouve (et encore une fois il va nous dire que c&rsquo;est son avis personnel&#8230;) que ça fait le taf.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2214_be2035-bd"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; SNMP</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Encore un classique de la supervision. Qui dit supervision dit log et donc SNMP<sup data-fn="6ade8182-4ad8-4fc4-9d28-0e5670bac72b" class="fn"><a href="#6ade8182-4ad8-4fc4-9d28-0e5670bac72b" id="6ade8182-4ad8-4fc4-9d28-0e5670bac72b-link">9</a></sup>. Cela permet d&rsquo;avoir une bonne visibilité de son réseau, des équipements et de l&rsquo;état de santé de ces derniers.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="702" height="641" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_3_SNMP.png" alt="" class="wp-image-2354" style="width:476px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_3_SNMP.png 702w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_3_SNMP-300x274.png 300w" sizes="auto, (max-width: 702px) 100vw, 702px" /></figure>
</div>


<p>Je ne l&rsquo;utilise pas.</p>



<p class="has-text-align-center"><strong>HAAAANNNN, NANI !!!!</strong></p>



<p class="has-text-align-left">J&rsquo;ai une excuse. Dans un contexte professionnel, je préfère utiliser les solutions propriétaires. L&rsquo;inconvénient, c&rsquo;est que cela à un coup. Néanmoins, je pense qu&rsquo;il serait temps de regarder d&rsquo;un peu plus prêt cette fonctionnalité de collecte.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2214_27233f-65"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; ITSM : ServiceNow</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Et si nous cherchions un peu d&rsquo;efficience pour notre infrastructure, les équipes opérationnelles ? L&rsquo;un des rêves d&rsquo;un SysAdmin (surtout le mien) reste d&rsquo;intégrer les alertes dans la solution ITSM<sup data-fn="9b132b0b-6461-4936-aeb2-ef4e3e13fe74" class="fn"><a href="#9b132b0b-6461-4936-aeb2-ef4e3e13fe74" id="9b132b0b-6461-4936-aeb2-ef4e3e13fe74-link">10</a></sup> afin de pouvoir traiter de manière pro-active les alertes systèmes.</p>



<p>VEEAMOne propose de s&rsquo;interconnecter à la solution ITSM ServiceNow. M***e pas de bol je n&rsquo;utilise pas cette solution. Donc je passe mon tour&#8230;</p>



<p class="has-text-align-center"><strong><em>« Tristesse, ton petit cœur doit saigner et tu dois roter du sang en boule sur ton paillasson ? »</em></strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="705" height="640" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_4_ServiceNow.png" alt="" class="wp-image-2355" style="width:540px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_4_ServiceNow.png 705w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_4_ServiceNow-300x272.png 300w" sizes="auto, (max-width: 705px) 100vw, 705px" /></figure>
</div>


<p>Hé non ! Si VEEAMOne ne propose pas de passerelle avec la solution ITSM que j&rsquo;utilise (<a href="https://www.combodo.com/itop">ITOP</a> pour ne pas la nommer), les deux solutions possèdent une API<sup data-fn="704024f1-a815-4874-93a2-bd1adca7cb93" class="fn"><a href="#704024f1-a815-4874-93a2-bd1adca7cb93" id="704024f1-a815-4874-93a2-bd1adca7cb93-link">11</a></sup>. Vous voyez où je veux en venir. 🙂</p>



<p>Je prépare cette introduction depuis longtemps et j&rsquo;espère vous présenter mon connecteur dans le prochain article. Je ne suis pas vache, je vous lâche un petit teasing &lt;3</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane2214_c66d3a-f4"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">6 &#8211; Le puit de Log</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le puit de log&#8230; Fonctionnalité que je n&rsquo;utilise pas non plus. Mais sur laquelle je devrais me pencher.</p>



<p>Garantir un historique des alarmes déclenchées et centraliser ces dernières seraient vraiment sympa. Toutefois, je rencontre une problématique. Je n&rsquo;ai pas ce jour mis là main sur une solution libre qui soit facile d&rsquo;administrer et de maintenir. Libre ne veut pas dire gratuit que nous nous entendons bien.</p>



<p>Par exemple, j&rsquo;ai utilisé la solution GrayLog. Nous sommes vite limités par la licence communautaire sur le notre de flux journalier échangé. Il suffirait de prendre la CB est hop le tour est joué.</p>



<p class="has-text-align-center"><strong>1-0 pour la solution</strong></p>



<p>J&rsquo;ai voulu mettre à jour la plateforme et j&rsquo;ai tout cassé. Il suffirait de passer en SaaS chez l&rsquo;éditeur comme ça plus de problème de MCO.</p>



<p class="has-text-align-center"><strong>2-0 pour la solution</strong></p>



<p class="has-text-align-left">Pour le coup, je demande la VAR. Je ne suis pas fan de l&rsquo;hébergement en SaaS dans ce cas précis. L&rsquo;arbitre accorde donc <strong>1-1, balle au centre&#8230;</strong></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="706" height="641" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_8_Syslog.png" alt="" class="wp-image-2356" style="width:455px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_8_Syslog.png 706w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_8_Syslog-300x272.png 300w" sizes="auto, (max-width: 706px) 100vw, 706px" /></figure>
</div>


<p>Conclusion, il faut que je torture encore quelques cellules grises dans mes travaux nocturnes pour étudier ce point.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane2214_354e9d-3b"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">7 &#8211; Récap</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner"><div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="705" height="641" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_9_Summary.png" alt="" class="wp-image-2358" style="width:496px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_9_Summary.png 705w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_017_9_Summary-300x273.png 300w" sizes="auto, (max-width: 705px) 100vw, 705px" /></figure>
</div>


<p>Le petit récapitulatif, comme nous avons l&rsquo;habitude de l&rsquo;avoir chez VEEAM. Je trouve cela d&rsquo;une simplicité et d&rsquo;une efficacité remarquable. Chose que nous n&rsquo;avons pas toujours sur d&rsquo;autres solutions.</p>



<p class="has-text-align-center"><strong>Tu vas vraiment nous faire croire que t&rsquo;as pas d&rsquo;action chez VEEAM ?</strong></p>
</div></div></div>
</div></div></div>



<p></p>



<p>La configuration terminée, nous pouvons admirer notre console vierge et vide de toutes données. Il faut l&rsquo;avouer, il y a là un côté tristoune. Je rassure, pas pour bien longtemps.</p>



<h3 class="wp-block-heading">Virtual Infrastructure</h3>



<p>La vue Virtual Infrastructure va nous permettre de suivre l&rsquo;intégralité de l&rsquo;état de santé ainsi que les évènements de notre SIs depuis le socle de virtualisation jusqu&rsquo;aux SEs des machines virtuelles.</p>



<p>Comme souligné précédemment, l&rsquo;objectif est d&rsquo;être proactif face à un dysfonctionnement d&rsquo;infrastructure ou d&rsquo;anomalie sur un serveur virtuelle en production.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="575" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView-1024x575.png" alt="" class="wp-image-2369" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView-1024x575.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView-300x168.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView-768x431.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView-1536x862.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_029_VIView.png 1919w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>VEEAMOne prend en charge les produits suivants, VMWare, VMWare Cloud Director, Microsoft Hyper-V.</p>



<p>Un exemple ci-dessous d&rsquo;ajout d&rsquo;une appliance VCSA.</p>



<h4 class="wp-block-heading">VMWare</h4>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_ae7910-40 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_13b465-cb"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Add Server</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Sous Virtual Infrastructure, faire un clic droit et ajouter un nouveau serveur.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="553" height="424" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_1_AddVCSA.png" alt="" class="wp-image-2346" style="width:323px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_1_AddVCSA.png 553w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_1_AddVCSA-300x230.png 300w" sizes="auto, (max-width: 553px) 100vw, 553px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_c1e8eb-0f"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; VMWare Connection</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>VEEAMOne nous demande si nous souhaitons ajouter une appliance ou un hote directement. Renseignons le nom DNS de notre appliance.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="717" height="538" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_2_AddVCSA.png" alt="" class="wp-image-2347" style="width:445px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_2_AddVCSA.png 717w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_2_AddVCSA-300x225.png 300w" sizes="auto, (max-width: 717px) 100vw, 717px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_eb6e26-a9"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Credentials</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>J&rsquo;ai fait le choix (pour l&rsquo;instant) de ne pas binder mon appliance VCSA à mon AD. C&rsquo;est pourquoi j&rsquo;ai créé un compte local<strong> svc.veeamon@vsphere.local</strong> sur mon appliance avec les permissions nécessaires.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="714" height="538" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_3_AddVCSA.png" alt="" class="wp-image-2348" style="width:483px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_3_AddVCSA.png 714w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_3_AddVCSA-300x226.png 300w" sizes="auto, (max-width: 714px) 100vw, 714px" /></figure>
</div>


<p>Naturellement, il ne faut pas oublier d&rsquo;ouvrir les ports interlan dans le cas de segmentation des réseaux.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2214_03ff19-c5"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Summary</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le traditionnel rappel et voilà notre appliance VEEAMOne connecté à notre VSCA.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="716" height="538" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_4_AddVCSA.png" alt="" class="wp-image-2349" style="width:476px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_4_AddVCSA.png 716w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_026_4_AddVCSA-300x225.png 300w" sizes="auto, (max-width: 716px) 100vw, 716px" /></figure>
</div></div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Veeam Backup &amp; Replication</h3>



<p>La vue Veeam Backup &amp; Replication comme son nom l&rsquo;indique va traiter de la sauvegarde et de l&rsquo;ensemble des jobs de protection. Si la vue d&rsquo;infrastructure vient à donner une bonne visibilité de notre infrastructure virtuelle, nous aurons avec cette vue ci une visibilité sur l&rsquo;ensemble de notre infrastructure VEEAM.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="575" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView-1024x575.png" alt="" class="wp-image-2370" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView-1024x575.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView-300x168.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView-768x431.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView-1536x863.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_030_VBRView.png 1916w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Depuis l&rsquo;état du serveur de sauvegarde, des jobs en passant par la charge des proxies VEEAM ainsi que l&rsquo;utilisation des repos de sauvegarde ainsi que le détail des chaines (full et incréments).</p>



<p>Lors de la présentation de la solution dans la partie « Théorique » le déploiement d&rsquo;un agent de supervision permettra de réaliser en plus de la remontée d&rsquo;informations la possibilité de réaliser des actions de remédiations.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_f1882c-8c kt-accordion-has-7-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_1e3b2f-72"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Add Server</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>M&rsquo;sieur, un petit clic droit sur Add Server 🙂</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="485" height="345" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019_AddVDP.png" alt="" class="wp-image-2359" style="width:356px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019_AddVDP.png 485w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019_AddVDP-300x213.png 300w" sizes="auto, (max-width: 485px) 100vw, 485px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_1ab8ab-94"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; VEEAM BR Connection</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous renseignons comme précédemment pour l&rsquo;ajout d&rsquo;une ressource d&rsquo;infrastructure le nom DNS de notre serveur VBR. Il est également possible d&rsquo;intégrer un serveur VB Entreprise Manager.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="716" height="537" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-2_AddVDP.png" alt="" class="wp-image-2361" style="width:515px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-2_AddVDP.png 716w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-2_AddVDP-300x225.png 300w" sizes="auto, (max-width: 716px) 100vw, 716px" /></figure>
</div>


<p>Je n&rsquo;utilise pas ce dernier et pourtant c&rsquo;est le manque de temps en ce moment qui vient ralentir ma <a href="https://www.youtube.com/watch?v=FNZRmAaR_-U&amp;ab_channel=BernardJOYET">boulimie intellectuelle</a> et m&#8217;empêche d&rsquo;avancer.</p>



<p>Je coche volontairement l&rsquo;installation de l&rsquo;agent VEEAMOne pour avoir les actions de remédiation et d&rsquo;avoir le relevé de journaux d&rsquo;événements ainsi que son analyse.</p>



<p>La seconde coche permet de joindre notre serveur VBR à notre serveur VEEAMOne et donc avoir directement dans la console VBR les informations et performance de notre infrastructure de sauvegarde. (Franchement, il ne faut pas hésiter C&rsquo;est du read only pas de risque 🙂 )</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2214_b63039-31"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Credentials</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Renseignons le compte local de notre serveur VBR qui va permettre le relevé d&rsquo;installation. J&rsquo;ai déjà expliqué les actions préconisées pour garantir un niveau de sécurité acceptable.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="715" height="539" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3_AddVDP.png" alt="" class="wp-image-2362" style="width:471px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3_AddVDP.png 715w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3_AddVDP-300x226.png 300w" sizes="auto, (max-width: 715px) 100vw, 715px" /></figure>
</div>


<p>Toutefois, rappelons-nous qu&rsquo;il est nécessaire d&rsquo;avoir les droits d&rsquo;administrations pour que VEEAMOne puisse installer l&rsquo;agent VEEAMOne. Sans quoi vous aurez le joli message ci-dessous &lt;3</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="719" height="540" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3-1_AddVDP.png" alt="" class="wp-image-2363" style="width:455px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3-1_AddVDP.png 719w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-3-1_AddVDP-300x225.png 300w" sizes="auto, (max-width: 719px) 100vw, 719px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane2214_759866-26"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Summary</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le récap, le récap, le récap !</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="715" height="536" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-4_AddVDP.png" alt="" class="wp-image-2364" style="width:587px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-4_AddVDP.png 715w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-4_AddVDP-300x225.png 300w" sizes="auto, (max-width: 715px) 100vw, 715px" /></figure>
</div></div></div></div>
</div></div></div>



<p></p>



<p>Une fois ajoutée, nous obtenons une interface vide. Pas de panique, c&rsquo;est normal. Ce n&rsquo;est pas un bug.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="747" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-5_AddVDP-1024x747.png" alt="" class="wp-image-2366" style="width:541px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-5_AddVDP-1024x747.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-5_AddVDP-300x219.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-5_AddVDP-768x560.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_019-5_AddVDP.png 1192w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>En regardant l&rsquo;image précédente, nous remarquons en bas à droite que l&rsquo;infrastructure est en cours d&rsquo;import. Ah ouf ! Il en sera de même avec l&rsquo;installation de l&rsquo;agent et la remontée de log. Il faut faire preuve de patience et non pas cliquer 50 fois sur le bouton d&rsquo;impression au risque de griller notre imprimante. Les données remonteront d&rsquo;elles-mêmes comme présenté dans le début de cette partie.</p>



<p>Dans la même logique, si nous avons coché l&rsquo;accès aux tableaux de bords dans la console VBR, il sera nécessaire d&rsquo;attendre l&rsquo;intégration des datas.</p>



<p>Dans notre console VBR, dans l&rsquo;onglet Analytics nous retrouverons les informations sur la planification, durée des jobs. La sollicitation de telle ou telles ressources, l&rsquo;espace de stockage de nos repos ainsi qu&rsquo;une vue globale MENSUELLE de nos jobs de sauvegarde (et dire qu&rsquo;avant cette fonctionnalité je me suis fait iéch à faire des extracts et tableau xlsx&#8230;. Je les utilise toujours pour mes indicateurs hein 😉 ).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView-1024x576.png" alt="" class="wp-image-2371" style="width:654px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView-1024x576.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView-300x169.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView-768x432.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView-1536x864.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_031_VBRView.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Sinon, il est tout à fait possible d&rsquo;avoir les mêmes informations dans la WebConsole VEEAMOne. Si vous savez, le truc qui commence par https et se termine par 1239 du type https://monseveur_VEEAMOne.contoso.com:1239.</p>



<h3 class="wp-block-heading">Business View</h3>



<p>Cette partie est intéressante pour celui qui sait la manier. Personnellement j&rsquo;ai mis un certain temps à comprendre son mécanisme et l&rsquo;intérêt que cet onglet peut apporter.</p>



<p>Dans cette « Vue Affaire », il va nous être possible de faire presque quasiment tout ce que nous souhaitons en termes de filtre et d&rsquo;identification sur les ressources VMs, Hosts, Datastores et Clusters.</p>



<p>Cette vue va donc nous permettre de répondre à des problématiques financières et techniques.</p>



<ul class="wp-block-list">
<li><strong>Financière : </strong>Afin d&rsquo;avoir un rapport précis des ressources consommées par un service (SaaS) ou d&rsquo;infrastructure (IaaS). D&rsquo;assurer l&rsquo;efficacité et l&rsquo;efficience de notre infrastructure afin de définir si nous sommes en over-capaciting ou under-capaciting. Investir, pas investir ? Prospecter, pas prospecter ? (<strong>Mon PDG répondrait sans hésiter OUI !</strong> et il a bien raison)</li>



<li><strong>Technique :</strong> Pour garantir un état de santé par service, la présence de snasphot, la possibilité de notifier que certaines ressources aux bonnes équipes&#8230; J&rsquo;en passe car la liste pourrait être longue.</li>
</ul>



<p>Sincèrement, je vois la partie Business View comme le pivot et point le plus important pour maitriser son budget ainsi que son SI.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="569" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng-1024x569.png" alt="" class="wp-image-2375" style="width:767px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng-1024x569.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng-300x167.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng-768x427.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng-1536x853.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_033_BusinessGlobalpng.png 1912w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Bon hormis le fait que je laisse l&rsquo;impression que mon exploitation n&rsquo;est pas faite à la maison. Objection lecteur ! Mon MCO est fait. Il se trouve que l&rsquo;erreur disque sur mon second AD est lié à la sauvegarde Windows et que je n&rsquo;ai pas acquittée cette dernière (Oui j&rsquo;ai bien écrit Acquitté et non Résoudre).</p>



<p>Mais bon entre nous, un système de monitoring sans erreurs et avertissements ça serait d&rsquo;un ennui non ?</p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td>Par défaut nous avons la vue ci-contre.<br>Il sera alors possible pour nous de définir des nouvelles<br>catégories pour chacune des familles présentée plus tôt.<br><br>Nous allons réaliser les catégorisations selon 3 critères.<br><br>*** Single Parameter<br>*** Muliple Conditions<br>*** Grouping expression<br><br><img loading="lazy" decoding="async" width="350" height="188" class="wp-image-2377" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_034_critereas.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_034_critereas.png 414w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_034_critereas-300x161.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /><br><br></td><td><img loading="lazy" decoding="async" width="300" height="331" class="wp-image-2376" style="width: 300px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_032_BusinessViewDefault.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_032_BusinessViewDefault.png 324w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_032_BusinessViewDefault-272x300.png 272w" sizes="auto, (max-width: 300px) 100vw, 300px" /></td></tr></tbody></table></figure>



<p>Je pense que pour bien comprendre la puissance de ces trois méthodes de catégorisation, il faut que nous nous attardions dessus.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_4d52bd-d4 kt-accordion-has-3-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_01b585-d2"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>1 &#8211; Single Parameter</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme présenter rapidement plus haut, nous allons catégoriser une ressource sur un groupe d&rsquo;objet qui se base sur une propriété du type concerné (VMs, Hosts, Datastores ou Clusters).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="756" height="487" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_035_singleparameters.png" alt="" class="wp-image-2379" style="width:514px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_035_singleparameters.png 756w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_035_singleparameters-300x193.png 300w" sizes="auto, (max-width: 756px) 100vw, 756px" /></figure>
</div>


<p>L&rsquo;étape qui suit vous demandera si vous souhaitez créer un tag sur l&rsquo;environnement vSphere ou non. Personnellement je n&rsquo;utilise pas les tags sur ce genre de catégorisation.</p>



<p><mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-theme-palette-1-color">Je reviendrai plus bas sur la notion de tag au sens VMWare du terme car il y a des subtilités à assimiler.</mark></p>



<p>Le cas d&rsquo;usage pour cette catégorisation (à mon sens) et de filtrer, identifier rapidement des ressources sur des actions, états simples. Je dirais donc parfait pour l&rsquo;administration et le MCO.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_6cda73-a1"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>2 &#8211; Multiple Parameter</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>La catégorisation mutli-paramètres va nous offrir plus de possibilité quant à la possibilité de trier et de sélectionner les ressources que nous souhaitons obtenir.</p>



<p>Comme nous pouvons le constater ci-dessous, la liste des critères de ciblage est plutôt conséquente. Passant des paramètres systèmes aux éléments d&rsquo;infrastructures en réalisant une halte par la sauvegarde. Nous retrouvons également les classiques opérateurs de comparaisons (Equals, Not Equals, Contains, Starts/Ends with&#8230;) par rapports à une valeurs.</p>



<p></p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="448" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_036_multiplesparameters-1024x448.png" alt="" class="wp-image-2388" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_036_multiplesparameters-1024x448.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_036_multiplesparameters-300x131.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_036_multiplesparameters-768x336.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_036_multiplesparameters.png 1489w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Comme vu ci-dessus, j&rsquo;ai choisi ici d&rsquo;identifier l&rsquo;ensemble des VMs contenu dans les VM Folder qui contiennent les noms IaaS et SaaS. Il faudra comprendre VM Folder au sens VMWare du terme lors de la création d&rsquo;un dossier dans la vue VMs &amp; Templates de notre VCSA <a href="https://www.youtube.com/watch?v=3xgs6-6vyMQ&amp;ab_channel=G%C3%A9n%C3%A9rationClubDo">naturellement</a>.</p>



<p>Contrairement au cas de catégorisation précédent, je vais choisir de créer les tags vSphere. Ainsi, les ressources (VMs) qui se trouvent sous le répertoire parents IaaS se verront identifiés comme un type IaaS. Il en sera de même pour le type SaaS.</p>



<p>C&rsquo;est là que le sujet commence à devenir intéressant. Car comme évoqué plus tôt, nous commençons à travailler la donnée de notre infrastructure en donnée financière.</p>



<p>Quels est la part de notre infrastructure consommée et allouée à nos services BaaS, SaaS, IaaS, ect&#8230; Quels est la part de notre SI allouée à son fonctionnement et la production ?</p>



<p>Je vois dans déjà dans le fond de la salle les yeux pétillants des DAFs, DCs et autres dirigeant d&rsquo;entreprises. Oui, nous SysAdmins nous savons vous faire faire des économies et apporter un vrai valeur ajoutée &lt;3. (Je développerai ce point dans la conclusion).</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_0676e1-e1"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title"><strong>3 &#8211; Grouping Expression</strong></span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Je crois que c&rsquo;est la méthode de catégorisation que je préfère car elle permet de faire presque tout ce que l&rsquo;on souhaite. Cette vue est orientée « développeur » (le style old school VisualBasic).</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="340" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_037_groupsparameters-1024x340.png" alt="" class="wp-image-2390" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_037_groupsparameters-1024x340.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_037_groupsparameters-300x100.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_037_groupsparameters-768x255.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_037_groupsparameters.png 1483w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Ci-dessous, un exemple avec la catégorie VMs with Snapshots qui va selon la date des snapshots nous offrir une vue et métriques sur les snasphots présent si c&rsquo;est la durée de vie de ces derniers est inférieurs à 1 jour, 7 jours, 30 jours. Dans cet usage, cela permet au SysAdmin d&rsquo;avoir une granularité sur une tâche bien distincte et dans certaines situations maintenir le curseur sur ce qui est acceptable ou non.</p>



<p>Au-delà de cette possibilité, il est également possible de gérer (créer, pas supprimer hein) les tags vSphere de manière dynamique selon l&rsquo;évolution de l&rsquo;infrastructure de notre arborescence VMs &amp; Templates. Ainsi, admettons que nous créons une nouvelle bulle SaaS ou IaaS sous cette même infrastructure, l&rsquo;ensemble des ressources qui se trouvent sous ce dernier sera identifié comme IaaS ou SaaS et du nom du répertoire. Pratique donc par la suite de sortir des indicateurs de ressources et de faire une facturation à la carte (refacturation interne ou facturation à un client final).</p>
</div></div></div>
</div></div></div>



<p></p>



<p>Pour bien comprendre l&rsquo;intérêt des tags vSphere générés par VEEAMOne, pourquoi ne pas se lancer un petit RVTools des familles ? 🙂</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="268" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_038_rvtoolsTags-1024x268.png" alt="" class="wp-image-2391" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_038_rvtoolsTags-1024x268.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_038_rvtoolsTags-300x78.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_038_rvtoolsTags-768x201.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_038_rvtoolsTags.png 1170w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>C&rsquo;est un coup des Indiens Lucky Luke, il y a des flèches partout !</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="639" height="329" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_039_LL_TerenceHills.png" alt="" class="wp-image-2392" style="width:309px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_039_LL_TerenceHills.png 639w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_039_LL_TerenceHills-300x154.png 300w" sizes="auto, (max-width: 639px) 100vw, 639px" /></figure>
</div>


<p>Au delà de mon humour douteux (ainsi que mon admiration pour Terence Hill quand j&rsquo;étais jeune garçon), nous avons là un outil puissant. La création des tags par catégorisation au délà du client et de la solution VEEAMOne est exploitable dans VMWare. Donc, il va nous être possible avec de l&rsquo;huile de coude et un peu de rigueur d&rsquo;établir des métriques et rapports sur l&rsquo;évolution d&rsquo;une bulle, d&rsquo;un service. Et pourquoi pas établir un outil de capacity planning ? Tout devient possible.</p>



<p>J&rsquo;avais pour projet de créer une petite application sur un moteur SQLite ou MariaDB un outil de suivi des ressources sur 13 mois glissants. Malheureusement, pour moi il faut faire du web&#8230;</p>



<p class="has-text-align-center"><strong>Oui, on sait, c&rsquo;est une étape traumatisante de ta vie. Tu ne voudrais pas débuter une thérapie et arrêter de nous briser les noix avec ça ?</strong></p>



<p class="has-text-align-left">Oui, promis je vais y penser. Mais au délà du traumatisme, il faut du temps et difficile de me cloner (et je ne suis pas certain que cela soit une bonne chose). Toutefois et dans le cadre professionnel, j&rsquo;ai développé un fichier excel qui fait le taf mais comme tous fichiers excel, ce dernier ne connait que son maitre. C&rsquo;est pour ça qu&rsquo;une petite application web serait sympa. Et je crois qu&rsquo;il est important de souligner que les fichiers excel pour faire tout et rien. C&rsquo;est has been maintenant car il faut faire du PowerBI&#8230; Je pense que je ferai un article là-dessus quand j&rsquo;aurai redéveloppé une solution plus simple (en gros sans code en VB et des formules de 5 km de long).</p>



<p>J&rsquo;ai déjà bien abordé le sujet des tags. Il y a néanmoins une chose importante à savoir sur l&rsquo;utilisation de ces derniers. L&rsquo;application des tags vSphere (création) peut prendre un temps certain c&rsquo;est pourquoi il faut être patient (selon la documentation cela peut prendre jusqu&rsquo;à 3 heures et plus selon la taille de l&rsquo;infrastructure). De plus il sera nécessaire de se rendre dans la console WEB pour réaliser une collection des données.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="511" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata-1024x511.png" alt="" class="wp-image-2408" style="width:717px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata-1024x511.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata-300x150.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata-768x384.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata-1536x767.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdata.png 1918w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Par défaut cette dernière est définit quotidiennement à 03:00 AM. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="490" height="329" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdataSettings.png" alt="" class="wp-image-2410" style="width:252px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdataSettings.png 490w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_041_WebReport_cdataSettings-300x201.png 300w" sizes="auto, (max-width: 490px) 100vw, 490px" /></figure>
</div>


<p>J&rsquo;ai personnellement modifié cette dernière pour qu&rsquo;elle se lance toutes les 3heures. Attention à vos performances. Il est également possible de lancer une collecte de données manuellement.</p>



<h3 class="wp-block-heading">VEEAM Report</h3>



<p>La partie Report se passe sur le client Web (https://monVEEAMOne.contoso.lan:1239). Une fois connecté, c&rsquo;est dans la partie Dashboard et Reports que nous allons avoir les outils les plus pertinents.</p>



<h4 class="wp-block-heading has-text-align-left">Dashboard</h4>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="491" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard-1024x491.png" alt="" class="wp-image-2395" style="width:740px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard-1024x491.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard-300x144.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard-768x369.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard-1536x737.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_WebReport_Dashboard.png 1913w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Dans le tableau principal, nous allons retrouver les catégories par défaut. Il sera toutefois possible d&rsquo;ajouter des « tuiles » avec des vues personnalisées. Je trouve que les tuiles présentes suffisent largement à mon activité. Je pense qu&rsquo;il est important de présenter chacune d&rsquo;entre elles. Pourquoi ? Parce qu&rsquo;il est facile de ne pas comprendre les informations présentées et de passer à côté de métriques et d&rsquo;éléments qui faciliterons la prise de décision technique et financière. 🙂</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_bc3733-d1 kt-accordion-has-9-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_fb8a05-9f"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Veeam Backup &amp; Réplication</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Sans grande surprise, nous retrouvons ce que nous avions déjà vu précédemment dans VEEAM BR dans la rubrique Analytics. Normal puisque VEEAMBR vient chercher les métriques dans VEEAMOne qui vient lui aussi les chercher dans VEEAMBR.</p>



<p>La boucle est bouclée. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="466" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR-1024x466.png" alt="" class="wp-image-2396" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR-1024x466.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR-300x137.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR-768x350.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR-1536x699.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_1_WebReport_Dashboard_VEEAMBR.png 1902w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Blague à part et j&rsquo;adore le phénomène démo. J&rsquo;ai la majorité de mes jobs qui ne passent pas. Cela se retranscrit dans mes charts. A moi de résoudre le problème. </p>



<p>Merci qui ? Merci Jacquie et &#8230; Non un peu de sérieux ! Merci VEEAM One &lt;3</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_268917-0c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; HeatMap</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Comme pour la partie précédente, nous retrouvons également cette partie dans la console VEEAM BR. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="466" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap-1024x466.png" alt="" class="wp-image-2397" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap-1024x466.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap-768x349.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap-1536x699.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_2_WebReport_Dashboard_HeatMap.png 1915w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Si la première partie de l&rsquo;accordéon concernait les jobs et l&rsquo;état des jobs, là nous sommes plus sur les performances et usages des différentes ressources de l&rsquo;infrastructures VEEAM. La notion de dégradée sera utilisée de vert à rouge selon l&rsquo;usage et la sollicitation des différents composant VEEAM.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2214_47eb9d-77"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; vSphere Trends</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>J&rsquo;avoue que cette vue n&rsquo;est pas bien parlante dans mon cas car je ne possède pas de Cluster VMware.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="464" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends-1024x464.png" alt="" class="wp-image-2398" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends-1024x464.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends-768x348.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends-1536x696.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_3_WebReport_Dashboard_vSphereTrends.png 1914w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Toutefois, cette vue va permettre d&rsquo;afficher les tendances de notre cluster concernant l&rsquo;utilisation des différentes ressources. Parfait pour identifier les pics et évolution du SI sur une période.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2214_c65d6e-50"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; vSphere Alarms</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;une de mes vues favorites. Pourquoi ? Car elle indique et offre une visibilité totale de l&rsquo;état de vie de notre SI. L&rsquo;évolution du nombre d&rsquo;avertissements ou d&rsquo;erreurs critiques.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="465" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms-1024x465.png" alt="" class="wp-image-2399" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms-1024x465.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms-768x349.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms-1536x698.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_4_WebReport_Dashboard_vSphereAlarms.png 1918w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Au déla des métriques quantitatives, ces métriques sont identifiées par catégories. Ce qui facilite grandement et facilement les actions prédictives vis à vis d&rsquo;une panne d&rsquo;infrastructure logique ou physique.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2214_cb75e8-0c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; vSphere Hosts &amp; Clusters</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous retrouvons comme dans la tuile numéro 3 &#8211; vSphere Trends le même constat aussi triste soit-il dans mon cas. Pas de cluster, pas de métrique&#8230;</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="462" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC-1024x462.png" alt="" class="wp-image-2400" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC-1024x462.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC-300x135.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC-768x346.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC-1536x692.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_5_WebReport_Dashboard_vSphereHC.png 1919w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Ce qui n&rsquo;est que partiellement vrai. Puisque nous constatons dans cette vue la tendance de consommation à la hausse ou à la baisse des ressources d&rsquo;un hôte VMWare ou d&rsquo;un cluster. Cela peut donc se traduire par, à la hausse ou en sous-évaluation de l&rsquo;infrastructure et un besoin de renforcer cette dernière. A la baisse, une infrastructure surévaluation de l&rsquo;infrastructure vis à vis de son usage quotidien.</p>



<p>Dans la logique, je dirai que nous devons tendre vers une constante en acceptant un léger taux de variation et non à une fonction croissante, décroissante.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane2214_e6a07a-7a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">6 &#8211; vSphere Datastores</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Un incontournable ! Pour les nostalgiques des ayatollahs de l&rsquo;exploitation à travers les RVTools. Nous retrouvons l&rsquo;évolution des datastores à la hausse comme à la baisse sur l&rsquo;espace disponible. La visibilité des vmdks quant à l&rsquo;espace consommé et l&rsquo;espace disponible. La latence des différents datastores (impeccable pour la prédiction d&rsquo;un disque qui va lâcher), les IOPS pour chaque datastore. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="463" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS-1024x463.png" alt="" class="wp-image-2401" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS-1024x463.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS-768x347.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS-1536x695.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_6_WebReport_Dashboard_vSphereDS.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Que dire de plus. <a href="https://www.youtube.com/watch?v=bVrulTsu2S8&amp;ab_channel=InaChansons">C&rsquo;est merveilleux, c&rsquo;est extra !</a></p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane2214_b70069-38"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">7- vSphere VMs</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>J&rsquo;ai l&rsquo;impression de me répéter&#8230; Après les datastores et la partie hosts &amp; clusters, maintenant c&rsquo;est au tour des virtuals machines.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="463" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs-1024x463.png" alt="" class="wp-image-2402" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs-1024x463.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs-768x347.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs-1536x695.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_7_WebReport_Dashboard_vSphereVMs.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Cette fenêtre permet d&rsquo;identifier assez rapidement si une VMs nécessite l&rsquo;ajout de ressources supplémentaires ou une surallocation. Elle permet également dans un certain contexte d&rsquo;orienter un potentiel dysfonctionnement de type hardware, ou software (mauvaise configuration d&rsquo;une application métier par exemple comme ça au hasard).</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-8 kt-pane2214_9ed78e-f8"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8 &#8211; vSphere Infrastructure</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>De nouveau un petit coup de pouce sur les ressources disponibles et sur les ressources consommées.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="463" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures-1024x463.png" alt="" class="wp-image-2403" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures-1024x463.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures-768x347.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures-1536x695.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_8_WebReport_Dashboard_vSphereInfrastructures.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Parfait pour éviter l&rsquo;overprovisionning, le balloning 🙂</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-9 kt-pane2214_d9a56b-71"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">9 &#8211; vSphere Capacity Planning</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>La vue crainte par les SysAdmins, DSI et DAF. </p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="464" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning-1024x464.png" alt="" class="wp-image-2404" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning-1024x464.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning-300x136.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning-768x348.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning-1536x695.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_040_9_WebReport_Dashboard_vSphereCPlannning.png 1917w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Cela correspond à partir des tendances d&rsquo;usage en une projection de la durée de vie de l&rsquo;infrastructure et donc de son renouvellement ou de sa consolidation en ajoutant des ressources supplémentaires.</p>



<p>En gros :</p>



<p>Exprimer le besoin, Présenter le devis, Faire valider l&rsquo;investissement, Obtenir le chèque signé, Mettre en production les ressources. Simple non ? :p</p>
</div></div></div>
</div></div></div>



<p></p>



<p>Pour le reste, il suffit d&rsquo;un peu d&rsquo;imagination et d&rsquo;établir les métriques que l&rsquo;on souhaite obtenir et pourquoi pas générer les rapports et se les faire envoyer dans notre boite mail ?</p>



<p>Le conseil que je donnerai, c&rsquo;est de se perdre dans le choix des possibles qu&rsquo;offre VEEAMOne et de garder en tête « <strong>Est ce que cela m&rsquo;apporte une valeur ajoutée business et technique ?</strong>« . Si c&rsquo;est le cas alors vous êtes, nous sommes sur la bonne voie 🙂</p>



<h4 class="wp-block-heading">Report</h4>



<p>La fonctionnalité du Report et de générer des rapports. Merci Capt&rsquo;aine Obvious&#8230;</p>



<p>Oooooh ba si on ne peut plus rigoler&#8230; Pour faire simple nous allons être dans la capacité de générer des rapports précis sur des thématiques précises :</p>



<ul class="wp-block-list">
<li>Charge de l&rsquo;infrastructure</li>



<li>Facturation VEEAM Backup</li>



<li>Supervision VEEAM Backup</li>



<li>Optimisation vSphere</li>



<li>Capacity Planning</li>



<li>&#8230;</li>
</ul>



<p>Il suffit de regarde l&rsquo;interface.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="516" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView-1024x516.png" alt="" class="wp-image-2412" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView-1024x516.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView-300x151.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView-768x387.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView-1536x774.png 1536w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_042_WebReport_ReportView.png 1883w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Prenons deux exemples. L&rsquo;un orienté pour le business et l&rsquo;autre pour la technique.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2214_faab50-3b kt-accordion-has-2-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2214_79038a-95"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Business &#8211; Facturation VEEAM Backup</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Admettons que nous souhaitons vérifier ce que nous devrions facturer à un client des bulles T0 et T1 mensuellement. Et que le cout de la sauvegarde est de 24,79€ du TB.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="712" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_WebReport_biliing-1024x712.png" alt="" class="wp-image-2414" style="width:696px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_WebReport_biliing-1024x712.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_WebReport_biliing-300x209.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_WebReport_biliing-768x534.png 768w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_WebReport_biliing.png 1145w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p>Nous configurons les paramètres en sélectionnant nos différents tags T0 et T1 ainsi que les jobs concernés. Nous précisons la période sur le mois en cours. Puis nous cliquons sur Preview en haut à gauche.</p>



<p>Et tadam ! Voilà notre rapport (sur deux pages).</p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center">Page 1</td><td class="has-text-align-center" data-align="center">Page 2</td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="400" height="308" class="wp-image-2415" style="width: 400px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_2_WebReport_biliing.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_2_WebReport_biliing.png 891w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_2_WebReport_biliing-300x231.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_2_WebReport_biliing-768x590.png 768w" sizes="auto, (max-width: 400px) 100vw, 400px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="400" height="411" class="wp-image-2416" style="width: 400px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_3_WebReport_biliing.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_3_WebReport_biliing.png 880w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_3_WebReport_biliing-292x300.png 292w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_043_3_WebReport_biliing-768x789.png 768w" sizes="auto, (max-width: 400px) 100vw, 400px" /></td></tr></tbody></table></figure>



<p>Franchement, que demander de plus ? Nous avons même inclus le cout de notre repository (multipliant le cout par 4). Et nous voilà avec le cout pour le mois en cours. A oui nous sommes le 01 Octobre&#8230;. J&rsquo;ai peut-être eu la main lourde sur le prix unitaire au TB 🙂</p>



<p>Bref, pas mal pour mettre en évidence le ROI<sup data-fn="c7fdf8d1-e2ca-4074-99db-c51fa1d624be" class="fn"><a href="#c7fdf8d1-e2ca-4074-99db-c51fa1d624be" id="c7fdf8d1-e2ca-4074-99db-c51fa1d624be-link">12</a></sup> &lt;3</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2214_6d507c-16"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Technique &#8211; Surdimensionnement des VMs </span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous allons vérifier par le biais d&rsquo;un rapport que nos ressources allouées sur notre infrastructure ne sont pas sous/surprovisonnées. Dans le cas contraire, il faudra engager ou non des actions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="861" height="588" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_WebReport_Oversized.png" alt="" class="wp-image-2417" style="width:577px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_WebReport_Oversized.png 861w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_WebReport_Oversized-300x205.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_WebReport_Oversized-768x524.png 768w" sizes="auto, (max-width: 861px) 100vw, 861px" /></figure>
</div>


<p>On valide une nouvelle fois sur Preview, puis on tourne trois fois sur sa chaise de bureau.</p>



<p></p>



<figure class="wp-block-table aligncenter"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center">Page 1</td><td class="has-text-align-center" data-align="center">Page 2</td><td class="has-text-align-center" data-align="center">Page 3</td></tr><tr><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="199" class="wp-image-2418" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_1_WebReport_Oversized.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_1_WebReport_Oversized.png 1216w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_1_WebReport_Oversized-300x171.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_1_WebReport_Oversized-1024x583.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_1_WebReport_Oversized-768x437.png 768w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="125" class="wp-image-2419" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_2_WebReport_Oversized.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_2_WebReport_Oversized.png 1212w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_2_WebReport_Oversized-300x107.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_2_WebReport_Oversized-1024x365.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_2_WebReport_Oversized-768x274.png 768w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td><td class="has-text-align-center" data-align="center"><img loading="lazy" decoding="async" width="350" height="129" class="wp-image-2420" style="width: 350px;" src="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_3_WebReport_Oversized.png" alt="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_3_WebReport_Oversized.png 1210w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_3_WebReport_Oversized-300x111.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_3_WebReport_Oversized-1024x378.png 1024w, https://erwanguillemard.com/wp-content/uploads/2024/07/AP_009_044_3_WebReport_Oversized-768x284.png 768w" sizes="auto, (max-width: 350px) 100vw, 350px" /></td></tr></tbody></table></figure>



<p>Alors c&rsquo;est super nous pouvons faire des économies en réduisant considérablement les ressources ! </p>



<p class="has-text-align-center"><strong>Tout doux bijoux !</strong></p>



<p class="has-text-align-left">Ce ne sont que des recommandations, il ne faut pas prendre tout pour argent comptant. L&rsquo;évaluation est une moyenne et viens prendre en compte les piques de suractivités. Mais ce n&rsquo;est pas pour autant qu&rsquo;il ne faut pas réfléchir. Dans le cas de mon lab, les ressources se (je ne sais pas si je peux me permettre cette expression&#8230; Allez&#8230; Vous ferez mon procès ultérieurement) touchent ! Mais si nous ciblons une heure bien précise (genre sauvegarde par exemple) les recommandations ne seront pas les mêmes. Il est également important de bien faire attention au paramètre de génération du rapport.</p>



<p>Le rapport sera différent si nous considérons le compteur de vRAM en « Active » et « Consumed ».</p>
</div></div></div>
</div></div></div>



<p></p>



<p>Pourquoi avoir pris ces deux exemples ? Tout simplement pour montrer la dimension économique et technique de la supervision. Dans un monde de brut où nous licencions au vCPU, il est important de maitriser l&rsquo;allocation des ressources. Il est également important de ne pas mettre en péril son organisation quant à la sauvegarde vis à vis de son activité tout comme mettre celle-ci en péril parce que cette dernière représente un cout certain.</p>



<p>Dans un contexte particulier de Service Provider (Fournisseur de Service), il est également important d&rsquo;avoir un curseur le plus juste possible entre la facturation client et le service délivré sans offrir des ressources sans le vouloir et vendre à perte.</p>



<p>Les rapports, c&rsquo;est la vie.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La supervision et l&rsquo;ensemble des outils qui sont mis à disposition par VEEAMOne permettent d&rsquo;unifier et de rendre la Technique au service de l&rsquo;administration et de la stratégie financière. Une telle synergie ne doit pas être négligée et doit être mis en place.</p>



<p>De par mon expérience de responsable informatique auprès des clients que j&rsquo;ai accompagnés, l&rsquo;informatique et la gestion du SI sont toujours trop onéreux. Menant souvent à l&rsquo;accumulation à terme d&rsquo;une dette technique conséquente qui devra être acquitter plus tard. L&rsquo;erreur qui est faite à ce moment par le responsable informatique est de ne pas avoir présenté les choses sous le bon angle. </p>



<p class="has-text-align-center"><strong>Mais alors qu&rsquo;est ce que le bon angle pour éviter la traditionnelle tragédie racinienne ou choix cornélien ?</strong></p>



<p>Je pense que pour répondre à cette question, il faut que le Responsable Informatique prenne de la hauteur pour présenter le SI sans aborder de terme technique pour commencer et présenter des métriques ainsi que des projections sur l&rsquo;évolution du SI.</p>



<p><em>Je fais un aparté, sans déco**é une fois, j&rsquo;ai un DG qui a explosé en réunion à la suite de la prononciation du mot <strong>switch</strong> xD. La personne qui avait énuméré le mot a dû donner une définition. Chose qu&rsquo;il a fait en parlant de commutateur&#8230; Le DG a explosé de nouveau. Mon collègue à côté fini par intervenir (avant un nouvelle intervention de la personne en interne) en expliquant « c&rsquo;est une multiprise réseaux ». Le DG a compris sans problème. 🙂 Aparté terminé.</em></p>



<p>De rapprocher ce dernier sur l&rsquo;activité de l&rsquo;organisation et de définir les axes d&rsquo;évolutions possibles. Un plus serait de soutenir un budget prévisionnel ainsi qu&rsquo;un plan d&rsquo;amortissement. Présenter de cette façon en tenant compte du besoin et de l&rsquo;activité de l&rsquo;organisation va faciliter les décisions et permettre à la direction d&rsquo;avoir une vision claire de son informatique. Mais pour en arriver là, il est nécessaire de savoir ce que nous souhaitons surveiller et interpréter. N&rsquo;oublions pas que si les diseuses de bonnes aventures lisent dans les boules de cristal, les membres de la direction lisent dans les fichiers excels et les SysAdmins dans les logs. &lt;3</p>



<p>Je pense qu&rsquo;il est donc primordiale d&rsquo;utiliser VEEAMOne (non je n&rsquo;ai toujours pas d&rsquo;action chez VEEAM) pour répondre aux besoins du quotidien d&rsquo;un SysAdmin ainsi que pour la stratégie d&rsquo;une organisation. Il faut cependant de la rigueur et ne pas se disperser dans les catégorisations et l&rsquo;élaboration des rapports. L&rsquo;objectif étant de maitriser son SI, se prémunir des pannes et de garantir une stratégie d&rsquo;investissement financier.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>VEEAM ? One ! Raviolis ? Je relance avec une requête CIM. Je contre avec un arbre ! Dommage, il y avait un DAF en diagonal. Aïe Aïe Aïe, votre SI va chercher son solde de tout compte. Mais vous gagnez un pins de Marlène SCHIAPPA. Alors heureux ?</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://helpcenter.veeam.com/docs/one/deployment/about.html?ver=120">VEEAM One : Guide</a></li>



<li><a href="https://helpcenter.veeam.com/docs/one/deployment/ports.html?ver=120">VEEAM One : Guide &#8211; Ports</a></li>



<li><a href="https://helpcenter.veeam.com/docs/one/deployment/supported_platforms.html?ver=120">VEEAM One : Supported Virtualization Platforms</a></li>



<li><a href="https://helpcenter.veeam.com/docs/one/deployment/integration_with_vbr.html?ver=120">VEEAM One : Supported VEEAM BR</a></li>



<li><a href="https://helpcenter.veeam.com/docs/one/deployment/system_requirements.html?ver=120">VEEAM One : Supported System</a></li>



<li><a href="https://helpcenter.veeam.com/docs/one/deployment/requirements.html?ver=120">VEEAM One : Sizing</a></li>



<li><a href="https://www.combodo.com/itop">ITOP</a></li>



<li><a href="https://www.robware.net/">RVTOOLS</a></li>
</ul>


<ol class="wp-block-footnotes"><li id="f06205f4-5aa7-41f6-ad2f-a0700244a619"><strong>MO</strong> <strong>:</strong> Mode Opératoire <a href="#f06205f4-5aa7-41f6-ad2f-a0700244a619-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="6c5e019d-9bd7-488f-a99c-94a276a87a42"><strong>VBR : </strong>VEEAM Backup et Réplication <a href="#6c5e019d-9bd7-488f-a99c-94a276a87a42-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="e2646e5b-baaf-473d-b129-d2ce9a62c9bc"><strong>VCC :</strong> VEEAM CloudConnect <a href="#e2646e5b-baaf-473d-b129-d2ce9a62c9bc-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="dfdd2de5-6caa-4ca5-b9de-f8668765a621"><strong>VCSA</strong> : VCenter Server Appliance <a href="#dfdd2de5-6caa-4ca5-b9de-f8668765a621-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="97d37c9d-5bb7-4bcb-a6f4-d4c3276e8b40"><strong>RTFM : </strong>Read The Fucking Manual (please 🙂 ) <a href="#97d37c9d-5bb7-4bcb-a6f4-d4c3276e8b40-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="418f9970-4de2-4a8c-8125-451c42d430e8"><strong>RBAC :</strong> Role Based Access Control <a href="#418f9970-4de2-4a8c-8125-451c42d430e8-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="95c79d00-006e-451e-8bff-c3326dcebb69"><strong>ESXi</strong> : Elastic Sky X Integrated <a href="#95c79d00-006e-451e-8bff-c3326dcebb69-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="2744af2e-fbb4-47dd-9745-c0bdb6873d2f"><strong>IHM</strong> : Interface Homme Machine <a href="#2744af2e-fbb4-47dd-9745-c0bdb6873d2f-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="6ade8182-4ad8-4fc4-9d28-0e5670bac72b"><strong>SNMP</strong> : Simple Network Management Protocol <a href="#6ade8182-4ad8-4fc4-9d28-0e5670bac72b-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li><li id="9b132b0b-6461-4936-aeb2-ef4e3e13fe74"><strong>ITSM</strong> : Information Technology Service Management  <a href="#9b132b0b-6461-4936-aeb2-ef4e3e13fe74-link" aria-label="Aller à la note de bas de page 10">↩︎</a></li><li id="704024f1-a815-4874-93a2-bd1adca7cb93"><strong>API </strong>: Application Programming Interface <a href="#704024f1-a815-4874-93a2-bd1adca7cb93-link" aria-label="Aller à la note de bas de page 11">↩︎</a></li><li id="c7fdf8d1-e2ca-4074-99db-c51fa1d624be"><strong>ROI</strong> : Return On Investisment <a href="#c7fdf8d1-e2ca-4074-99db-c51fa1d624be-link" aria-label="Aller à la note de bas de page 12">↩︎</a></li></ol>


<p style="font-size:3px"><em>À L.LU , mon étoile, le plus parfait des sciences.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Apps &#8211; VEEAM Repo &#038; Backup Hardened</title>
		<link>https://erwanguillemard.com/apps-veeam-repo-backup-hardened/</link>
		
		<dc:creator><![CDATA[Erwan Guillemard]]></dc:creator>
		<pubDate>Mon, 17 Jun 2024 19:56:42 +0000</pubDate>
				<category><![CDATA[Applications]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Securité]]></category>
		<category><![CDATA[VEEAM]]></category>
		<guid isPermaLink="false">https://erwanguillemard.com/?p=2111</guid>

					<description><![CDATA[Hardened, un bien vilain mot qui pourtant nous veux du bien. L&#8217;une des traductions littérales serait « endurcie ». Néanmoins nous interpréterons celui-ci sous le sens « d&#8217;immuable ». Si hardened est un bien vilain mot, immuable ne vaut pas mieux. Et à chaque fois que j&#8217;ai évoqué ces termes à quelqu&#8217;un j&#8217;ai dû donner une définition. Qui demeure...]]></description>
										<content:encoded><![CDATA[
<p>Hardened, un bien vilain mot qui pourtant nous veux du bien. L&rsquo;une des traductions littérales serait « endurcie ». Néanmoins nous interpréterons celui-ci sous le sens « d&rsquo;immuable ».</p>



<p>Si hardened est un bien vilain mot, immuable ne vaut pas mieux. Et à chaque fois que j&rsquo;ai évoqué ces termes à quelqu&rsquo;un j&rsquo;ai dû donner une définition.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Qui demeure inchangé, ne subit pas ou ne paraît pas subir de modification pendant un temps relativement long</em></p>
<cite>Dictionnaire Larousse</cite></blockquote>



<p>Le titre de ce billet ainsi que les multiples appels du pied du précédent article technique sur VEEAM, ne laisse pas de doute quant au fil conducteur de ce feuillet technique.</p>



<p>Nous aborderons ici la sauvegarde dit immuable ou inaltérable pour répondre à l&rsquo;un des bonnes pratiques et recommandations de la sauvegarde.</p>





<h2 class="wp-block-heading">Prérequis</h2>



<ul class="wp-block-list">
<li><strong>SE :</strong> Ubuntu Server 20.04 LTS</li>



<li><strong>Apps : </strong>VEEAM B&amp;R 12.1</li>



<li><strong>Autres : </strong>
<ul class="wp-block-list">
<li><a href="https://erwanguillemard.com/linux/">Environnement GNU LINUX Durci</a></li>



<li><a href="https://erwanguillemard.com/windows-veeam-backup-replication/">VEEAM B&amp;R 12.1</a></li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Avant Propos</h2>



<p>Le pourquoi du comment de la sauvegarde Immuable ou Hardened vient d&rsquo;un constat. Avec l&rsquo;évolution depuis 2015 des virus de nature cryptographique, les attaquants ne s&rsquo;amusent plus à effacer toutes traces d&rsquo;un SI (car c&rsquo;est moins drôle de nous jours ce coup de HOCUS, POCUS) mais de chiffrer ce dernier de virer les sauvegardes et de tenir une situation de prise d&rsquo;otage (sans permettre un syndrome de Stockholm) et de chantage à divulguer les données d&rsquo;entreprise sur le Dark &amp; Deep Web. Toutefois, les rançons demandées dans la grande majorité des cas sont indexées sur le CA des sociétés piègés ou de la nature critique des données extorquées&#8230;</p>



<p>Alors il y a bien des techniques, mécanismes pour assurer une sauvegarde hors ligne. L&rsquo;une des plus vieilles à ma connaissance reste la sauvegarde sur bande (Tape). Même si cette dernière comme le langage <a href="https://fr.wikipedia.org/wiki/Cobol">COBOL</a> était amené à mourir car dépassé par notre évolution technologique. Force est de constatée, que cette technologie reste l&rsquo;un des mécanismes fiables pour assurer une sauvegarde hors ligne. Il y a bien la sauvegarde sur média externe (pour ne pas dire HDD) qui fonctionne très bien. Mais ce genre de solution, voyez vous, ça rentre parfaitement dans le cadre d&rsquo;une PME ou d&rsquo;un SI local (pour ne pas dire OnPremise) qui n&rsquo;a pas un SI avec des fluctuations de stockage à la hausse. Pour résumer, comment assurer la sauvegarde déconnecté dans un datacenter ou une infrastructure qui peut être amené à grossir rapidement ?</p>



<p>Je vois (c&rsquo;est mon point de vu. Si vous n&rsquo;êtes pas d&rsquo;accord, je suis prêt à échanger sur le sujet) les avantages et inconvénients suivants :</p>



<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center"></td><td>Tapes Serveur</td><td>USB External Drive</td><td>Repo Hardened</td></tr><tr><td class="has-text-align-center" data-align="center">Avantages</td><td>* Performances importantes<br>* Difficiles à exploiter sans lecteur<br></td><td>* Moindre cout<br>* Facile à exploiter en cas de sinistre<br>* Facilement évolutif</td><td>* Cout raisonnable<br>* Basée sur une technologie libre<br>* Maitrise des couts<br>* Difficilement exploitable en cas de vol ou d&rsquo;intrusion<br>* Facilement évolutif</td></tr><tr><td class="has-text-align-center" data-align="center">Inconvénients</td><td>* Cout du robot de sauvegarde<br>* Cout des bandes<br>* Penser à changer les bandes (si pas de robot rotatif)<br>* Limiter au nombre de bande<br>* Penser à stocker le média dans un lieu sûr<br>* Changement de robot, peut entrainer le changement des bandes ($$$)<br>* Difficilement évolutif</td><td>* Penser à changer le média physiquement<br>* Penser à stocker le média dans un lieu sûr<br>* Performances limités<br>* Facile à exploiter si les données ne sont pas chiffrées<br></td><td>* Serveur Physique dédié<br>* Compétences en Linux ++ (pour faire les choses bien)<br>* Equipement jamais vraiment déconnecté du SI<br><br><br></td></tr></tbody></table></figure>



<p class="has-text-align-center"><strong>« Ouai mais qu&rsquo;est ce que tu fais du Stockage Objet, des buckets toussa toussa ? C&rsquo;est bien inaltérable non ? »</strong></p>



<p>Oui et non. Je n&rsquo;ai pas encore eu le loisir de jouer avec les stockages objets S3 ou d&rsquo;autres technologies qui se base sur ce standard. Avant toutes choses, il est je pense important de se poser la question de la nature des données que nous souhaitons sauvegarder. Il y a des avantages et des inconvénients au type de sauvegarde en blocks et objets. Certains types de données sont plus favorables à l&rsquo;un ou l&rsquo;autre des technologies de sauvegarde. Bref, spoiler c&rsquo;est un billet en réflexion et sur lequel je me dois de me motiver (à coup de grand coup de pied au c*l car je suis à <a href="https://www.youtube.com/watch?v=a_oOPYvGzN8&amp;ab_channel=Hubert-F%C3%A9lixThi%C3%A9faine-Topic">l&rsquo;ouest du néant</a> en ce moment).</p>



<p>Bref, si nous rattrapons notre fil d&rsquo;ariane, je vois dans une cloud privé un facilité à choisir la sauvegarde hardened sur un serveur dédié. Si le SI augmente et que nous devons ajouter des ressources des nœuds supplémentaires, j&rsquo;ajoute un nouveau repo. Si mon SI diminue, je recycle mon serveur de repository pour un autre usage. Seul hic, cela demande de bonnes compétences en GNU/LINUX (mais cela est il vraiment un frein ? Les compétences ça s&rsquo;acquiert non 🙂 ).</p>



<figure class="wp-block-table"><table><tbody><tr><td><strong>/!\ Attention /!\</strong><br>Je traiterai de la sauvegarde sur média USB dans un article futur (et encore c&rsquo;est pas super complexe) ou pas.<br>Je n&rsquo;ai jamais « joué » avec un serveur de bandes que ce soit dans le monde professionnel (oui j&rsquo;ai le malheurs d&rsquo;être un de ces milléniales des 90&rsquo;s qui est considéré comme un petit jeune/c*n par la génération 80&rsquo;s et un <em>has been</em> / <em>never been</em> par la génération 2000&#8230;) car plus présent lors de mon arrivée dans le milieu de l&rsquo;IT. Ni dans le monde personnel car pour le coup si je monte sur mon lab un robot de sauvegarde à bandes, je suis certains que je vais en entendre parler un moment&#8230;<br>Mais je suis preneur si l&rsquo;occasion se présente de plonger tête la première dans la techno.</td></tr></tbody></table></figure>



<p>Pour ce billet, je vais tricher un peu. N&rsquo;ayant pas de repo physique sur mon lab (et que mon lab tiens à mon poste perso), nous partirons d&rsquo;un serveur virtuel qui « jouera » le rôle de notre repo physique.</p>



<p>Ce dernier sera sur un SE<sup data-fn="c69c2835-a941-45dd-ba6c-71392873daa8" class="fn"><a href="#c69c2835-a941-45dd-ba6c-71392873daa8" id="c69c2835-a941-45dd-ba6c-71392873daa8-link">1</a></sup>, Ubuntu Server 20.04 LTS<sup data-fn="c5ab9c8c-0307-4b61-83b5-82041447e886" class="fn"><a href="#c5ab9c8c-0307-4b61-83b5-82041447e886" id="c5ab9c8c-0307-4b61-83b5-82041447e886-link">2</a></sup> durci préalablement selon le guide de recommandation de l&rsquo;ANSSI<sup data-fn="c7bb64ce-4db6-48ca-866d-f856e977c1a1" class="fn"><a href="#c7bb64ce-4db6-48ca-866d-f856e977c1a1" id="c7bb64ce-4db6-48ca-866d-f856e977c1a1-link">3</a></sup>. Un disque pour la sauvegarde est dédié, monté et formaté en XFS<sup data-fn="58bbf35d-a51b-4ba9-937a-d58393f894bc" class="fn"><a href="#58bbf35d-a51b-4ba9-937a-d58393f894bc" id="58bbf35d-a51b-4ba9-937a-d58393f894bc-link">4</a></sup>.</p>



<p class="has-text-align-center"><strong>Euh Question M&rsquo;sieur GUIGUI ! Toi qui nous rabache du RHEL matin, midi et soir. Pourquoi d&rsquo;un coup tu pars sur un Ubuntu ? Ca t&rsquo;a pris comme un envie de ch**r de changer de distrib ?</strong></p>



<p>A cette question, je répondrai tendrement qu&rsquo;il s&rsquo;agit simplement et tout bonnement des prérequis de l&rsquo;éditeur VEEAM. Sinon, la question n&rsquo;aurait pas eu lieu :rhel: (pour ceux qui ont connu le <a href="https://jvflux.fr/Noelisme">:noel:</a> ).</p>



<p>Fin de l&rsquo;avant propos, place à la lecture du menu avant de mettre un coup de fourchette.</p>



<h2 class="wp-block-heading">Théorie</h2>



<p>Attaquons donc ce menu qui nous fait tant de l&rsquo;oeil. La première question que nous nous devons de poser est « Qu&rsquo;est ce que l&rsquo;immuabilité ? » et la seconde question, « Comment fonctionne t&rsquo;elle ? »</p>



<h3 class="wp-block-heading">Introduction à l&rsquo; i-mmuabilité</h3>



<p>L&rsquo;immuabilité au sens UNIX du texte existe depuis le 16 Janvier 1996. Cette commande est présente dans le paquet E2fsprogs de la release 1.02. (Si je me fourvoie, merci de me le dire car j&rsquo;ai du mal à trouver l&rsquo;histoire de cette dernière&#8230;).</p>



<p>Cette commande permet de définir des attributs complémentaires sur les systèmes de fichiers dont notamment l&rsquo;immuabilité des fichiers.</p>



<p>Pour manipuler ces attributs, nous pouvons utiliser l&rsquo;ensemble des commandes suivantes :</p>



<ul class="wp-block-list">
<li>chattr</li>



<li>lsattr</li>



<li>getattr</li>



<li>setxattr</li>
</ul>



<p>Observons ci dessous l&rsquo;ensemble des commandes suivantes :</p>



<pre class="wp-block-code"><code><strong>$ sudo chattr +i test.txt
$ sudo lsattr test.txt
$ sudo rm -Rf test.txt
$ sudo chattr -i test.txt
$ sudo lsattr test.txt
$ sudo rm -Rf test.txt</strong></code></pre>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="698" height="258" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_017_Immu_chattr.png" alt="" class="wp-image-2145" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_017_Immu_chattr.png 698w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_017_Immu_chattr-300x111.png 300w" sizes="auto, (max-width: 698px) 100vw, 698px" /></figure>
</div>


<p>J&rsquo;ai appliqué l&rsquo;attribut d&rsquo;immutabilité sur le fichier test.txt et surprise, même en élevant mes droits, je ne suis pas autorisé à supprimer le document. Cela ne sera possible qu&rsquo;en retirant l&rsquo;attribut. Nous tenons le début de notre mécanisme.</p>



<p><em>Ouvrez le GUILLEMARD </em>« </p>



<p><em>Je pense après une courte nuit de réflexion que je dédierai un article sur les attributs étendus car il y a énormément de matière sur le sujet. De plus, j&rsquo;ai ouvert the <a href="https://www.jeuxvideo.com/wikis-soluce-astuces/cheat-codes/235924">PANDORAS BOX</a> (toi aussi <a href="https://www.youtube.com/watch?v=_iq43Vs8CEw&amp;ab_channel=L%C3%A9oFerr%C3%A9">tu te souviens des jours anciens</a> des LANs sur AoM ? Petit canaillou de cheater va) et je me dois de boire jusqu&rsquo;à la lie ce module et l&rsquo;éventail des fonctionnalités qu&rsquo;il propose.</em></p>



<p>« <em> Fermez le GUILLEMARD </em></p>



<p>Mais alors comment cette fonctionnalité va t-elle être pilotée par notre serveur VEEAM ?</p>



<h3 class="wp-block-heading">V-immutability-M</h3>



<p>Là deux possibilités. Either you speak and read english and you can directly jump to the <a href="https://helpcenter.veeam.com/docs/backup/vsphere/hardened_repository_immutability.html?ver=120">Veeam hardened guide</a>. Ou alors on peut regarder ensemble ma compréhension du sujet.</p>



<p>Après tout, je n&rsquo;ai eu que 5/20 au BAC en LV1 Anglais, ça promet d&rsquo;être sympa 🙂 (Si si et j&rsquo;ai même pas été au rattrapage ! <a href="https://www.youtube.com/watch?v=ZAcvuP7UpL0&amp;ab_channel=MrToonfish">Et il est content</a>&#8230;)</p>



<p>Bref, nous verrons plus bas lors du déploiement que lorsque nous ajoutons notre Serveur Ubuntu en tant que Single Use Credential nous allons déployer les rôles :</p>



<ul class="wp-block-list">
<li><strong>Transport</strong> : (veeamtransport) pour le service datamover (port tcp/6162)</li>



<li><strong>Installer</strong> : (veeamdeploymentsvc) pour déployer l&rsquo;ensemble des composants et permettre de maintenir à jour les différents composants (ports tcp/2500</li>
</ul>



<p>Toutefois, c&rsquo;est lorsque nous déclarerons notre repository en tant que Hardened repository que cela va devenir intéressant. Car c&rsquo;est à ce moment que nous allons définir les paramètres de gestion de l&rsquo;immuabilité sur une période minimum de 7 jours (promis je reviendrai un jour sur la magie du nombre 7). Bref une fois configuré, voilà les services les plus importants.</p>



<ul class="wp-block-list">
<li><strong>VEEAM Data Mover</strong> : Ces ce dernier qui va communiquer avec notre serveur VEEAM et récupérer les paramètres de temps quant aux datas qui doivent être inaltérables. Une fois les informations en sa possession, il réalise une passe décisive au service ci dessous VEEAM Immutability Service (veeamimmureposvc), comme la passe décisive de Djorkaeff à Thuram à la 47eme minutes du match France-Croatie en 1998 (<a href="https://www.youtube.com/watch?v=91k5OTiKjAg&amp;ab_channel=FunkyMiK">Souviens toi du 12 Juillet 1998 !</a>).</li>



<li><strong>VEEAM Immutability Service</strong> : <a href="https://www.youtube.com/watch?v=0zqwMf_VDbU&amp;ab_channel=LesGuignols">Va aller mettre une patate à Jean-Pierre</a>&#8230; Promis j&rsquo;arrête, Bah Pourquoi ?&#8230; Tu vas la fermer ta grande gu***e !! Ce service va vérifier sur les chaque fichiers de backup toutes les 20 minutes les attributs immuables jusqu&rsquo;à ce que le date de fin soit atteinte. Ce service est un sous service de VEEAM Data Mover.</li>
</ul>



<p>A partir de la version 12.1.0.2131, le mécanisme change avec un control, détection sur un potentiel décalage de temps.</p>



<p>Lorsque le VEEAM Immutability Service démarre, un fichier <strong>timeLog</strong> va être créé sous <strong>/etc/veeam/immureposvc/</strong>. Ce fichier sera mis à jour toutes les 10 minutes.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="741" height="79" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_019_Immu_timeLog.png" alt="" class="wp-image-2151" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_019_Immu_timeLog.png 741w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_019_Immu_timeLog-300x32.png 300w" sizes="auto, (max-width: 741px) 100vw, 741px" /></figure>
</div>


<p>Oui mais que se passerai t-il si la valeur du moveTime ou accelerationTime dépasse 24 heures ?</p>



<p>Par sécurité, les données relatifs aux opérations de rétentions seront bloqués. Un message d&rsquo;avertissement remontera dans la session du job de sauvegarde. Ce qui est rassurant. Oui mais voilà, comment j&rsquo;unlock la situation ? Ba en suivant le <a href="https://www.veeam.com/kb4482">KB</a> mon gars&#8230;</p>



<h3 class="wp-block-heading">Architecture</h3>



<p>Dans les recommandations et l&rsquo;un des prérequis de l&rsquo;implémentation d&rsquo;un repository hardened est d&rsquo;avoir un équipement dédié sans surcouche de virtualisation. Nous parlons donc de serveur et non pas d&rsquo;hyperviseur.</p>



<p>En dehors des bonnes pratiques de configuration d&rsquo;un serveur, je ne m&rsquo;intéresserai qu&rsquo;à la partie réseau. La configuration de la partie ILO/IDRAC/IPMI ne sera pas abordée. Pourquoi ? car je n&rsquo;en ai pas envie et surtout je n&rsquo;ai pas les moyens de le mettre en œuvre sur mon lab. Peut être un jour dans un autre article.</p>



<p>Au vu de la criticité de ce que nous souhaitons mettre en place, il nous faut dissocier la partie management de la partie sauvegarde.</p>



<p>Avec des équipements d&rsquo;infrastructures adéquates et selon la volumétrie de datas à sauvegarder, l&rsquo;agrégation d&rsquo;interfaces est nécessaire. Au minima SFP+<sup data-fn="3b6c0862-32cf-4554-ac0a-e9cfe2377193" class="fn"><a href="#3b6c0862-32cf-4554-ac0a-e9cfe2377193" id="3b6c0862-32cf-4554-ac0a-e9cfe2377193-link">5</a></sup>, au maximum FC<sup data-fn="cc7945a0-53b5-45d9-8bac-c78a1fd6053a" class="fn"><a href="#cc7945a0-53b5-45d9-8bac-c78a1fd6053a" id="cc7945a0-53b5-45d9-8bac-c78a1fd6053a-link">6</a></sup>. Assurer les performances réseaux sont un fait, toutefois si le stockage ne suit pas et génère un goulot d&rsquo;étranglement (bolteneck), cela ne sert pas à grand chose.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="633" height="257" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_026_Immu_arch_server.png" alt="" class="wp-image-2180" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_026_Immu_arch_server.png 633w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_026_Immu_arch_server-300x122.png 300w" sizes="auto, (max-width: 633px) 100vw, 633px" /></figure>
</div>


<h4 class="wp-block-heading">Réseau</h4>



<p>Bien entendu, si notre Firewall gère les liaisons supérieurs à 1 Gbits/s, il y a un intérêt de faire un VLAN dédié à l&rsquo;immuabilité dissocié de la sauvegarde. Dans le cas contraire et assurer de bonne performance, il conviendra de rester dans le même subnet et de passer par commutation.</p>



<p>Encore une fois, si nous avons de la micro segmentation, cela facilitera grandement les choses sur un même subnet. Dans le cas contraire, il sera nécessaire de définir les règles côté repo selon les interfaces, sources et destinations avec les ports et protocoles autorisées à transiter.</p>



<p>Lors de la configuration du repository et donc sans restriction les flux réseaux sont les suivants :</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="606" height="239" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_allFlux.png" alt="" class="wp-image-2182" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_allFlux.png 606w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_allFlux-300x118.png 300w" sizes="auto, (max-width: 606px) 100vw, 606px" /></figure>
</div>


<p>Une fois les ressources push du serveur VEEAM vers le serveur hardened (tcp:22), le service VEEAM Installer se charge d&rsquo;installer et de déployer les composants (tcp:6160). Une fois les dépendances installées, la sauvegarde se déroulera à travers le service VEEAM Data Mover (tcp:6162) ainsi que le service Mount Server (tcp:2500-3000).</p>



<p>Soit au final nous n&rsquo;avons besoin que des flux suivants :</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="581" height="229" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_someFlux.png" alt="" class="wp-image-2183" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_someFlux.png 581w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_027_Immu_arch_someFlux-300x118.png 300w" sizes="auto, (max-width: 581px) 100vw, 581px" /></figure>
</div>


<p><strong>Ok, ça c&rsquo;est pour VEEAM, mais niveau serveur physique, il n&rsquo;y a pas des choses à faire ? </strong></p>



<p>Bien vu l&rsquo;aveugle. Il sera nécessaire d&rsquo;autoriser les protocoles :</p>



<figure class="wp-block-table"><table><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Sens</strong></td><td class="has-text-align-center" data-align="center"><strong>Protocoles</strong></td><td class="has-text-align-center" data-align="center"><strong>Sources</strong></td><td class="has-text-align-center" data-align="center"><strong>Destinations</strong></td><td class="has-text-align-center" data-align="center"><strong>Actions</strong></td></tr><tr><td class="has-text-align-center" data-align="center">IN</td><td class="has-text-align-center" data-align="center">tcp:22</td><td class="has-text-align-center" data-align="center">Subnet de management</td><td class="has-text-align-center" data-align="center">Repo Hardened</td><td class="has-text-align-center" data-align="center">Deny</td></tr><tr><td class="has-text-align-center" data-align="center">LAN</td><td class="has-text-align-center" data-align="center">udp:161-162</td><td class="has-text-align-center" data-align="center">Repo Hardened</td><td class="has-text-align-center" data-align="center">SNMP Server</td><td class="has-text-align-center" data-align="center">Allow</td></tr><tr><td class="has-text-align-center" data-align="center">OUT</td><td class="has-text-align-center" data-align="center">tcp:80</td><td class="has-text-align-center" data-align="center">Repo Hardened (ILO)</td><td class="has-text-align-center" data-align="center">*.builder.com</td><td class="has-text-align-center" data-align="center">Allow</td></tr><tr><td class="has-text-align-center" data-align="center">OUT</td><td class="has-text-align-center" data-align="center">tcp:443</td><td class="has-text-align-center" data-align="center">Repo Hardened (ILO)</td><td class="has-text-align-center" data-align="center">*.builder.com</td><td class="has-text-align-center" data-align="center">Allow</td></tr><tr><td class="has-text-align-center" data-align="center">OUT</td><td class="has-text-align-center" data-align="center">tcp:25,465,587</td><td class="has-text-align-center" data-align="center">Repo Hardened (ILO)</td><td class="has-text-align-center" data-align="center">relai smtp<em>(s) over tls</em></td><td class="has-text-align-center" data-align="center">Allow</td></tr><tr><td class="has-text-align-center" data-align="center">IN</td><td class="has-text-align-center" data-align="center">http</td><td class="has-text-align-center" data-align="center">ANY</td><td class="has-text-align-center" data-align="center">Repo Hardened (ILO)</td><td class="has-text-align-center" data-align="center">Deny</td></tr><tr><td class="has-text-align-center" data-align="center">IN</td><td class="has-text-align-center" data-align="center">https</td><td class="has-text-align-center" data-align="center">ANY</td><td class="has-text-align-center" data-align="center">Repo Hardened (ILO)</td><td class="has-text-align-center" data-align="center">Deny</td></tr></tbody></table></figure>



<h4 class="wp-block-heading">Users &amp; Permissions</h4>



<p>Dans l&rsquo;idée, il convient d&rsquo;utiliser un compte utilisateur pour la sauvegarde veeam. Ce dernier aura la charge de quelques services. Ce compte ne doit en aucun cas être membre du groupe SUDO. Il l&rsquo;est uniquement lors du déploiement et lors du MCO logiciel. Ensuite les droits doivent lui être retirés.</p>



<p>Il en va de même que l&rsquo;accès au répertoire qui va contenir les sauvegardes doivent avoir des droits restreints à notre seul et unique utilisateur VEEAM que ce soit en tant qu&rsquo;utilisateur et groupe.</p>



<p>Les droits devant être défini sur 700.</p>



<p>Mouai, c&rsquo;est enfoncer une porte ouverte non ? Ouai ba j&rsquo;ai vu des SysAdmins faire des choses à la limite de faire<a href="https://www.youtube.com/watch?v=YTtbg71Tj5M&amp;ab_channel=Whitesos"> voir des choses terribles à un petit garçon</a>.</p>



<p>Il en va de soi, mais le sticky bit on oublie. Perso, je ne comprends qu&rsquo;elle serait l&rsquo;utilité du sticky bit. Mais bon, si VEEAM le précise, c&rsquo;est bien que certains SysAdmins ont essayés.</p>



<h3 class="wp-block-heading">Chaînes, maillons, et immutabilité</h3>



<p>Pour assurer l&rsquo;immuabilité des données de nos chaines, le mécanisme qui sera utilisé sera le même que pour la Foreward Incremental avec automatiquement une active full ou une syntetic full. </p>



<p>Pourquoi ? Une petit schéma s&rsquo;impose.</p>



<p>Partons du principe que nous définissions le nombre de point d&rsquo;immuabilité à 7 jours. Avec une synthétique full hebdomadaire tous les dimanches.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="216" height="80" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_1.png" alt="" class="wp-image-2184"/></figure>
</div>


<p>Sauf que voilà, il y a un problème. Le premier point immuable est une full et le dernier point avant la dernière full est une incrémental (Sunday to Saturday). L&rsquo;immuabilité étant défini à 7 jours les points sont donc inaltérables tant que l&rsquo;échéance du dernier point incrémental n&rsquo;est pas atteint. Si la full est supprimée les incréments ne sont pas utile. Donc nous devons attendre de nouveau 7 jours pour supprimer la première chaine et la création d&rsquo;une troisième full.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="371" height="79" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_2.png" alt="" class="wp-image-2185" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_2.png 371w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_2-300x64.png 300w" sizes="auto, (max-width: 371px) 100vw, 371px" /></figure>
</div>


<p>Nous avons pas 7 points inaltérables mais 13 points.</p>



<p>Une fois la full réalisée le 3 dimanches nous passons à 14 points. C&rsquo;est à ce moment là, une fois la full terminée et rendu inaltérable que les 6 premières points de la chaine se verront retirés l&rsquo;attribut d&rsquo;immuabilité puis les maillons seront supprimés (Le principe, se base sur le Grand-Père, Père et fils).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="404" height="80" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_3.png" alt="" class="wp-image-2186" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_3.png 404w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_028_Immu_chain_3-300x59.png 300w" sizes="auto, (max-width: 404px) 100vw, 404px" /></figure>
</div>


<p>Et puis on recommence.</p>



<p>Donc nous avons un minimum de 7 points de rétention et un maximum de 13 points.</p>



<p>Un point sur lequel je n&rsquo;ai toutefois pas encore fait de test, reste le traitement de l&rsquo;externalisation (backup copy). Le principe de GFS doit alors être configuré. J&rsquo;essaierai plus tard.</p>



<p>Je pense que maintenant nous avons toutes les informations requises pour passer à la pratique. Il n&rsquo;est pas impossible que certaines parties ne soient pas toutes à fait complètes. Il est difficile de tout couvrir et de ne rien oublier. Mais on peut toujours échanger pour toutes questions.</p>



<h2 class="wp-block-heading">Pratique</h2>



<h3 class="wp-block-heading">Configuration Repository</h3>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2111_71e697-c7 kt-accordion-has-4-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2111_51b63b-19"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Création du compte VEEAM</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous créons donc notre utilisateur dédié à VEEAM et nous lui définissons un mot de passe robuste.</p>



<pre class="wp-block-code"><code><strong>$ sudo useradd usr.veeam</strong>
<strong>$ sudo passwd usr.veeam</strong></code></pre>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2111_c172fd-ea"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Ajout au groupe SUDO</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;utilisateur créé, il nous faudra lui donner temporairement les droits d&rsquo;élévation de privilége (sudo) que nous lui retirerons une fois l&rsquo;installation des composants et dépendances terminées.</p>



<pre class="wp-block-code"><code><strong>$ sudo usermod -aG sudo usr.veeam</strong></code></pre>



<p>Puis plus ultérieurement</p>



<pre class="wp-block-code"><code><strong>$ sudo gpasswd -d usr.veeam sudo</strong></code></pre>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2111_c138db-3c"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Partition dédiée</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Il en va de soi que nous ne stockerons pas les données de sauvegarde sur la partition et disque système.</p>



<p>Nous allourons un disque dédié sur un volume autre que le système pour stocker nos datas immuable. L&rsquo;un des prérequis, le format doit être en XFS.</p>



<p>Il n&rsquo;est pas improbable qu&rsquo;à la suite vous rencontriez des problèmes quant à la capacité de votre stocakge. Je m&rsquo;explique, au délà de 2 TB de données, il ne sera pas possible de créer la partition avec l&rsquo;utilitaire <strong>fdisk</strong>, mais avec <strong>gdisk</strong>.</p>



<p>Les commandes sont sensiblement les mêmes que pour <strong>fdisk</strong>. Un mémo, plus qu&rsquo;un mode opératoire (attention les commandes qui suivent sont expéditives. Enfin vous pouvez admirer un des rares moments de travaille bâcler 🙂 ).</p>



<pre class="wp-block-code"><code><strong>$ sudo gdisk /dev/sdX
   * n
   * 1
   * Paramètres par défaut
   * 8300
   * w
   * y</strong></code></pre>



<p>Nous formatons la partoche</p>



<pre class="wp-block-code"><code><strong>$ sudo mkfs.xfs /dev/sdX1</strong></code></pre>



<p>Petit montage dans les règles de l&rsquo;art (je passe la partie fstab, là on est sur du standard de chez standard. Dans le cas contraire, faite un tour <a href="https://erwanguillemard.com/linux-disk-part/">ici</a>).</p>



<pre class="wp-block-code"><code><strong>$ sudo mkdir /mnt/veeam
$ sudo mkdir /mnt/veeam/hardened_repository
$ sudo mount -o rw /dev/sdX1 /mnt/veeam/hardened_repository</strong></code></pre>



<p> Notre partition est montée.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2111_82b9ac-70"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Permissions et répertoire</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Afin de se prémunir contre toutes potentielles intrusions de la part d&rsquo;un autre utilisateur sur notre repo est donc sur notre point de montage, nous allons définir l&rsquo;accès uniquement à notre utilisateur et son groupe en modification utilisateur uniquement.</p>



<p>Soit par une traduction en shell par :</p>



<pre class="wp-block-code"><code><strong>$ sudo chmod 700 -R /mnt/veeam/hardened_repository</strong>
<strong>$ sudo chown usr.veeam:usr.veeam /mnt/veeam/hardened_repository</strong></code></pre>
</div></div></div>
</div></div></div>



<p></p>



<p>Si je n&rsquo;ai rien omis, nous pouvons passer à la suite et toutes les étapes devraient bien se passer. Dans le cas contraire, je vous autorise à me donner une grande tape sur l&rsquo;épaule, promis je vous dirai merci pour ne pas m&rsquo;en reprendre une dizaine.</p>



<h3 class="wp-block-heading">Intégration dans VEEAM</h3>



<h4 class="wp-block-heading">Ajout du serveur Linux</h4>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2111_38aa8b-93 kt-accordion-has-5-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2111_de2b0f-2d"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Scream my Name !</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans l&rsquo;onglet Backup Infrastructure, sélectionnez ajouter un serveur. Puis ajouter un nouveau serveur Linux.</p>



<p>Comme ci-dessous vous avez deux possibilités. Soit vous ajoutez l&rsquo;IP de votre repo (absence de serveur DNS dans mon cas et flemme d&rsquo;aller faire une surcharge dans le fichier host juste pour le lab) ou d&rsquo;ajouter le nom DNS. Ayant plusieurs repositories, j&rsquo;aime bien mettre une petite description (surtout en l&rsquo;absence de nom DNS).</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="541" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_001_Desciription.png" alt="" class="wp-image-2113" style="width:459px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_001_Desciription.png 759w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_001_Desciription-300x214.png 300w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2111_46ad1b-5a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Linux Credential (une fois seulement)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans la partie SSH Connection, nous n&rsquo;avons pas d&rsquo;entrée dans le gestionnaire de mot de passe de notre VEEAM. Et nous ne voulons surtout pas que nos informations d&rsquo;authentifications soient stockées (Sinon à quoi faire du hardened ?).</p>



<p>Cliquons donc sur Add et sélectionnons la dernière proposition « <strong>Single-use credentials</strong>« . Normalement vous devriez avoir l&rsquo;écran ci-dessous.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="540" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_002_Credentials.png" alt="" class="wp-image-2114" style="width:388px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_002_Credentials.png 759w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_002_Credentials-300x213.png 300w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>
</div>


<p>Si vous avez fait les choses proprement, vous renseignez le login de votre compte utilisateur propre à VEEAM avec son petit mot de passe. Dans mon cas <strong>svc.veeam</strong> et <strong>password1234</strong> ou <strong>azerty1234</strong>. Cochez la case d&rsquo;élévation de privilège ainsi que la case « Use su if sudo fails » et là, renseigner le mot de passe du compte root.</p>



<p>Toujours si vous avez bien fait les choses, le compte <strong>svc.veeam</strong> est à ce moment un compte membre du groupe <strong>sudo</strong>. Donc un utilisateur à privilège le temps de l&rsquo;installation. Si ce n&rsquo;est pas le cas, ajoutez le :</p>



<pre class="wp-block-code"><code><strong>$ sudo usermod -aG sudo svc.veeam</strong></code></pre>



<p>Pour le fun, essayer de mettre en compte utilisateur le compte root. Normalement, VEEAM devrait exprimer votre nom indien avec sa main « <a href="https://www.youtube.com/watch?v=LcuR7cuEKQI&amp;ab_channel=Ons%27enBaluchon">Dresser avec le Majeur</a>« . 🙂</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2111_92f922-3f"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Actions Review</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Si vous êtes là c&rsquo;est que le serveur VEEAM arrive à pu initier la connexion en SSH avec notre futur repository immuable.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="757" height="543" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_003_Review.png" alt="" class="wp-image-2115" style="width:436px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_003_Review.png 757w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_003_Review-300x215.png 300w" sizes="auto, (max-width: 757px) 100vw, 757px" /></figure>
</div>


<p>Les composants transport et installer vont être déployés. Ces derniers ne sont pas déjà présent sur le serveur. Pour le moment pas un faux pas !</p>



<p>Passons à l&rsquo;étape suivante.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2111_1e4f8a-f0"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Jamais du premier coup 😉</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Bon ba nous voilà comme un con sur un quai de gare un jour de grève à la SNCF&#8230; Ca ne fonctionne pas BORDEL ! (Pourquoi tu n&rsquo;as pas censurer l&rsquo;injure ? Parce que je suis frustré d&rsquo;avoir durci une saloperie de système GNU/LINUX dans l&rsquo;état de l&rsquo;art et d&rsquo;avoir des erreurs de ce type. Je suis pas une base de loisir MERDE !)</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="757" height="543" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_ErrorDeployement.png" alt="" class="wp-image-2116" style="width:506px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_ErrorDeployement.png 757w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_ErrorDeployement-300x215.png 300w" sizes="auto, (max-width: 757px) 100vw, 757px" /></figure>
</div>


<p><a href="https://www.youtube.com/watch?v=FRV3y2OWT-w&amp;ab_channel=JohnnyCadillac">Monsieur, Calmez vous !</a> Oui, c&rsquo;est bon. Pas de castagne. LINUX et VEEAM sont sympa car ils nous donnent gentiment le message d&rsquo;insulte que l&rsquo;un donne à l&rsquo;autre. C&rsquo;est alors qu&rsquo;en bon copain nous allons arrondir les angles pour que VEEAM et notre repo LINUX puissent fleurter ensemble.</p>



<p>L&rsquo;une des mesures de sécurité que j&rsquo;applique sur mes systèmes GNU en terme de durcissement est d&rsquo;interdire l&rsquo;exécution sur la partition <strong>/var</strong> et <strong>/tmp</strong>. Donc un petit remove de l&rsquo;argument <strong>noexec</strong> et un remount des partitions et c&rsquo;est repartie comme en 40 ! (Il y a quelques choses d&rsquo;autres à faire mais je le garde pour moi).</p>



<p>On relance un Previous, puis un Next pour relancer le déploiement. Là, à la surprise générale, l&rsquo;installation se déroule sans accro.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="758" height="542" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_Succeed.png" alt="" class="wp-image-2117" style="width:501px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_Succeed.png 758w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_004_Apply_Succeed-300x215.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>
</div>


<p>Alors elle est pas belle la vie ?</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2111_c126fe-58"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; Congratulations</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>L&rsquo;installation est terminée. Les composants ont bien été déployées nous avons ci-dessous le récapitulatif.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="759" height="541" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_005_Recap.png" alt="" class="wp-image-2118" style="width:515px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_005_Recap.png 759w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_005_Recap-300x214.png 300w" sizes="auto, (max-width: 759px) 100vw, 759px" /></figure>
</div>


<p>Toutefois, nous devons remettre en l&rsquo;état les quelques points de sécurité que nous avons assouplis pour permettre l&rsquo;arrimage de notre repository Hardened LINUX à notre serveur VEEAM.</p>



<ul class="wp-block-list">
<li>Retirer l&rsquo;utilisateur <strong>svc.veeam</strong> du groupe <strong>sudo</strong></li>



<li>Rétablir les arguments <strong>noexec</strong> sur les partitions <strong>/var</strong>, <strong>/tmp</strong></li>



<li>Rétablir les paramètres que l&rsquo;auteur a vraiment décider de ne pas divulger</li>
</ul>



<p></p>
</div></div></div>
</div></div></div>



<h4 class="wp-block-heading">Ajout du repository</h4>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2111_43e5d9-7a kt-accordion-has-8-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2111_ad1e78-56"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Quels types choisir ?</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Choisissons le type de repository pour déclarer notre repo hardened, soit Direct Attached Storage.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="715" height="614" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_006_AddRepo.png" alt="" class="wp-image-2119" style="width:292px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_006_AddRepo.png 715w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_006_AddRepo-300x258.png 300w" sizes="auto, (max-width: 715px) 100vw, 715px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane2111_2d477b-47"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Linux Hardened Repository</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans les choix, j&rsquo;hésite vraiment sur l&rsquo;option pour notre type de repo. Peut-être la réponse numéro 3, <strong>Linux (Hardened Repository)</strong> ?</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="714" height="618" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_007_HardenedRepo.png" alt="" class="wp-image-2120" style="width:326px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_007_HardenedRepo.png 714w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_007_HardenedRepo-300x260.png 300w" sizes="auto, (max-width: 714px) 100vw, 714px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2111_abeae7-47"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">3 &#8211; Scream my Name (Again)</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>On note le nom de notre repo. Tachons donc de rester logique et de choisir un nom dans le standard des repositories. Pour ma part REPO_HARDENED_01. Comme j&rsquo;aurais pu avoir un REPO_SVG_01 ou REPO_EXT_01. Soignons pragmatique <a href="https://www.youtube.com/watch?v=_vuzhkEkNSQ&amp;ab_channel=Filmentaria">Père UBU</a> par ma chandelle verte !</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="758" height="542" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_008_HardenedRepo_Name.png" alt="" class="wp-image-2121" style="width:327px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_008_HardenedRepo_Name.png 758w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_008_HardenedRepo_Name-300x215.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-4 kt-pane2111_79f04f-f3"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">4 &#8211; Server Selection</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Le serveur ayant été ajouté précédemment nous avons le listing de chacune des partitions présentent et montée.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="757" height="541" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_009_HardenedRepo_Target.png" alt="" class="wp-image-2122" style="width:424px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_009_HardenedRepo_Target.png 757w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_009_HardenedRepo_Target-300x214.png 300w" sizes="auto, (max-width: 757px) 100vw, 757px" /></figure>
</div>


<p>Dans la liste (5ème positions) nous retrouvons bien notre partition sous <strong>/mnt/veeam/hardened_repository</strong> monté sur <strong>/dev/sdb1</strong>.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-5 kt-pane2111_f9aa4e-e9"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">5 &#8211; Choix du repository (Path) </span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Sélectionnons la partition qui nous intéresse.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="760" height="544" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_010_HardenedRepo_RepoSettings.png" alt="" class="wp-image-2123" style="width:430px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_010_HardenedRepo_RepoSettings.png 760w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_010_HardenedRepo_RepoSettings-300x215.png 300w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure>
</div>


<p>Activons ensuite les paramètres de clonage rapide sur les volumes XFS. Je défini la durée de l&rsquo;immuabilité sur 14 jours (le minimum étant 7 jours). Je limite le nombre de tâche parallélisé à 4.</p>



<p>Dans les options avancées, j&rsquo;ai pour habitude d&rsquo;activer l&rsquo;alignement des blocks pour améliorer les performances quant à la sauvegarde et à la restauration malgré une légère hausse du CPU.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="758" height="542" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_011_HardenedRepo_RepoSettings_Advanced.png" alt="" class="wp-image-2124" style="width:403px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_011_HardenedRepo_RepoSettings_Advanced.png 758w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_011_HardenedRepo_RepoSettings_Advanced-300x215.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>
</div>


<p>J&rsquo;active également le paramètre d&rsquo;utiliser le paramètre per machine backup files car il améliore les performances de stockage pour les équipements qui bénéficient de flux important d&rsquo;I/O. Ce qui tombe bien est notre cas.</p>



<p>Les deux autres options ne doivent pas être cochés, puisque nous n&rsquo;avons pas de support rotatif et l&rsquo;option de décompression n&rsquo;est pas compatible avec la sauvegarde immuable.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-6 kt-pane2111_23e170-e2"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">6 &#8211; Where is the mount Server ?</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>De nouveau nous avons un petit récapitulatif des rôles à ajouter ou déjà présent sur notre repo.</p>



<ul class="wp-block-list">
<li>Transport</li>



<li>vPower NFS</li>



<li>Mount Server</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="761" height="541" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_013_HardenedRepo_Recap.png" alt="" class="wp-image-2126" style="width:426px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_013_HardenedRepo_Recap.png 761w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_013_HardenedRepo_Recap-300x213.png 300w" sizes="auto, (max-width: 761px) 100vw, 761px" /></figure>
</div>


<p>Il est possible de cocher la case de recherche de chaine existante. Ce n&rsquo;est pas notre cas.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-7 kt-pane2111_87fb20-16"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">7 &#8211; Applying</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Nous appliquons la configuration de notre repo. Deux avertissements toutefois. Dû au durcissement de mon SE GNU/LINUX. Toutefois rien de bien méchant car on regarde l&rsquo;avertissement lié au service de déploiement.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="760" height="543" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_014_HardenedRepo_Apply.png" alt="" class="wp-image-2127" style="width:435px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_014_HardenedRepo_Apply.png 760w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_014_HardenedRepo_Apply-300x214.png 300w" sizes="auto, (max-width: 760px) 100vw, 760px" /></figure>
</div></div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-8 kt-pane2111_3b0f88-bc"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">8 &#8211; Petit Résumé</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Encore une fois, le petit récapitulatif nous informant que le repo a bien été créé.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="758" height="542" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_015_HardenedRepo_Summary.png" alt="" class="wp-image-2128" style="width:513px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_015_HardenedRepo_Summary.png 758w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_015_HardenedRepo_Summary-300x215.png 300w" sizes="auto, (max-width: 758px) 100vw, 758px" /></figure>
</div></div></div></div>
</div></div></div>



<h3 class="wp-block-heading">Backup Job &amp; Tests</h3>



<p>Pour ce point, je ne vois pas de grand intérêt à décrire comme créer un jobs de backup. C&rsquo;est pourquoi j&rsquo;irai à l&rsquo;essentiel, un en mot un seul, pour être succinct, sans détour et fioriture, bref j&rsquo;irai droit au but&#8230;</p>



<p>Pourquoi cette entrée en matière dans cette partie ? Simplement car cela dépend de la source sur laquelle le serveur de sauvegarde se base.</p>



<ul class="wp-block-list">
<li>VMWare VCenter</li>



<li>VMWare ESXi</li>



<li>NUTANIX Prism Element</li>



<li>NUTANIX Prism Central</li>



<li>MICROSOFT HyperV</li>



<li>VEEAM Backup Agent</li>



<li>etc</li>
</ul>



<p>La liste pourrait s&rsquo;allonger comme un jour sans pain au vu du nombre de point d&rsquo;entrée OnPremise et Cloud.</p>



<p>Dans mon cas et sur mon petit environnement de lab, ça sera sur un job de sauvegarde pour du VEEAM Backup Agent pour Windows (en Guest Processing) d&rsquo;un serveur local.</p>



<h4 class="wp-block-heading">Backup</h4>



<p>Nous considérons qu&rsquo;un compte d&rsquo;administration est déjà présent pour la sauvegarde est durci dans les règles de l&rsquo;art et que le serveur source se trouve dans la bonne configuration pour être sauvegardé.</p>



<div class="wp-block-kadence-accordion alignnone"><div class="kt-accordion-wrap kt-accordion-id2111_a3b94c-87 kt-accordion-has-3-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right" style="max-width:none"><div class="kt-accordion-inner-wrap" data-allow-multiple-open="false" data-start-open="none">
<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane2111_e7a21f-32"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">1 &#8211; Storage</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>Dans la partie Storage de notre job (peut importe le type), il nous suffit de sélectionner notre repository hardened.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="798" height="580" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_022_Immu_Storage-1.png" alt="" class="wp-image-2175" style="width:409px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_022_Immu_Storage-1.png 798w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_022_Immu_Storage-1-300x218.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_022_Immu_Storage-1-768x558.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>
</div>


<p>Le nombre de point de rétention doit être en adéquation avec la politique d&rsquo;immuabilité en place comme décris dans la partie théorique. Dans mon cas 14 jours.</p>
</div></div></div>



<div class="wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-3 kt-pane2111_1c0c32-9a"><div class="kt-accordion-header-wrap"><button class="kt-blocks-accordion-header kt-acccordion-button-label-show"><span class="kt-blocks-accordion-title-wrap"><span class="kt-blocks-accordion-title">2 &#8211; Storage GFS</span></span><span class="kt-blocks-accordion-icon-trigger"></span></button></div><div class="kt-accordion-panel kt-accordion-panel-hidden"><div class="kt-accordion-panel-inner">
<p>La sauvegarde hardened se base sur le principe GFS<sup data-fn="ec6aa003-32a1-49af-8a77-ef1a9eb1ddb1" class="fn"><a href="#ec6aa003-32a1-49af-8a77-ef1a9eb1ddb1" id="ec6aa003-32a1-49af-8a77-ef1a9eb1ddb1-link">7</a></sup>. Effectivement et comme une nouvelle fois expliqué précédemment, il n&rsquo;est pas possible et cela n&rsquo;a pas de sens de faire de la RI<sup data-fn="aaaaa269-53a7-47ca-b188-00da64f0a9c7" class="fn"><a href="#aaaaa269-53a7-47ca-b188-00da64f0a9c7" id="aaaaa269-53a7-47ca-b188-00da64f0a9c7-link">8</a></sup> mais bien FI<sup data-fn="55b862c5-880a-4a67-bd76-304f10074f68" class="fn"><a href="#55b862c5-880a-4a67-bd76-304f10074f68" id="55b862c5-880a-4a67-bd76-304f10074f68-link">9</a></sup>.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="799" height="582" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_023_Immu_GFS-2.png" alt="" class="wp-image-2174" style="width:362px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_023_Immu_GFS-2.png 799w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_023_Immu_GFS-2-300x219.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_023_Immu_GFS-2-768x559.png 768w" sizes="auto, (max-width: 799px) 100vw, 799px" /></figure>
</div>


<p>Je défini donc de réaliser une full backup synthétique de manière hebdomadaire, le 7 jour de la semaine, 7 jour où le Seigneur exténué (comme moi d&rsquo;ailleurs) d&rsquo;avoir travaillé si dure les 6 jours précédents de prendre un jour de repo. Et comme la sauvegarde est là pour nous prémunir de tout aléas</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Les premiers seront les derniers, et les derniers seront les premiers</em></p>
<cite>Marc 10:31</cite></blockquote>



<p>Nous pouvons faire confiance à Saint Marc. Amen. </p>
</div></div></div>
</div></div></div>



<p>Laissons notre job tourner et admirer les performances et actions en cours.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1019" height="724" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_018_Immu_Ongoing.png" alt="" class="wp-image-2159" style="width:456px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_018_Immu_Ongoing.png 1019w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_018_Immu_Ongoing-300x213.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_018_Immu_Ongoing-768x546.png 768w" sizes="auto, (max-width: 1019px) 100vw, 1019px" /></figure>
</div>


<h4 class="wp-block-heading">Tests</h4>



<p>Une fois le job terminé avec succès. L&rsquo;une de nos grandes questions que nous devons nous poser en tant que SysAdmin (et que n&rsquo;importe quel client, chef d&rsquo;entreprise doit se poser) est <strong>« Comment s&rsquo;assurer que la chaine de sauvegarde est bien inaltérable, immuable ? » </strong></p>



<p>Le plus simple, c&rsquo;est de supprimer la chaine de sauvegarde ou l&rsquo;une des ressources protégées. Normalement, dans la boite de dialogue se préparant à l&rsquo;exécution de la suppression, vous devriez avoir un violent message d&rsquo;avertissement vous informant que <a href="https://www.youtube.com/watch?v=eq1xiZDhBvs&amp;ab_channel=Ch%C3%B4meurDigne">NON, VEEAM ne veut pas.</a> Mais comme VEEAM n&rsquo;est pas si en désaccord avec votre volonté de supprimer le backup, il vous donne toutefois la date d&rsquo;échéance où il sera possible de supprimer la chaine si et seulement si le job est désactivé naturellement.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="958" height="521" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_020_Immu_NODELETE.png" alt="" class="wp-image-2161" style="width:522px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_020_Immu_NODELETE.png 958w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_020_Immu_NODELETE-300x163.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_020_Immu_NODELETE-768x418.png 768w" sizes="auto, (max-width: 958px) 100vw, 958px" /></figure>
</div>


<p>Si nous voulons allés plus loin, c&rsquo;est du côté repo qu&rsquo;il faudra contrôler que l&rsquo;attribut d&rsquo;immutabilité est bien positionné sur nos fichiers. Un petit coup de <strong>lsattr</strong> et le tour est joué.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="806" height="135" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_021_Immu_attributeJobs.png" alt="" class="wp-image-2162" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_021_Immu_attributeJobs.png 806w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_021_Immu_attributeJobs-300x50.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_021_Immu_attributeJobs-768x129.png 768w" sizes="auto, (max-width: 806px) 100vw, 806px" /></figure>
</div>


<h3 class="wp-block-heading">Altérer l&rsquo;inaltérable ?</h3>



<p>Super cette sauvegarde immuable ! Avec ça, nous sommes paré à toutes éventualités contre la suppression et altération de nos chaines de sauvegarde.</p>



<p>Sauf que ce n&rsquo;est pas tout à fait vrai. Désolé de vous mettre un stop. En haut de ce billet, j&rsquo;ai insisté sur la topologie et l&rsquo;architecture. Tout va reposer sur  cette dernière pour ne pas altérer le contenu de votre repository hardened.</p>



<p>Avant de rentrer plus dans les explications, je rappel dans le contexte que le système GNU est durci. Le compte utilisateur dédié à la sauvegarde n&rsquo;a pas de droit d&rsquo;élévation, le daemon ssh est désactivé.</p>



<p><a href="https://www.youtube.com/watch?v=ZZ6plV0dH6s&amp;ab_channel=RaoulPetiteOfficiel">Allez, faut y aller</a>, oui mais où ? Maintenant rentrons dans le vif du sujet.</p>



<p>En me connectant directement à mon repo en console ou en direct. Regardons nos différents maillons de chaines pour notre job. J&rsquo;ai deux full. Pourquoi ? Parce que je suis un abruti qui lors du la configuration de mon job, j&rsquo;ai oublié de chiffrer ma chaine. M&rsquo;en rendant compte après coup, j&rsquo;ai donc corrigé ce petit détail. Sauf que activer le chiffrement d&rsquo;un job implique forcément de repartir sur un full. Merdouille non ?</p>



<p>Alors comment faire pour supprimer le premier maillon .vbk qui est indépendant de mon second .vbk ?</p>



<ul class="wp-block-list">
<li>Je suis patient et j&rsquo;attends 28 jours</li>



<li>Je supprime le point au niveau système et je clean ma configuration</li>
</ul>



<p>Pour le coup je ne serai pas patient et je vais donc contourner l&rsquo;immuabilité.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="840" height="241" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU-1.png" alt="" class="wp-image-2170" style="width:763px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU-1.png 840w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU-1-300x86.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU-1-768x220.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px" /></figure>
</div>


<ol class="wp-block-list">
<li>Je liste uniquement les maillons de la chaine qui sont des fulls (.vbk) afin d&rsquo;identifier le point que je souhaite faire disparaitre</li>



<li>Etant en root, je retire l&rsquo;attribut d&rsquo;immuabilité sur le fichier</li>



<li>Je liste de nouveau les attributs des maillons de la chaine qui sont des fulls (.vbk) pour vérifier que c&rsquo;est bon</li>



<li>Je supprime le fichier</li>



<li>Je liste de nouveau les attributs des maillons de la chaine qui sont des fulls (.vbk) pour vérifier que je n&rsquo;ai plus qu&rsquo;un fichier vbk</li>
</ol>



<p>Nous nous déconnectons de notre console. Et regardons notre chaine côté VEEAM Ordo.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="827" height="312" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU_1.png" alt="" class="wp-image-2171" style="width:562px;height:auto" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU_1.png 827w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU_1-300x113.png 300w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_025_Immu_remove_IMMU_1-768x290.png 768w" sizes="auto, (max-width: 827px) 100vw, 827px" /></figure>
</div>


<p>Là j&rsquo;ai été un vite en besogne car j&rsquo;ai déjà nettoyer la configuration. Mais notre point remontait comme inaccessible car nous l&rsquo;avons supprimé (petite icone rouge et police en italique). Mais une fois nettoyé, nous avons 4 points en lieu et place de 5.</p>



<p>Donc il est possible d&rsquo;altérer l&rsquo;inaltérable sous certaines conditions.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>La sauvegarde immuable ou hardened est vraiment une solution indispensable des organisations. Cette dernière ne doit pas être négligé. Malheureusement et c’est là un triste constat les organisations et entreprises pour des raisons de coût néglige cette protection supplémentaire.</p>



<p class="has-text-align-center"><strong>«&nbsp;J’ai déjà une sauvegarde et une externalisation, je ne risque rien. Mon Service interne est parano ou Mon prestataire informatique me prend pour une vache à lait&nbsp;»</strong></p>



<p>Ce sentiment de puissance, de confiance et d’invincibilité pourtant ne tiens qu’à un fil et c’est lorsque ça tourne mal qu’il nous reste plus qu’à pleurer en regardant comme Loth, sa femme pétrifié de sel (Genése 19:26). <a href="https://www.youtube.com/watch?v=VGN8G6eSVqU&amp;ab_channel=thiefaineVEVO">Attention, la facture est salée</a>.</p>



<p>Toutefois, l’implémentation d’un tel système nécessite des aptitudes avancées pour les systèmes LINUX/GNU ce qui peut représenter un frein à la mise en place de ce dernier. Notamment sur la partie durcissement. A cela peut s’ajouter des budgets ainsi que des ressources limitées sur l’infrastructures ne permettant pas d’assurer cette fonctionnalité.</p>



<p>Il reste à moindre cout l’usage et l’implémentation d’une sauvegarde sur disque externe. Cependant je pense que cette solution est moins performante, plus espacée dans le temps, moins adapté à l’évolution du SI et soumis au risque humain (oublie, corruption, etc). Mais cela reste une solution.</p>



<p>Encore une fois la question de curseur se pose sur le rapport bénéfices risques. Qu’est ce que je suis prêt à accepter pour mon organisation&nbsp;? Il suffit d’avoir frôlé la banque route ou d’avoir dans ces connaissances un patron qui a perdu son entreprise ou sauver de peu son business pour se sentir concerné.</p>



<p>Ouai mais tu nous as démontré que ce n’était pas inaltérable à 100%. Tu ne serais pas en train de nous refourguer une solution pour éviter le <a href="https://fr.wikipedia.org/wiki/Passage_informatique_%C3%A0_l%27an_2000">bug de l’an 2000</a>&nbsp;?</p>



<p>Oui je conçois et l’ai démontré. Nulle solution n’est parfaite est sécurisé à 100%. Toutefois les opérations pour retirer l’immuabilité nécessite de passer plusieurs mécanismes de sécurités et le risque bien de présent est minime voir nul. Disons que si un individu malveillant s’attaque à la sauvegarde immuable, normalement l’équipe interne ou le service IT seront informés car c’est le point d’entrée le plus complexe à infiltrer. Et donc, cet individu aura pris le temps de mettre un joyeux bor**l sur l’ensemble de notre infra au préalable.</p>



<p>Nous pourrions également dire que 7 jours ou 14 jours d’immuabilité c’est peu. Et pourtant il faut voir cette sauvegarde comme l’as dans la manche qui nous sortira de l’échec et compromission de notre sauvegarde et externalisation. C’est une sauvegarde certes, mais la dernière carte à jouer. Sincèrement, vous SysAdmin/DSI persuadez votre DG, DAF ou PDG d’implémenter cette fonctionnalité. </p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="728" height="416" src="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_029_SysAdmin_DAF.jpg" alt="" class="wp-image-2196" style="width:347px;height:auto" title="" srcset="https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_029_SysAdmin_DAF.jpg 728w, https://erwanguillemard.com/wp-content/uploads/2024/06/AP_007_029_SysAdmin_DAF-300x171.jpg 300w" sizes="auto, (max-width: 728px) 100vw, 728px" /></figure>
</div>


<p class="has-text-align-center has-small-font-size"><em>Rare image d&rsquo;échange entre un DAF avec un DSI/SysAdmin concernant le budget informatique</em></p>



<p>Vous DG, DAF ou PDG, écoutez votre SysAdmin/DSI et permettez lui de passer des nuits tranquilles loin des <a href="https://www.youtube.com/watch?v=LPmUcSowpko&amp;ab_channel=Hubert-F%C3%A9lixThi%C3%A9faine-Topic">valium, tranxène, nembutal</a> (ouai je sais ça faut beaucoup de référence à HFT, mais je suis dans ma période de vilain garnement 🙂 ).</p>



<p>Le mot de la fin</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><em>Consonnes, Voyelles. Je demande un 50/50 sur une garde sans. Risquez comme opération, mais ça passe et vous partez avec Maïté car votre préféré c’est le rondelé.</em></p>
<cite>Erwan GUILLEMARD</cite></blockquote>



<h2 class="wp-block-heading">Sources</h2>



<ul class="wp-block-list">
<li><a href="https://www.larousse.fr/dictionnaires/francais/immuable/41744#:~:text=1.,soi%2Dm%C3%AAme%20%3A%20V%C3%A9rit%C3%A9s%20immuables.&amp;text=2.,ciel%20d'un%20bleu%20immuable.">Définition Immuable</a></li>



<li><a href="https://helpcenter.veeam.com/docs/backup/vsphere/hardened_repository.html?ver=120">VEEAM B&amp;R 12.1 &#8211; Hardened Guide</a></li>



<li><a href="https://man7.org/linux/man-pages/man1/chattr.1.html">Linux &#8211; chattr</a></li>



<li><a href="https://e2fsprogs.sourceforge.net/e2fsprogs-release.html#1.47.1">E2fsprogs</a></li>
</ul>



<p class="has-small-font-size"><em>Je remercie LLU, d’avoir su me mettre sur la voie et d’avancer sur ce sentier.</em></p>


<ol class="wp-block-footnotes"><li id="c69c2835-a941-45dd-ba6c-71392873daa8"><strong>SE</strong> : Système d&rsquo;Exploitation <a href="#c69c2835-a941-45dd-ba6c-71392873daa8-link" aria-label="Aller à la note de bas de page 1">↩︎</a></li><li id="c5ab9c8c-0307-4b61-83b5-82041447e886"><strong>LTS</strong> : Long Time Support <a href="#c5ab9c8c-0307-4b61-83b5-82041447e886-link" aria-label="Aller à la note de bas de page 2">↩︎</a></li><li id="c7bb64ce-4db6-48ca-866d-f856e977c1a1"><strong>ANSSI</strong> : Agence National de Sécurité des Systèmes d&rsquo;Informations <a href="#c7bb64ce-4db6-48ca-866d-f856e977c1a1-link" aria-label="Aller à la note de bas de page 3">↩︎</a></li><li id="58bbf35d-a51b-4ba9-937a-d58393f894bc"><strong>XFS</strong> : X File System <a href="#58bbf35d-a51b-4ba9-937a-d58393f894bc-link" aria-label="Aller à la note de bas de page 4">↩︎</a></li><li id="3b6c0862-32cf-4554-ac0a-e9cfe2377193"><strong>SFP+</strong> : Small Form-Factor Pluggable+ (10 Gb/s) <a href="#3b6c0862-32cf-4554-ac0a-e9cfe2377193-link" aria-label="Aller à la note de bas de page 5">↩︎</a></li><li id="cc7945a0-53b5-45d9-8bac-c78a1fd6053a"><strong>FC</strong> : Fiber Channnel <a href="#cc7945a0-53b5-45d9-8bac-c78a1fd6053a-link" aria-label="Aller à la note de bas de page 6">↩︎</a></li><li id="ec6aa003-32a1-49af-8a77-ef1a9eb1ddb1"><strong>GFS</strong> : Grand Father, Father, Son <a href="#ec6aa003-32a1-49af-8a77-ef1a9eb1ddb1-link" aria-label="Aller à la note de bas de page 7">↩︎</a></li><li id="aaaaa269-53a7-47ca-b188-00da64f0a9c7"><strong>RI</strong> : Reverse Incremental <a href="#aaaaa269-53a7-47ca-b188-00da64f0a9c7-link" aria-label="Aller à la note de bas de page 8">↩︎</a></li><li id="55b862c5-880a-4a67-bd76-304f10074f68"><strong>FI</strong> : Forward Incremental <a href="#55b862c5-880a-4a67-bd76-304f10074f68-link" aria-label="Aller à la note de bas de page 9">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
