<?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>VEEAMONE &#8211; erwan.guillemard</title>
	<atom:link href="https://erwanguillemard.com/tag/veeamone/feed/" rel="self" type="application/rss+xml" />
	<link>https://erwanguillemard.com</link>
	<description></description>
	<lastBuildDate>Fri, 06 Feb 2026 10:41:07 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://erwanguillemard.com/wp-content/uploads/2024/02/cropped-Logo-sans-baseline-32x32.png</url>
	<title>VEEAMONE &#8211; erwan.guillemard</title>
	<link>https://erwanguillemard.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 &#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 fetchpriority="high" 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="(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 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="(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 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="(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>
	</channel>
</rss>
