<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Bad It Boys Blog</title>
        <link>https://baditboys.netlify.app/fr/blog</link>
        <description>Bad It Boys Blog</description>
        <lastBuildDate>Fri, 22 Jan 2021 09:20:15 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>fr</language>
        <item>
            <title><![CDATA[Docker]]></title>
            <link>https://baditboys.netlify.app/fr/blog/docker</link>
            <guid>https://baditboys.netlify.app/fr/blog/docker</guid>
            <pubDate>Fri, 22 Jan 2021 09:20:15 GMT</pubDate>
            <description><![CDATA[Ce post a pour but d'aborder très rapidement les principes de fonctionnement de Docker.]]></description>
            <content:encoded><![CDATA[<p>Ce post a pour but d'aborder très rapidement les principes de fonctionnement de Docker.
Pour faciliter le démarrage, nous utilisons une VM initialisée sous vagrant, que vous pouvez vous procurer <a href="https://app.vagrantup.com/gusztavvargadr/boxes/docker-linux" target="_blank" rel="noopener noreferrer">sur ce lien</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="quest-ce-que-docker">Qu'est ce que Docker<a href="#quest-ce-que-docker" class="hash-link" aria-label="Lien direct vers Qu'est ce que Docker" title="Lien direct vers Qu'est ce que Docker">​</a></h2><p>Comme bien expliqué sur <a href="https://opensource.com/resources/what-docker" target="_blank" rel="noopener noreferrer">opensource.com</a>, Docker est un outil conçu pour faciliter la création, le déploiement et l'exécution d'une application en utilisant des conteneurs.</p><p>Les conteneurs permettent à un développeur de packager son application avec toutes les dépendances nécessaires, qu'elles soient de nature logicielle (bibliothèques, framework) ou système (runtime, composant d'OS). Ainsi, grâce au conteneur, le développeur s'assure que l'application peut tourner comme sur son propre environnement, car le conteneur en contient tous les composants paramétrés à l'identique.</p><p>Dans un sens, Docker rappelle un peu les machines virtuelles. Mais contrairement à une VM qui répplique tous les composants et un système d'exploitation entier, Docker permet aux applicaitons de n'utiliser que les parties d'un noyau nécessaire à l'éxécution de l'applicatif que le conteneur est destiné à faire tourner sur la machine hôte. Cela permet d'accroitre significativement les performances, et de reduire drastiquement la taille de l'applicatif "virtualisé".</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="comment-en-bénéficier">Comment en bénéficier<a href="#comment-en-bénéficier" class="hash-link" aria-label="Lien direct vers Comment en bénéficier" title="Lien direct vers Comment en bénéficier">​</a></h2><p>Pour pouvoir exécuter un conteneur, il faut d'abord l'avoir téléchargé.</p><p>Pour cela, nous devons simplement <strong>pull</strong> le conteneur préalablement choisi sur le <a href="https://hub.docker.com/" target="_blank" rel="noopener noreferrer">DockerHub</a>.</p><p>Pour l'exemple, nous allons démarrer deux conteneur : Nginx et Grafana</p><p>Pour cela, entrer dans votre vm et tapez les commandes suivantes :</p><ul><li><a href="https://hub.docker.com/_/nginx" target="_blank" rel="noopener noreferrer">Nginx</a>:</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> pull nginx</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li><a href="https://hub.docker.com/r/grafana/grafana" target="_blank" rel="noopener noreferrer">Grafana</a>:</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> pull grafana/grafana</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant que les conteneurs sont "pulled", ils sont disponibles dans notre environnement et nous pouvons les monter, c'est à dire les utiliser.</p><p>Cependant, nous devons prendre en compte le fait que le conteneur partage le hardware avec l'OS hôte. Il faut donc réaliser, dans certains cas, un mapping avec les éléments hardware utilisés.
Nous utiliserons donc la commande -p pour mapper un port réseau du host sur le port virtuel du conteneur.</p><p>Pour cela, nous allons démarrer docker en indiquant de mapper le port 3000 de la machine hôte sur le port 3000 du conteneur :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run -d --name</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">grafana -p </span><span class="token number" style="color:#36acaa">3000</span><span class="token plain">:3000 grafana/grafana</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le résultat de la commande précédente devrait vous permettre d'accéder à l'application grafana en vous connectant à l'URL suivante : 127.0.0.1:3000</p><p>Notez le "sens" de lecture de la commande -p : "-p container_port_number:host_port_mapped". Le premier "3000" de notre commande indique le port du conteneur et le second celui de votre machine hôte.
Par exemple, la même commande avec le mapping -p 3000:6000 sollicitera le port 6000 de la machine hôte, et l'URL d'accès devient 127.0.0.1:6000.</p><p><strong>NB:</strong> SI vous utilisez une machine virtuelle pour démarrer vos conteneur, comme préconisé dans l'article, pensez également à assurer le mapping des ports entre la VM docker et l'hôte de virtualbox.
Dans VirtualBox, ouvrez le menu Configuration &gt; Network &gt; Advance &gt; Port Redirection et assurez de récupérer le port que vous avez positionné en hôte dans la commande docker.</p>]]></content:encoded>
            <category>docker</category>
        </item>
        <item>
            <title><![CDATA[Le code, une symphonie avec TabNine et Visual Studio Code]]></title>
            <link>https://baditboys.netlify.app/fr/blog/tabnine</link>
            <guid>https://baditboys.netlify.app/fr/blog/tabnine</guid>
            <pubDate>Sat, 02 Jan 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Vous êtes un développeur passionné, à la recherche d'un moyen d'harmoniser votre code pour créer une symphonie de lignes de programmation ? Alors TabNine et Visual Studio Code sont les instruments qu'il vous faut.]]></description>
            <content:encoded><![CDATA[<p>Vous êtes un développeur passionné, à la recherche d'un moyen d'harmoniser votre code pour créer une symphonie de lignes de programmation ? Alors TabNine et Visual Studio Code sont les instruments qu'il vous faut.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="quest-ce-que-tabnine">Qu'est-ce que TabNine<a href="#quest-ce-que-tabnine" class="hash-link" aria-label="Lien direct vers Qu'est-ce que TabNine" title="Lien direct vers Qu'est-ce que TabNine">​</a></h2><p>TabNine est le complément de développement ultime, offrant des suggestions de code en temps réel pour vous aider à atteindre la perfection en un rien de temps. Et avec une installation facile sur Visual Studio Code, vous pouvez commencer à jouer votre symphonie de code en un rien de temps.</p><p>TabNine est un virtuose de la programmation, comprenant le contexte de votre code pour vous suggérer les meilleures lignes de code. Cela peut vous aider à éviter les erreurs courantes et à écrire du code plus efficace. Par exemple, si vous écrivez un morceau de code pour itérer sur une liste, TabNine peut vous suggérer les meilleures options pour parcourir cette liste, comme la boucle "for" ou la méthode "map".</p><p>TabNine est également un compositeur de génie, toujours à jour avec les dernières tendances en matière de développement. Cela signifie que vous pouvez compter sur TabNine pour vous offrir les meilleures suggestions, peu importe la version de votre langage de programmation. Et avec Visual Studio Code, vous avez un environnement de développement complet pour jouer votre symphonie de code.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installer-tabnine">Installer TabNine<a href="#installer-tabnine" class="hash-link" aria-label="Lien direct vers Installer TabNine" title="Lien direct vers Installer TabNine">​</a></h2><p>Pour utiliser TabNine avec Visual Studio Code, il suffit de suivre ces étapes simples :</p><ul><li>Ouvrir Visual Studio Code et accéder à la section Extensions.</li><li>Rechercher TabNine dans la liste des extensions disponibles.</li><li>Cliquer sur Installer pour planner l'extension.</li><li>Une fois l'installation terminée, cliquer sur Activer pour démarrer l'utilisation de TabNine.</li><li>Pour utiliser TabNine, il suffit de commencer à taper du code et de sélectionner une suggestion de code de l'extension.</li></ul><p>Une fois installé, vous devrez créer un compte TabNine pour profiter de toutes les fonctionnalités de cet outil de développement. Cela ne prend que quelques minutes et vous permettra de bénéficier de toutes les suggestions en temps réel et des mises à jour constantes de TabNine. Alors n'attendez plus et ajoutez TabNine à votre environnement de développement Visual Studio Code aujourd'hui !</p><p>TabNine et Visual Studio Code sont les instruments de développement parfaits pour composer votre symphonie de code. Avec des suggestions en temps réel, une compréhension contextuelle, des mises à jour constantes et un environnement de développement complet, vous pouvez créer des morceaux de développement épiques en un rien de temps. Alors, n'attendez plus et laissez votre passion pour la programmation s'exprimer avec TabNine et Visual Studio Code.</p>]]></content:encoded>
            <category>vscode</category>
            <category>development</category>
        </item>
        <item>
            <title><![CDATA[Dockerfile]]></title>
            <link>https://baditboys.netlify.app/fr/blog/docker-file</link>
            <guid>https://baditboys.netlify.app/fr/blog/docker-file</guid>
            <pubDate>Mon, 19 Oct 2020 09:20:15 GMT</pubDate>
            <description><![CDATA[Bonjour, cet article explique comment créer un fichier Docker pour un conteneur Ruby qui a déjà MDL d'installé).]]></description>
            <content:encoded><![CDATA[<p>Bonjour, cet article explique comment créer un fichier Docker pour un conteneur Ruby qui a déjà MDL d'installé).
Veuillez consulter mon précédent post pour mieux comprendre Docker.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="quest-ce-que-cest-">Qu'est-ce que c'est ?<a href="#quest-ce-que-cest-" class="hash-link" aria-label="Lien direct vers Qu'est-ce que c'est ?" title="Lien direct vers Qu'est-ce que c'est ?">​</a></h2><p>Un Dockerfile est un document texte qui contient toutes les commandes qu'un utilisateur pourrait appeler sur la ligne de commande pour assembler une image.
À l'aide de docker build, les utilisateurs peuvent créer une construction automatisée qui exécute successivement plusieurs instructions en ligne de commande.</p><p>Tout comme Vagrant qui utilise un fichier vagrant pour créer et personnaliser une machine virtuelle selon vos besoins, Docker utilise un fichier docker pour créer et personnaliser un conteneur !
Ils peuvent se ressembler mais ils sont très différents ! (vous pouvez apprendre comment utiliser Vagrant pour créer une machine virtuelle Windows Server <a href="https://baditboys.netlify.app/posts/windowsserver/" target="_blank" rel="noopener noreferrer">ici</a>)</p><p>Comme mentionné précédemment, pour cet exemple, nous allons créer un conteneur ruby avec mdl installé.
Nous devons donc lancer notre fichier docker :</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM ruby:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>FROM crée une couche à partir de l'image Docker ruby latest.</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM ruby:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORDIR /mdl</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>L'instruction WORDIR définit le répertoire de travail pour toutes les instructions RUN, CMD, ENTRYPOINT, COPY et ADD qui la suivent dans le Dockerfile.
Si le répertoire WORKDIR n'existe pas, il sera créé même s'il n'est pas utilisé dans une instruction Dockerfile ultérieure.</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM ruby:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORDIR /mdl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN gem install mdl</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>RUN a 2 formes :</p><ul><li>Commande RUN (forme shell, la commande est exécutée dans un shell, qui par défaut est /bin/sh -c sous Linux ou cmd /S /C sous Windows)</li><li>RUN <!-- -->["executable", "param1", "param2"]<!-- --> (forme exec)</li></ul><p>Dans notre exemple, RUN exécute une <strong>commande</strong> qui installe MDL directement dans le conteneur ruby</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">FROM ruby:latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">WORDIR /mdl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">RUN gem install mdl</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ENTRYPOINT [ "/bin/bash" ]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>ENTRYPOINT, comme RUN, a 2 formes ! La forme Shell ou la forme exec.</p><p>La forme exec, qui est la forme préférée :</p><p>ENTRYPOINT <!-- -->["exécutable", "param1", "param2"]</p><p>La forme shell :</p><p>ENTRYPOINT commande param1 param2</p><p>Dans notre cas, nous l'utilisons sous la forme exec pour pouvoir exécuter notre bash.
Cela laissera notre conteneur ouvert car bash s'exécute en arrière-plan.</p><p>Donc, maintenant que nous avons notre fichier docker, nous devons construire notre conteneur afin de l'exécuter !</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker build --tag user/mdl</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>La commande <strong>---tag</strong> nomme l'image du conteneur en question.
Et maintenant que le conteneur est construit, nous pouvons l'exécuter !</p><p>Pour cela, nous utiliserons la commande suivante :</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker run -tid --name mdl -v /home/vagrant:/mdlfiles user/mdl</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Pour être sûr que votre conteneur fonctionne correctement, faites un simple "docker ps -a" juste pour avoir une confirmation.
Cette opération vous montrera tous les détails et le statut de votre conteneur.</p><p>Après avoir confirmé que le conteneur est opérationnel, nous voulons exécuter <strong>mdl</strong> pour vérifier notre fichier markdown.
Pour ce faire, nous devons exécuter la commande mdl dans un bash qui récupérera le fichier .md dans le dossier que nous avons partagé et nommé "mdlfiles".</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">docker exec mdl bash -c "mdl /mdfile/myfile.md"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Si vous avez quelques incohérences par rapport aux règles de l'outil mdl, vous obtiendrez un résultat comme celui-ci :</p><div class="language-dockerfile codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-dockerfile codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:5: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:77: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:25: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:51: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:13: MD013 Line length</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:52: MD013 Line length</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:54: MD013 Line length</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:89: MD024 Multiple headers with the same content</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:19: MD026 Trailing punctuation in header</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/mdfile/docker.md:26: MD026 Trailing punctuation in header</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Après les avoir tous corrigés, vous ne devriez plus avoir de retour après votre commande ! :)</p>]]></content:encoded>
            <category>docker</category>
        </item>
        <item>
            <title><![CDATA[Comment installer Markdown Lint dans un conteneur Docker ?]]></title>
            <link>https://baditboys.netlify.app/fr/blog/mdldocker</link>
            <guid>https://baditboys.netlify.app/fr/blog/mdldocker</guid>
            <pubDate>Mon, 19 Oct 2020 09:20:15 GMT</pubDate>
            <description><![CDATA[Bonjour, ce billet va vous expliquer comment installer et utiliser Markdown Lint dans un conteneur Docker. Veuillez consulter mon précédent billet pour mieux comprendre Docker.]]></description>
            <content:encoded><![CDATA[<p>Bonjour, ce billet va vous expliquer comment installer et utiliser Markdown Lint dans un conteneur Docker. Veuillez consulter mon précédent billet pour mieux comprendre Docker.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="avant-de-commencer">Avant de commencer<a href="#avant-de-commencer" class="hash-link" aria-label="Lien direct vers Avant de commencer" title="Lien direct vers Avant de commencer">​</a></h2><p>Assurez-vous d'avoir consulté mon précédent article sur Docker, car je vais y faire référence et il sera plus facile de suivre cet article :)</p><p>Dans ce cas, nous allons utiliser un conteneur ruby pour installer notre outil mdl. Vous avez montré comment configurer un conteneur ruby dans le précédent article sur docker.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="markdown-lint">Markdown Lint<a href="#markdown-lint" class="hash-link" aria-label="Lien direct vers Markdown Lint" title="Lien direct vers Markdown Lint">​</a></h3><p>Il s'agit d'un outil pour les fichiers markdown (md) qui comprend une bibliothèque de règles pour encourager les normes et la cohérence des fichiers markdown et qui confirme si les fichiers suivent ces règles.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="container-ruby">Container ruby<a href="#container-ruby" class="hash-link" aria-label="Lien direct vers Container ruby" title="Lien direct vers Container ruby">​</a></h3><p>Donc, pour commencer, exécutons le conteneur ruby ! Copiez-collez la ligne suivante dans votre terminal :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> run -tid -v /home/vagrant:/mdfiles --name ruby --entrypoint</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">/bin/bash ruby:latest</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ok, donc vous regardez cette ligne de commande et vous vous demandez ce que c'est que tout ça !? Eh bien, laissez-moi vous expliquer :)</p><p>Le -tid est 3 choses différentes :</p><p>-t ou --tty : Allouer un pseudo-TTY
-i ou --interactive : Garde STDIN ouvert même si non attaché
-d ou --detach : Mode détaché : exécuter la commande en arrière-plan
Ensuite, nous faisons un -v pour volume, qui dans notre cas, est utilisé pour refléter le dossier où nous avons notre fichier .md. Cela nous permettra d'avoir "le même dossier" dans notre conteneur. Rappelez-vous que le / est la racine et ensuite nous créons un nouveau dossier dans le conteneur nommé "mdfiles".</p><p>Then we use the --name and as the name suggest it's to attibute a name to your container.</p><p>Ensuite, nous utilisons l'option --name qui, comme son nom l'indique, permet d'attribuer un nom à votre conteneur.</p><p>Nous exécutons --entrypoint /bin/bash pour laisser un bash ouvert. Cela permet au conteneur de rester ouvert (up) au lieu de se fermer juste après l'exécution. Quand vous faites un exec, il ne va pas sur bash (exec est sh et pas bash). C'est pourquoi nous devons faire tourner le conteneur en bash, pour pouvoir utiliser toutes les commandes bash.</p><p>La différence entre docker run et docker exec est que docker exec exécute une commande sur un conteneur en cours d'exécution. D'autre part, docker run crée un conteneur temporaire, exécute la commande dans celui-ci et arrête le conteneur lorsque la commande est terminée. Nous utilisons donc --entrypoint pour lancer un conteneur et le laisser ouvert jusqu'à ce que nous décidions de l'arrêter.</p><p>Vous pouvez également donner une commande à votre conteneur directement en faisant cela : Note : Si vous avez un conteneur windows vous utilisez powershell au lieu de bash</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> ruby </span><span class="token function" style="color:#d73a49">bash</span><span class="token plain"> -c </span><span class="token string" style="color:#e3116c">"ip add"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Nous exécutons le terminal bash avec la commande (-c) "ip add" Cela vous montrera l'adresse IP de votre conteneur ruby.</p><p>Et maintenant nous pouvons installer l'outil mdl :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> ruby </span><span class="token function" style="color:#d73a49">bash</span><span class="token plain"> -c </span><span class="token string" style="color:#e3116c">"gem install mdl"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Super, tout est beau et propre ! Maintenant, prenez un fichier .md de votre choix, et lancez mdl :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> </span><span class="token builtin class-name">exec</span><span class="token plain"> ruby </span><span class="token function" style="color:#d73a49">bash</span><span class="token plain"> -c </span><span class="token string" style="color:#e3116c">"mdl /mdfiles/myfile.md"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cela fera tourner l'outil mdl à travers votre fichier md et vous informera du nombre d'erreurs que vous avez, les lignes qu'elles sont et quelle était la règle qui n'a pas été respectée.</p>]]></content:encoded>
            <category>docker</category>
        </item>
        <item>
            <title><![CDATA[Typora / MarktText pour éditer des fichiers markdown en WYSIWYG]]></title>
            <link>https://baditboys.netlify.app/fr/blog/marktext</link>
            <guid>https://baditboys.netlify.app/fr/blog/marktext</guid>
            <pubDate>Fri, 14 Aug 2020 21:03:59 GMT</pubDate>
            <description><![CDATA[Un éditeur WYSIWYG pour éditer des fichiers Markdown ?]]></description>
            <content:encoded><![CDATA[<p>Un éditeur WYSIWYG pour éditer des fichiers Markdown ?</p><p>Si ça vous intrigue, suivez le guide !</p><p>[Mise à jour]<!-- --> Typora n'est pas un outil libre, et seule la version bêta semble gratuite. Pour éviter tout risque d'adaptation à un logiciel ultérieurement payant, nous proposons d'utiliser un clone libre de typora: MarkText.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="typora-marktext-par-amour-du-markdown"><del>Typora</del> MarkText, par amour du markdown<a href="#typora-marktext-par-amour-du-markdown" class="hash-link" aria-label="Lien direct vers typora-marktext-par-amour-du-markdown" title="Lien direct vers typora-marktext-par-amour-du-markdown">​</a></h2><p>Cet outil s'appelle typora, et le site officiel est là: <a href="https://typora.io/" target="_blank" rel="noopener noreferrer"><del>typora</del></a> <a href="https://github.com/marktext/marktext" target="_blank" rel="noopener noreferrer">MarkText</a></p><p>Je vous présente cet outil que je vais tester pour la série d'article autour de gitlab CI/CD.</p><p>Il est disponible pour Windows, Linux, et Mac OS.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="des-fonctionnalités-pour-profiter-de-la-puissance-du-markdown">Des fonctionnalités pour profiter de la puissance du markdown<a href="#des-fonctionnalités-pour-profiter-de-la-puissance-du-markdown" class="hash-link" aria-label="Lien direct vers Des fonctionnalités pour profiter de la puissance du markdown" title="Lien direct vers Des fonctionnalités pour profiter de la puissance du markdown">​</a></h3><p>Les fonctionnalités de l'éditeur permettent de profiter de la puissance du format markdown, car il est à la fois possible de sauvegarder des fichiers directement en markdown, mais également de copier le texte au format markdown.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="un-éditeur-wysiwyg">Un éditeur wysiwyg<a href="#un-éditeur-wysiwyg" class="hash-link" aria-label="Lien direct vers Un éditeur wysiwyg" title="Lien direct vers Un éditeur wysiwyg">​</a></h4><p>Voici, par exemple, le rendu de cet article (dans sa version française)</p><p><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597500080/baditboys/posts_content/2020-08-15_15-58_nbf3c2_p4agaz.webp" class="img_ev3q"></p><p>Il suffit donc d'appliquer aux textes les formats souhaités (<em>Titre 1-2-3, gras, italiques, etc.</em> ) en le sélectionnant dans le menu, ou en utilisant les raccourcis habituels (CTRL+B, CTRL+I)</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="sauvegarder-au-format-md">Sauvegarder au format MD<a href="#sauvegarder-au-format-md" class="hash-link" aria-label="Lien direct vers Sauvegarder au format MD" title="Lien direct vers Sauvegarder au format MD">​</a></h4><p>Il suffit de sauvegarder le fichier<del>, et Typora vous propose deux formats d'enregistrement: .md ou .txt.</del> MarkText ne propose que le .md.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="exporter-le-contenu-au-format-md">Exporter le contenu au format MD<a href="#exporter-le-contenu-au-format-md" class="hash-link" aria-label="Lien direct vers Exporter le contenu au format MD" title="Lien direct vers Exporter le contenu au format MD">​</a></h4><p><del>Typora</del> MarkText propose une fonctionnalité très intéressante: l'export au format markdown.</p><p>Ainsi, si j'exporte le contenu de l'article (dans sa version française, toujours):</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Un éditeur WYSIWYG pour éditSauvegarder au format MDer des fichiers Markdown ?</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Si ça vous intrigue, suivez le guide !</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Typora, par amour du markdown</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">C'est outil s'appelle typora, et le site officiel est là: </span><span class="token url" style="color:#36acaa">[</span><span class="token url content" style="color:#36acaa">typora</span><span class="token url" style="color:#36acaa">](</span><span class="token url" style="color:#36acaa">https://typora.io/</span><span class="token url" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Je vous présente cet outil que je vais tester pour la série d'article autour de gitlab CI/CD.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Il est disponible pour Windows, Linux, et en version beta (à l'heure d'acriture de ces lignes) pour Mac OS.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> Des fonctionnalités pour profiter de la puissance du markdown</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Les fonctionnalités de l'éditeur permettent de profiter de la puissance du format markdown, car il est à la fois possible de sauvegarder des fichiers directement en markdown, mais également de copier le texte au format markdown.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">###</span><span class="token title important"> Un éditeur wysiwyg</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Voici, par exemple, le rendu de cet article (dans sa version française)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Il suffit de sélectionner la partie que l'on souhaite exporter, puis utiliser l'entrée du menu ou d'appliquer le raccourci dédié: CTRL + MAJ + C (raccourci valable sus typora et sous MarkText)</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="la-correction-orthographique-sur-des-fichiers-markdown">La correction orthographique sur des fichiers Markdown<a href="#la-correction-orthographique-sur-des-fichiers-markdown" class="hash-link" aria-label="Lien direct vers La correction orthographique sur des fichiers Markdown" title="Lien direct vers La correction orthographique sur des fichiers Markdown">​</a></h4><p>Cette fonctionnalité ne mérite pas d'être détaillée, je suppose.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="la-qualité-du-markdown">La qualité du Markdown<a href="#la-qualité-du-markdown" class="hash-link" aria-label="Lien direct vers La qualité du Markdown" title="Lien direct vers La qualité du Markdown">​</a></h4><p>Nos article sont soumis, avant build du site par Hugo, à mardownlint, un utilitaire permettant de valider la syntaxe markdown. Le présent article obtient le résultat suivant:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">$ mdl content/posts/*.md --ignore-front-matter --rules ~MD013,~MD026,~MD033</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:13: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:15: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:21: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:23: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:27: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:39: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:45: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:47: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:50: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:52: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:58: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:60: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:64: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:75: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:81: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:82: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:84: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:96: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:100: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:109: MD009 Trailing spaces</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:35: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:36: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:90: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:91: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:105: MD012 Multiple consecutive blank lines</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">content/posts/typora_fr.fr.md:106: MD012 Multiple consecutive blank lines</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>La qualité des fichiers produits est très bonne. Seules les erreurs d'espace de fin de ligne et de multiples lignes blanches (visible depuis la version wysiwyg, donc) sont à considérer lors de la saisie.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="les-usages">Les usages<a href="#les-usages" class="hash-link" aria-label="Lien direct vers Les usages" title="Lien direct vers Les usages">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="les-articles-de-site-hugo">Les articles de site Hugo<a href="#les-articles-de-site-hugo" class="hash-link" aria-label="Lien direct vers Les articles de site Hugo" title="Lien direct vers Les articles de site Hugo">​</a></h4><p>Pour gérer nos articles, <del>typora</del> MarkText est très utile.
En création, il suffit de sauvegarder le fichier quelque part, et de l'ajouter directement depuis l'interface web de gitlab.</p><p>En modification, idem. Il suffit d'éditer l'article depuis gitlab, puis utiliser la fonction de copie au format MD, puis d'export au format MD.</p><p>Pour une utilisation plus poussée, il est possible de gérer le dossier d'article du site directement depuis typora, mais sans qu'il soit possible de gérer le dépôt git  (à ma connaissance):</p><p><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597501064/baditboys/posts_content/2020-08-15_16-16_jeccl9_gmj1gh.webp" class="img_ev3q"></p><p>En déportant l'usage de git avec le terminal, <del>typora</del> MarText peut tout à fait servir à gérer les articles d'un blog utilisant les moteurs Hugo ou Jekyll.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="nos-utilitaires">Nos utilitaires<a href="#nos-utilitaires" class="hash-link" aria-label="Lien direct vers Nos utilitaires" title="Lien direct vers Nos utilitaires">​</a></h4><p>Nos utilitaires s’appuient tous sur le format Markdown:</p><ul><li>nos wikis;</li><li>les readme de nos développements;</li><li>notre KB;</li><li>nos ADR</li></ul><p>L'outil d'export au format mardkown permet d'éditer les textes sous <del>typora</del> MarkText, et ainsi ne plus se préoccuper de la syntaxe, tout en bénéficiant de la possibilité d'éditer directement au format markdown si nécessaire (lors d'une revue de la structure d'un article, par exemple).</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="#conclusion" class="hash-link" aria-label="Lien direct vers Conclusion" title="Lien direct vers Conclusion">​</a></h2><p>Au départ de la série d'article sur gitlab CI/CD, je pense que je préfère encore utiliser la syntaxe MD directement, plutôt qu'un éditeur WYSIWIG.</p><p>Néanmoins, à l'usage, c'est séduisant. Il n'est pas impossible que la série d'articles qui arrive ne me fasse changer d'opinion !</p>]]></content:encoded>
            <category>hugo-tips</category>
            <category>markdown</category>
        </item>
        <item>
            <title><![CDATA[Chocolatey]]></title>
            <link>https://baditboys.netlify.app/fr/blog/chocolatey</link>
            <guid>https://baditboys.netlify.app/fr/blog/chocolatey</guid>
            <pubDate>Fri, 31 Jul 2020 08:17:15 GMT</pubDate>
            <description><![CDATA[Ce billet a pour but d'expliquer ce qu'est le Chocolatey, comment l'installer et comment l'utiliser.]]></description>
            <content:encoded><![CDATA[<p>Ce billet a pour but d'expliquer ce qu'est le Chocolatey, comment l'installer et comment l'utiliser.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="chocolatey">Chocolatey<a href="#chocolatey" class="hash-link" aria-label="Lien direct vers Chocolatey" title="Lien direct vers Chocolatey">​</a></h2><p>Chocolatey est un module pour Windows permettant d'installer des paquets (outils) sur la machine. Aussi connu comme un outil de gestion de logiciels.</p><p>Il nous permet d'effectuer diverses tâches via la ligne de commande.</p><p>Par exemple, "choco install tool" est l'équivalent de "apt install tool" sur Ubuntu.</p><p>Pour l'installer, vous devez donc copier-coller cette ligne de commande dans votre terminal :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Set-ExecutionPolicy Bypass -Scope Process -orce; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cette commande installera chocolatey et vous permettra d'utiliser "choco install" pour installer d'autres outils dans votre machine Windows tels que Git ou VSCode.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="exemple">Exemple<a href="#exemple" class="hash-link" aria-label="Lien direct vers Exemple" title="Lien direct vers Exemple">​</a></h2><p>Tu veux installer certains outils dont tu as besoin et pour ce faire, tu vas utiliser Chocolatey !</p><p>Donc, dans votre terminal, tapez l'une des commandes suivantes :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">choco </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">choco </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vscode -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">choco </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> hugo -y</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ces commandes installeront les outils respectifs, mais vous pouvez installer les outils dont vous avez besoin. La seule chose dont vous avez besoin est <code>choco install "tool that you want"</code> :) Notez, que le -y est pour répondre Oui aux questions posées par le processus d'installation ;</p>]]></content:encoded>
            <category>windows</category>
            <category>vm</category>
        </item>
        <item>
            <title><![CDATA[Comment gérer les fonctionnalités de Windows avec Ansible]]></title>
            <link>https://baditboys.netlify.app/fr/blog/winfeaturepost</link>
            <guid>https://baditboys.netlify.app/fr/blog/winfeaturepost</guid>
            <pubDate>Fri, 22 May 2020 09:39:11 GMT</pubDate>
            <description><![CDATA[Hello everyone, the goal of this post is to explain how to manage Windows Features using Ansible playbooks;]]></description>
            <content:encoded><![CDATA[<p>Hello everyone, the goal of this post is to explain how to manage Windows Features using Ansible playbooks;</p><p>Bonjour à tous, le but de ce billet est d'expliquer comment gérer les fonctionnalités de Windows à l'aide des playbooks Ansible ;</p><p>Pour commencer, essayons de comprendre de quoi il s'agit. Nous voulons installer une fonctionnalité de Windows dans notre machine/vm et nous voulons le faire en utilisant Ansible pour automatiser toutes les installations et les ajouts.</p><p>Pour le faire en utilisant Ansible, nous devons utiliser des modules Ansible ! Et, dans ce cas, nous voulons utiliser le module win_feature. Mais qu'est-ce qu'un module ? Voyons voir :</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="modules">Modules<a href="#modules" class="hash-link" aria-label="Lien direct vers Modules" title="Lien direct vers Modules">​</a></h2><p>Les modules Ansible sont des scripts réutilisables et autonomes qui peuvent être utilisés par l'API Ansible, ou par les programmes ansible ou ansible-playbook.</p><p>Nous pouvons utiliser les modules pour installer, copier, déplacer, télécharger et beaucoup d'autres actions. Il y a aussi beaucoup de modules différents, et je veux dire beaucoup !</p><p>Ansible a des modules pour le Cloud, les bases de données, le réseau, la surveillance, Windows, presque tout ce que vous pouvez imaginer !</p><p>Mais pour ce post, nous allons nous concentrer uniquement sur un module Windows spécifique fourni par Ansible qui est le module win_feature.</p><p>Notez que ce n'est qu'un aperçu rapide de ce que sont les modules ! Vous pouvez consulter la documetation officielle d'Ansible sur les modules pour avoir une analyse plus approfondie.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="win_feature">win_feature<a href="#win_feature" class="hash-link" aria-label="Lien direct vers win_feature" title="Lien direct vers win_feature">​</a></h2><p>Ce module installe ou désinstalle les rôles ou fonctionnalités de Windows sur Windows Server.</p><p>Mais, pour savoir quelle fonctionnalité nous voulons installer, nous devons trouver son nom. Pour cela, nous utiliserons une commande qui listera toutes les fonctionnalités avec l'information supplémentaire si elles sont installées ou non.</p><p>Tapez donc dans votre terminal la commande suivante :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Get-WindowsFeature</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Vous devriez obtenir une liste complète des caractéristiques :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PS C:\&gt; Get-WindowsFeature</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Display Name                                            Name                       Install State</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">------------                                            ----                       -------------</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[ ] Active Directory Certificate Services               AD-Certificate                 Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Certification Authority                         ADCS-Cert-Authority            Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Certificate Enrollment Policy Web Service       ADCS-Enroll-Web-Pol            Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Certificate Enrollment Web Service              ADCS-Enroll-Web-Svc            Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Certification Authority Web Enrollment          ADCS-Web-Enrollment            Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Network Device Enrollment Service               ADCS-Device-Enrollment         Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] Online Responder                                ADCS-Online-Cert               Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(...)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[X] Web Server (IIS)                                    Web-Server                     Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [X] Web Server                                      Web-WebServer                  Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [X] Common HTTP Features                        Web-Common-Http                Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Default Document                        Web-Default-Doc                Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Directory Browsing                      Web-Dir-Browsing               Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] HTTP Errors                             Web-Http-Errors                Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Static Content                          Web-Static-Content             Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] HTTP Redirection                        Web-Http-Redirect              Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] WebDAV Publishing                       Web-DAV-Publishing             Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [X] Health and Diagnostics                      Web-Health                     Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] HTTP Logging                            Web-Http-Logging               Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Custom Logging                          Web-Custom-Logging             Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Logging Tools                           Web-Log-Libraries              Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] ODBC Logging                            Web-ODBC-Logging               Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Request Monitor                         Web-Request-Monitor            Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Tracing                                 Web-Http-Tracing               Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [X] Performance                                 Web-Performance                Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Static Content Compression              Web-Stat-Compression           Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            [X] Dynamic Content Compression             Web-Dyn-Compression            Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(...)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">[X] .NET Framework 4.7 Features                         NET-Framework-45-Fea...        Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [X] .NET Framework 4.7                              NET-Framework-45-Core          Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [ ] ASP.NET 4.7                                     NET-Framework-45-ASPNET        Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    [X] WCF Services                                    NET-WCF-Services45             Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [ ] HTTP Activation                             NET-WCF-HTTP-Activat...        Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [ ] Message Queuing (MSMQ) Activation           NET-WCF-MSMQ-Activat...        Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [ ] Named Pipe Activation                       NET-WCF-Pipe-Activat...        Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [ ] TCP Activation                              NET-WCF-TCP-Activati...        Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        [X] TCP Port Sharing                            NET-WCF-TCP-PortShar...        Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(...)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant, nous pouvons voir une liste complète de toutes les fonctionnalités de Windows (dans l'exemple ci-dessus, il n'y en a que quelques-unes) avec l'information supplémentaire si elles sont installées ou non.</p><p>Cela pourrait être un excellent moyen de voir quelles fonctionnalités vous devez ajouter à votre playbook.</p><p>Maintenant, laissez-moi vous montrer un moyen de savoir si une fonctionnalité dont vous connaissez déjà le nom est installée ou non.</p><p>Dans ce cas, nous allons rechercher la fonctionnalité .NET Framework. Nous allons vérifier le nom correct de la fonctionnalité et voir si elle est installée ou non.</p><p>Pour cela, nous allons utiliser la commande ci-dessous :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Get-WindowsFeature | Where-Object {$_. name-match ".Net"} | Format-List Name,DisplayName, Installstate | more</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le résultat sera le suivant :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Print-Internet</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : Internet Printing</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Web-Net-Ext</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : .NET Extensibility 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Web-Net-Ext45</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : .NET Extensibility 4.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Web-Asp-Net</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : ASP.NET 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Web-Asp-Net45</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : ASP.NET 4.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : NET-Framework-45-ASPNET</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : ASP.NET 4.7                             #As you can see the feature is available, therefore not installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : BitLocker-NetworkUnlock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : BitLocker Network Unlock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Internet-Print-Client</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : Internet Printing Client</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Telnet-Client</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : Telnet Client</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : WAS-NET-Environment</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : .NET Environment 3.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : Wireless-Networking</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : Wireless LAN Service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Available</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant que nous avons confirmé le nom et l'état de l'installation, nous pouvons ajouter à notre playbook.yaml le module win_feature dont nous avons parlé plus tôt dans l'article.</p><p>Regardons le playbook.yaml contenant le module win_feature.</p><div class="language-yml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">---</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Install Windows Features</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">hosts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> all</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">tasks</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Install .Net Framework 4.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">win_feature</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> NET</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">Framework</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">45</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">ASPNET</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    </span><span class="token key atrule" style="color:#00a4db">state</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> present</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Comme vous pouvez le voir, playbook.yaml installera la dernière fonctionnalité Windows de .Net Framework.</p><p>Cherchons la fonction .net Framework sur notre terminal et voyons ce qui a changé :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">PS C:\&gt; Get-WindowsFeature | Where-Object {$_. name-match "NET-Framework-45-ASPNET"} | Format-List Name,DisplayName, Installstate | more</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Name         : NET-Framework-45-ASPNET</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DisplayName  : ASP.NET 4.7</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">InstallState : Installed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et voilà ! Nous avons installé avec succès une fonctionnalité Windows de notre choix en utilisant les playbooks Ansible !</p><p>Maintenant, c'est à vous de voir quelle fonctionnalité de Windows vous souhaitez installer sur votre serveur !</p><p>Rappelez-vous que vous pouvez faire un playbook installant autant de fonctionnalités que vous le souhaitez. J'espère que ce post vous aidera à comprendre un peu mieux le module win_feature :)</p>]]></content:encoded>
            <category>devops</category>
            <category>virtualization</category>
        </item>
        <item>
            <title><![CDATA[Vagrant Plugins]]></title>
            <link>https://baditboys.netlify.app/fr/blog/pluginspost</link>
            <guid>https://baditboys.netlify.app/fr/blog/pluginspost</guid>
            <pubDate>Wed, 20 May 2020 15:44:47 GMT</pubDate>
            <description><![CDATA[Bonjour à tous, J'ai créé ce post pour expliquer ce qu'est un plugin sur Vagrant, comment les installer et les utiliser correctement dans notre fichier vagrant ; Ce post sera mis à jour au fur et à mesure que je recevrai plus d'informations sur d'autres plugins.]]></description>
            <content:encoded><![CDATA[<p>Bonjour à tous, J'ai créé ce post pour expliquer ce qu'est un plugin sur Vagrant, comment les installer et les utiliser correctement dans notre fichier vagrant ; Ce post sera mis à jour au fur et à mesure que je recevrai plus d'informations sur d'autres plugins.</p><p>Pour commencer, regardons un simple vagrantfile contenant une boîte Windows Server 2019 :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ceci est juste pour vous donner un aperçu d'un fichier vagrant très simple contenant juste la boîte, le nom du vm, la mémoire RAM et un terminal shell prêt à fonctionner.</p><p>C'est parti !</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="reload">Reload<a href="#reload" class="hash-link" aria-label="Lien direct vers Reload" title="Lien direct vers Reload">​</a></h2><p>A quoi sert la recharge ?</p><p>Eh bien, utiliser reload dans votre fichier vagrant revient à faire un reboot de votre machine ;</p><p>Donc, mettons cela dans le contexte ;</p><p>Disons que nous avons installé Chocolatey et que nous voulons l'utiliser pour installer git.</p><p>C'est facile, mais nous ne pouvons pas le faire tout de suite parce que, comme la machine virtuelle n'a pas été rechargée (redémarrée), elle ne peut pas prendre en compte la modification effectuée précédemment ;</p><p>Donc, pour résoudre ce problème, nous devons ajouter un reload provisioner à notre vagrantfile !</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config.vm.provision :reload</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>La commande ci-dessus est ce que nous devons ajouter à notre fichier vagrant mais nous ne pouvons pas l'utiliser si elle n'est pas installée.</p><p>Donc, pour installer le porvisioner reload, ouvrez un terminal Powershell et tapez :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vagrant-reload</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ceci va installer le plugin qui vous permettra d'utiliser le reload provisioner sur notre vagrantfile ;</p><p>Vous vous souvenez de notre simple fichier vagrant ? Voyons à quoi ressemble le fichier vagrant avec l'installation de Chocolatey :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Dans notre fichier vagrant ci-dessus, nous installons Chocolatey. Mais, rappelez-vous, nous voulons l'utiliser pour installer nos outils et sans recharger le vm cela ne sera pas possible !</p><p>Ce que nous allons faire, c'est recharger la machine après avoir installé Chocolatey et après le rechargement, nous allons ouvrir un nouveau terminal Shell provisioner afin d'installer Git en utilisant Chocolatey ;</p><p>Jetons un coup d'oeil à notre fichier vagrant et voyons comment tout cela fonctionne :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install git -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Super ! Nous avons réussi l'installation du plugin et le rechargement de notre vm !</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="disk-size">Disk Size<a href="#disk-size" class="hash-link" aria-label="Lien direct vers Disk Size" title="Lien direct vers Disk Size">​</a></h2><p>Un autre plugin utile est le Disk Size !</p><p>Ce plugin nous permettra de gérer la taille du disque de notre vm (tous ceux qui utilisent Vagrant savent que c'est une question importante :) ).</p><p>Comme vu précédemment, nous devons d'abord installer le plugin directement sur notre machine afin de pouvoir l'utiliser dans notre fichier vagrant.</p><p>Donc, copiez-collez ce qui suit :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vagrant-disksize</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Voyons ce que ça donne :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config.disksize.size = '40GB'</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Comme vous pouvez le voir, je veux avoir un disque de 40 Go. Mais où le placer ? Jetons un coup d'oeil à un fichier vagrant de base :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Vagrantfile très simple et basique mais il manque quelque chose ! Où est la taille du disque ?</p><p>Eh bien, puisque c'est une partie de la configuration du vm, nous allons la placer juste après la boîte du vm :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  wvm.disksize.size = "40GB"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et voilà ! Vous pouvez maintenant créer des vm's avec la taille de disque que vous souhaitez :)</p><p>NOTE : Si vous démarrez votre vm et voyez que votre vm windows n'a pas la taille de disque que vous avez attribué et n'a probablement que jusqu'à 20gb de taille de disque.</p><p>Le reste n'est pas attribué à la bonne partition. Pour corriger cela nous allons taper la commande suivante dans un Powershell à l'intérieur de la VM : (n'oubliez pas à la fin de la ligne de commande d'ajouter vos GB, dans mon cas j'ai donné 40gb donc je vais mettre 39 à la fin de la commande)</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Resize-Partition -DriveLetter C -Size 39gb</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>A bientôt sur le prochain post :)</p>]]></content:encoded>
            <category>devops</category>
            <category>virtualization</category>
        </item>
        <item>
            <title><![CDATA[Gérer plusieurs auteurs grâce à la taxonomie]]></title>
            <link>https://baditboys.netlify.app/fr/blog/taxonomy</link>
            <guid>https://baditboys.netlify.app/fr/blog/taxonomy</guid>
            <pubDate>Mon, 18 May 2020 13:49:56 GMT</pubDate>
            <description><![CDATA[Tous les thèmes ne disposent pas de la gestion de plusieurs auteurs au sein d'un blog. Et je suis probablement mauvais observateur, car je n'ai pas vu, dans la présentation des thèmes disponibles, si un thème gère en natif plusieurs auteurs ou non.]]></description>
            <content:encoded><![CDATA[<p>Tous les thèmes ne disposent pas de la gestion de plusieurs auteurs au sein d'un blog. Et je suis probablement mauvais observateur, car je n'ai pas vu, dans la présentation des thèmes disponibles, si un thème gère en natif plusieurs auteurs ou non.</p><p>C'est assez désagréable d'avoir trouvé LE thème parfait, et qu'une simple fonctionnalité lui manque. J'ai donc décidé de "ruser", et d'utiliser la gestion native des taxonomies, afin d'inscrire plusieurs auteurs sur un blog. Et pour le coup, ça fonctionne plutôt pas mal.</p><p>Pour rédiger cet article, je me suis inspiré du tutoriel suivant : <a href="https://www.netlify.com/blog/2018/07/24/hugo-tips-how-to-create-author-pages/" target="_blank" rel="noopener noreferrer">How to create author pages</a>.</p><p>Je prends soin de le compléter uniquement sur les points pour lesquels j'ai du expérimenter un tas de choses.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="usages-des-taxonomies">Usages des taxonomies<a href="#usages-des-taxonomies" class="hash-link" aria-label="Lien direct vers Usages des taxonomies" title="Lien direct vers Usages des taxonomies">​</a></h2><p>Il y a deux taxonomies en standard dans Hugo :</p><ul><li>Les tags ;</li><li>Les catégories.</li></ul><p>Pour utiliser les taxonomies standard d'Hugo, ou celles natives du thème choisi, c'est très simple, il suffit d'ajouter à votre archetype les éléments suivants :</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- faire son site</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- hugo-tips</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">categories:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- hugo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le principe est donc simple : dès lors que vous ajoutez une catégorie ou un tag, et que le thème le gère bien, vous retrouvez une page <code>http://[votresite]/tags/</code> et une autre <code>/catégories/</code> qui listent les tags et catégories, et une page par item listant les articles qu mentionnent l'item dans leurs archétypes.</p><p>Voyons maintenant comment créer une nouvelle taxonomy qui ouvrirait la possibilité d'ajouter un ou plusieurs auteurs à un article.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="créer-une-taxonomie">Créer une taxonomie<a href="#créer-une-taxonomie" class="hash-link" aria-label="Lien direct vers Créer une taxonomie" title="Lien direct vers Créer une taxonomie">​</a></h2><p>A chaque taxonomy correspond deux templates :</p><ul><li>list.html, qui correspond au template de la page qui décrira un des items (un auteur, pour nous, et tous les articles qui lui sont liés)</li><li>terms.html, qui correspond à la page qui va lister tous les éléments d'une taxonomy (tous les auteurs, donc)</li></ul><p>Dans notre cas, nous allons créer une taxonomie d'auteur. Il s'agira d'auteur de post, et non d'auteur de livres, comme dans l'exemple du lien précédent.</p><p>Nous allons travailler dans deux arborescences :</p><ul><li>le dossier <em>content</em>, logiquement à la racine du site hugo ;</li><li>le dossier <em>layout</em> du thème utilisé par le site.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="les-données-concernant-les-items-de-la-taxonomie">Les données concernant les items de la taxonomie<a href="#les-données-concernant-les-items-de-la-taxonomie" class="hash-link" aria-label="Lien direct vers Les données concernant les items de la taxonomie" title="Lien direct vers Les données concernant les items de la taxonomie">​</a></h3><p>Dans le dossier <em>content</em>, nous allons créer un dossier par auteur, dans lequel sera positionné un fichier <em>_index.md</em>,</p><div class="language-code codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-code codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">content</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── authors/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ├── j0rdan-m/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │   └── _index.md</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    └── author-2/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        └── _index.md</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Chaque <em>_index.md</em> décrit un auteur, et se compose comme suit :</p><div class="language-code codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-code codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">name: j0rdan-m</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">photo: 'https://j0rdan-m.gitlab.io/blog/pearlbonnet.png'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">twitter: '@j0rdan_m'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">j0rdan is an author of the blog</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="les-méta-données">Les méta-données<a href="#les-méta-données" class="hash-link" aria-label="Lien direct vers Les méta-données" title="Lien direct vers Les méta-données">​</a></h3><p>Les datas concernant les auteurs sont prêtes, il faut maintenant paramétrer les méta-datas.</p><p>Pour cela, il va falloir créer un dossier <em>authors</em> dans le layout de notre thème (et pas le dossier des taxonomies, ce qui peut surprendre).</p><div class="language-code codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-code codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">my_theme/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── layout/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    └── authors/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        └── list.html</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        └── terms.html</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le fichier <em>list.html</em> ne liste pas les auteurs, mais les articles qui mentionnent les auteurs (ou tout autre choix de taxonomie).</p><p>Ainsi, voici le contenu basique du fichier <em>list.hml</em> :</p><div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ .Params.name }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">src</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{{ .Params.photo }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">alt</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Bio</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ .Content }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ with .Params.twitter }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">https://twitter.com/{{ substr . 1 }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      Follow {{ $.Params.name }} on Twitter</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">p</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ end }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Articles</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h2</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ul</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ range .Data.Pages }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{{ .Permalink }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ .Title }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ end }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ul</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le fichier <em>terms.html</em> est le template de la page qui va recenser tous les auteurs, et proposer un lien pour chacun :</p><div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">Authors</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">h1</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">ul</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ range .Data.Pages }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{{ .Permalink }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ .Params.name }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">li</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ end }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">ul</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Attention, il faudra intégrer en amont et aval des codes proposés le contenu du thème, en prenant example sur la page par défaut (probablement dans <em>themes/my_theme/layouts/_default/single.html</em>)</p><p>Le thème utilisé par ce blog proposait un beau commentaire pour isoler les infos de thème du contenu (grâce à la balise <code>&lt;section&gt;&lt;/section&gt;</code>. Un autre thème que j'utilise mentionne, lui </p><main></main>)<p></p><p>Puisque nous sommes sur cette page <em>single.html</em>, nous allons pouvoir y ajouter une mention de l'auteur :</p><div class="language-html codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-html codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">{{- range .Params.authors }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{- with $.Site.GetPage "taxonomyTerm" (printf "authors/%s" (urlize .)) }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">figure</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">img</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">src</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{{ .Params.photo }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">alt</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">/&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">figcaption</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token tag punctuation" style="color:#393A34">&lt;</span><span class="token tag" style="color:#00009f">a</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">href</span><span class="token tag attr-value punctuation attr-equals" style="color:#393A34">=</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag attr-value" style="color:#e3116c">{{ .Permalink }}</span><span class="token tag attr-value punctuation" style="color:#393A34">"</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain">{{ .Params.name }}</span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">a</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">figcaption</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token tag punctuation" style="color:#393A34">&lt;/</span><span class="token tag" style="color:#00009f">figure</span><span class="token tag punctuation" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  {{ end }}</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{{ end }}</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cette mention est à ajouter à l'endroit de la page où vous souhaitez la faire apparaitre, évidemment.</p><p>Enfin, maintenant que tout est prêt, nous allons pouvoir déclarer la taxonomie dans notre fichier config.toml, en y ajoutant la pention suivante :</p><div class="language-ini codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ini codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">[taxonomies]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  author = "authors"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  tag = "tags"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  category = "categories"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>A titre personnel, j'ai ajouté manuellement une entrée dans le menu, sachant que l'adresse de visualisation de votre taxonomie sera : <code>http://[mon site]/authors/</code></p><p>Voilà donc comment, grâce aux taxonomies, ce blog est devenu un blog multi-auteurs.</p>]]></content:encoded>
            <category>hugo-tips</category>
        </item>
        <item>
            <title><![CDATA[Windows Server avec Vagrant, WSL et Ansible]]></title>
            <link>https://baditboys.netlify.app/fr/blog/wslvmpost</link>
            <guid>https://baditboys.netlify.app/fr/blog/wslvmpost</guid>
            <pubDate>Tue, 12 May 2020 09:20:15 GMT</pubDate>
            <description><![CDATA[Bonjour à nouveau, ce post va vous expliquer comment créer une machine virtuelle Windows Server avec Vagrant, WSL et Ansible. Je suppose que vous avez déjà vu mon précédent billet sur Windows Server où j'explique comment créer une machine virtuelle Windows Server, alors allez le consulter si ce n'est pas le cas :)]]></description>
            <content:encoded><![CDATA[<p>Bonjour à nouveau, ce post va vous expliquer comment créer une machine virtuelle Windows Server avec Vagrant, WSL et Ansible. Je suppose que vous avez déjà vu mon précédent billet sur Windows Server où j'explique comment créer une machine virtuelle Windows Server, alors allez le consulter si ce n'est pas le cas :)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="before-we-start-plugins">Before we start, Plugins!<a href="#before-we-start-plugins" class="hash-link" aria-label="Lien direct vers Before we start, Plugins!" title="Lien direct vers Before we start, Plugins!">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Lien direct vers Installation" title="Lien direct vers Installation">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="windows">Windows<a href="#windows" class="hash-link" aria-label="Lien direct vers Windows" title="Lien direct vers Windows">​</a></h4><p>Ainsi, pour mettre en action certains plugins dans notre fichier Vagrant, nous devons les installer directement dans notre terminal.</p><p>Pour ce faire, ouvrez un Powershell et installez les plugins suivants (notez que ce plugin est pour Windows OS) :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin install vagrant-reload</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cela nous permettra de recharger notre vm pendant la création du vm.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="autres-os">Autres OS<a href="#autres-os" class="hash-link" aria-label="Lien direct vers Autres OS" title="Lien direct vers Autres OS">​</a></h4><p>Maintenant, nous voulons utiliser les fonctionnalités de Windows mais nous utilisons un Linux ou un MacOS.</p><p>Pour cela, nous devons installer les plugins suivants dans notre machine Linux ou MacOS :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vagrant-reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> winrm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> winrm-fs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">vagrant plugin </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> winrm-elevated</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cela nous permettra de recharger notre vm et d'utiliser les fonctionnalités de Windows avec vagrant ;</p><p>Maintenant que nous avons installé nos plugins, continuons ;</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="wsl">WSL<a href="#wsl" class="hash-link" aria-label="Lien direct vers WSL" title="Lien direct vers WSL">​</a></h2><p>Qu'est-ce que WSL et qu'est-ce qu'il fait ? WSL est l'abréviation de Windows Subsystem for Linux et, en l'installant sur notre serveur Windows, il nous permettra, en gros, d'avoir Linux sur un terminal Windows.</p><p>Cela signifie que vous pouvez, par exemple, installer un outil dans votre machine virtuelle Windows en utilisant des commandes Linux comme <code>wsl sudo apt ansible -y</code> (cette commande installera Ansible dans votre machine virtuelle Windows).</p><p>Mais pour utiliser WSL, nous devons l'installer ! Et pour l'installer, nous allons utiliser Vagrant. Jetons un coup d'oeil à notre fichier Vagrant :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Si ce fichier vagrant vous semble familier, il devrait l'être ! Il s'agit du fichier vagrant de notre post précédent où nous avons défini la configuration de notre machine et installé Chocolatey.</p><p>Maintenant, ce que nous voulons faire, c'est installer WSL et pour ce faire, nous devons ajouter la commande d'installation dans notre Shell provisioner.</p><p>Donc, copiez-collez ceci dans le terminal shell de votre vagranfile :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart -WarningAction SilentlyContinue</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Donc, notre fichier vagrant devrait ressembler à ceci pour le moment :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart -WarningAction SilentlyContinue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ainsi, nous avons maintenant WSL installé dans notre vm Windows Server ! C'est génial et nous avons maintenant la liberté de l'utiliser à volonté !</p><p>Depuis que nous avons installé Chocoaltey et WSL, nous voulons être sûrs que la machine prend en compte les modifications appliquées.</p><p>Pour cela, nous allons utiliser un provisioner (shell) reload :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Nous allons l'ajouter après notre provisionneur de shell comme ceci :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart -WarningAction SilentlyContinue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # trigger reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant que notre provisioner est rechargé, nous pouvons installer Kali Linux (distribution Linux basée sur Debian).</p><p>Pour cela, nous allons ouvrir un autre termninal et utiliser chocolatey pour l'installer.</p><p>Juste après avoir installé Kali Linux, nous allons recharger notre provisioner une fois de plus.</p><p>Cela nous donnera la certitude que tout a été redémarré, y compris la machine virtuelle elle-même !</p><p>Donc, voyons ce que nous devons ajouter :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  # execute code after reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install wsl-kalilinux -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # trigger reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et maintenant que tout est frais et propre, ouvrons un autre terminal shell et commençons à utiliser WSL !</p><p>Pour commencer à utiliser WSL et voir si elle fonctionne, ajoutons un shell avec une simple mise à jour du paquet :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wsl sudo apt update</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Plutôt facile, non ? Alors, voyons comment l'utiliser efficacement.</p><p>Pour l'essayer, installons quelques outils dont nous aurons besoin.</p><p>Installons Ansible et décompressons le paquet :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart -WarningAction SilentlyContinue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # trigger reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # execute code after reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt update</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt install -y ansible</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt install -y unzip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Pourquoi avons-nous besoin d'installer Ansible et Unzip, me direz-vous ? Eh bien, nous aurons besoin de décompresser certains fichiers, c'est pourquoi nous avons besoin de Unzip.</p><p>Pour Ansible, cela nécessite un peu plus d'explications, suivez-moi :)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ansible">Ansible<a href="#ansible" class="hash-link" aria-label="Lien direct vers Ansible" title="Lien direct vers Ansible">​</a></h2><p>Ansible est un moteur d'automatisation, qui fonctionne avec des fichiers .yml appelés playbooks, et qui automatise l'approvisionnement du cloud, la gestion de la configuration, le déploiement d'applications, l'orchestration intra-service et de nombreux autres besoins informatiques.</p><p>Il n'utilise pas d'agents ni d'infrastructure de sécurité personnalisée supplémentaire, il est donc facile à déployer et, surtout, il utilise un langage très simple (YAML, sous la forme de Playbooks Ansible) qui vous permet de décrire vos tâches d'automatisation d'une manière qui se rapproche de l'anglais courant.</p><p>Nous avons également un fichier hosts (également connu sous le nom d'Inventaire). C'est là que nous allons ajouter nos machines cibles sur lesquelles nous souhaitons exécuter les playbooks.</p><p>Allez voir le lien pour une information plus profonde et détaillée sur Ansible et ce qu'il fait.</p><p>Donc, pour utiliser Ansible, nous avons besoin d'un playbook fonctionnel, d'hôtes et d'un tas d'autres choses ! Et pour cela nous allons utiliser wget pour télécharger un fichier zip contenant tout cela (notre paquet unzip sera utile :D ).</p><p>Copiez-collez simplement ce fichier dans votre provisioner :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">    wsl wget https://github.com/j0rdan-m/vagrant_wsl_ansible/archive/master.zip</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cela va télécharger le fichier zip.</p><p>Mais nous devons le décompresser :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">    wsl unzip master.zip</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Grâce à ce travail, nous disposons désormais de playbooks fonctionnels.</p><p>Mais avant de les vérifier, configurons notre fichier hosts. Nous allons simplement ajouter la machine localhost dans le fichier hosts avec un utilisateur, un mot de passe, une méthode de connexion et une configuration de port.</p><p>Si tout est correct, cela devrait fonctionner parfaitement avec vos playbooks.</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo [self] &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo 127.0.0.1 &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo [self:vars] &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_port=5985 &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_connection=winrm &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_winrm_transport=basic &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_user=vagrant &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_password=vagrant &gt;&gt; /etc/ansible/hosts"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et, juste pour être sûr que tout est correct, faisons un ping à notre vm :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible self -m win_ping</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant que le fichier hosts est correct, nous pouvons passer à nos playbooks !</p><p>Nous en avons 3 pour être exacts ! Un pour installer IIS, un pour installer quelques outils (Git, VSCode et SumatraPDF) et le dernier qui crée un utilisateur de service et lui donne les droits sur les bons dossiers.</p><p>Pour les utiliser, nous devons utiliser la commande ansible-playbook comme ceci :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/tools.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/iis.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/users.yml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cela lancera chaque livre de jeux dans l'ordre présenté.</p><p>Ainsi, notre playbook devrait ressembler à quelque chose comme ceci :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Enable-WindowsOptionalFeature -FeatureName Microsoft-Windows-Subsystem-Linux -Online -NoRestart -WarningAction SilentlyContinue</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # trigger reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # execute code after reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install wsl-kalilinux -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # trigger reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision :reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  # execute code after reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt update</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt install -y ansible</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo apt install -y unzip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl wget https://github.com/j0rdan-m/vagrant_wsl_ansible/archive/master.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl unzip master.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo [self] &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo 127.0.0.1 &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo [self:vars] &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_port=5985 &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_connection=winrm &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_winrm_transport=basic &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_user=vagrant &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl sudo bash -c "echo ansible_password=vagrant &gt;&gt; /etc/ansible/hosts"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible self -m win_ping</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/tools.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/iis.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    wsl ansible-playbook vagrant_wsl_ansible-master/users.yml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Nous avons maintenant une machine virtuelle Windows Server entièrement fonctionnelle avec Ansible et un tas d'autres trucs sympas dedans !</p><p>J'espère que cela vous a aidé et n'oubliez pas de consulter les autres articles ;)</p>]]></content:encoded>
            <category>devops</category>
            <category>provisionning</category>
            <category>virtualization</category>
        </item>
        <item>
            <title><![CDATA[Créer une VM de Windows Server avec Vagrant]]></title>
            <link>https://baditboys.netlify.app/fr/blog/windowsserver</link>
            <guid>https://baditboys.netlify.app/fr/blog/windowsserver</guid>
            <pubDate>Tue, 05 May 2020 09:21:08 GMT</pubDate>
            <description><![CDATA[Bonjour à tous, j'ai créé ce post pour expliquer comment nous pouvons créer une VM de serveur Windows en utilisant Vagrant avec quelques applications supplémentaires. Nous allons apprendre à installer tous les outils dont nous avons besoin pour créer notre VM de serveur. Nous aurons besoin de Vagrant, Chocolatey, Git, Hugo et VSCode.]]></description>
            <content:encoded><![CDATA[<p>Bonjour à tous, j'ai créé ce post pour expliquer comment nous pouvons créer une VM de serveur Windows en utilisant Vagrant avec quelques applications supplémentaires. Nous allons apprendre à installer tous les outils dont nous avons besoin pour créer notre VM de serveur. Nous aurons besoin de Vagrant, Chocolatey, Git, Hugo et VSCode.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vagrant">Vagrant<a href="#vagrant" class="hash-link" aria-label="Lien direct vers Vagrant" title="Lien direct vers Vagrant">​</a></h2><p>Voyons maintenant comment nous pouvons en créer un selon nos besoins et nos envies.</p><p>Tout d'abord, la VM. Nous avons décidé d'opter pour un système d'exploitation Windows Server 2019 et pour ce faire, nous avons cherché une boîte Windows Server sur le site vagrants box. Sur le site, il suffit de taper, dans le champ de recherche, le type de VM que vous recherchez (Linux, Windows, etc). Dans notre cas, il suffit de taper "mcree/win2019" et vous le trouverez. Dans la page de la boîte, vous trouverez "Vagrantfile" et "New". Ce qui nous intéresse dans cet article, c'est le "Vagrantfile". Comme vous pouvez le voir dans la page de l'encadré, il y a la configuration initiale du Vagrantfile. Vous en aurez besoin pour créer (up) votre machine serveur virtuelle. C'est le début de notre Vagrantfile :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Comme vous pouvez le voir, nous obtenons la boîte pour notre vm et sa version.</p><p>Maintenant, ajoutons le nom de notre vm et la quantité de mémoire (RAM) que nous voulons lui donner :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wvm.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant que nous avons le nom de notre vm et la capacité de RAM, nous allons configurer le réseau :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">wvm.vm.define "Windows Server 2019" do |web|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  web.vm.hostname = "winserver19"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  web.vm.network "public_network"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ici, nous définissons le nom d'hôte du vm et le type de réseau que nous souhaitons donner au vm (public, privé, etc.).</p><p>Notez qu'il existe de multiples variantes de configuration de réseau, ce post ne vous montrera que la manière la plus basique de mettre votre vm en réseau ;</p><p>Et le fichier Vagrant devrait ressembler à quelque chose comme ceci maintenant :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  wvm.vm.define "Windows Server 2019" do |web|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    web.vm.hostname = "winserver19"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    web.vm.network "public_network"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Il s'agit d'un fichier Vagrant très simple et facile (comme nous l'aimons) à configurer.</p><p>Mais nous voulons avoir quelques outils installés sur la machine virtuelle lorsque nous Up notre machine virtuelle. Pour ce faire, nous allons utiliser un terminal (shell).</p><p>Donc, nous devons ajouter au Vagrantfile le terminal :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>C'est le terminal qui va vous permettre de donner des commandes pour ajouter, supprimer, déplacer et un tas d'autres choses à la vm ;</p><p>Donc, nous allons installer Chocolatey (voir ci-dessous l'explication de ce qu'est Chocolatey et comment l'installer) et, en utilisant Chocolatey, nous allons installer Git, VSCode et Hugo ;</p><p>Notez que SHELL à la fin du terminal remplace la fin dans les autres configurations vues précédemment.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="chocolatey">Chocolatey<a href="#chocolatey" class="hash-link" aria-label="Lien direct vers Chocolatey" title="Lien direct vers Chocolatey">​</a></h2><p>Chocolatey est un module pour Windows permettant d'installer des paquets (outils) sur la machine. Par exemple, "choco install tool" est l'équivalent de "apt install tool" sur Ubuntu. Pour l'installer, vous devez donc copier-coller cette commande dans votre shell provisioner vagrantfile :</p><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  Set-ExecutionPolicy Bypass -Scope Process -orce; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">SHELL</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Cette commande installera chocolatey et vous permettra d'utiliser "choco install" pour installer d'autres outils sur votre serveur Windows tels que Git ou VSCode.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="outils">Outils<a href="#outils" class="hash-link" aria-label="Lien direct vers Outils" title="Lien direct vers Outils">​</a></h2><p>Maintenant, vous devez installer les outils dont vous avez besoin et pour ce faire, vous allez utiliser Chocolatey ! Donc, ajoutez à votre shell vagranfile les commandes suivantes :</p><div class="language-powershell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-powershell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">choco install git -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">choco install vscode -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">choco install hugo -y</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ces commandes installeront les outils respectifs, mais vous pouvez installer les outils dont vous avez besoin. La seule chose dont vous avez besoin est choco install "tool that you want" :) Notez, que le -y est pour répondre Oui aux questions posées par le processus d'installation ;</p><p>Donc, notre fichier Vagrant semble être complet ! Voyons donc à quoi il ressemble avec tout ce qui a été installé :</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="vagrantfile">Vagrantfile<a href="#vagrantfile" class="hash-link" aria-label="Lien direct vers Vagrantfile" title="Lien direct vers Vagrantfile">​</a></h2><div class="language-ruby codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-ruby codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># -*- mode: ruby -*-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># vi: set ft=ruby :</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vagrant.configure("2") do |config|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box = "mcree/win2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.box_version = "1.0.1584095692"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provider "virtualbox" do |v|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.name = "Windows Server 2019"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    v.memory = "2048"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  wvm.vm.define "Windows Server 2019" do |web|</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    web.vm.hostname = "winserver19"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    web.vm.network "public_network"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  end</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  config.vm.provision "shell", inline: &lt;&lt;-SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Set-ExecutionPolicy Bypass -Scope Process -orce; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install git -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install vscode -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    choco install hugo -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  SHELL</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">end</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div>]]></content:encoded>
            <category>devops</category>
            <category>virtualization</category>
        </item>
        <item>
            <title><![CDATA[Ecrire un tuto agréable à lire]]></title>
            <link>https://baditboys.netlify.app/fr/blog/writetips</link>
            <guid>https://baditboys.netlify.app/fr/blog/writetips</guid>
            <pubDate>Tue, 28 Apr 2020 18:49:31 GMT</pubDate>
            <description><![CDATA[Salut à tous,]]></description>
            <content:encoded><![CDATA[<p>Salut à tous,</p><p>Voici comment je procède pour écrire des articles techniques, afin de les rendre lisibles, et utiles pour le futur moi qui veut se souvenir comment utiliser cette techno dont j'ai écrit un article il y a plusieurs mois.</p><p>Tu viens juste de lire l'introduction. Je commence par une introduction, car mon thème prend ce texte comme résumé dans la première page.</p><p>Voici le début de mon fichier taxonomies.md:</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important">*archetype de posts*</span><br></span><span class="token-line" style="color:#393A34"><span class="token title important"></span><span class="token title important punctuation" style="color:#393A34">--</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Aujourd'hui, en français, je souhaite aborder le sujet des archétypes du moteur de génération de site Hugo. Ce moteur très performant est d'ailleurs utilisé pour générer ces pages.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic">&lt;!--truncate--&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Certains thèmes comprennent la "balise more", donc elle termine mon intro.</p><p>Je peux terminer mon intro après le <code>&lt;!-- more --&gt;</code> si je pense qu'elle doit être complétée.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="titres">Titres<a href="#titres" class="hash-link" aria-label="Lien direct vers Titres" title="Lien direct vers Titres">​</a></h2><p>Je continue le post en utilisant les titres. Je pense que les titres sont importants, car ils nous permettent de comprendre la structure de l'article, et permettent aux "utilisateurs expérimentés" d'aller directement à la section qui les intéresse.</p><p>Sur mon précédent article, sur les archétypes, mes titres étaient:</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> archetypes/Default.md</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(...)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> archetypes/mon_mien.md</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">(...)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>J'aurais pu utiliser une structure plus complexe en utilisant le deuxième ou le troisième niveau de titres</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> First level</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">##</span><span class="token title important"> Second level</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">###</span><span class="token title important"> Third level</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ce code apparaitra ainsi sur le blog :</p><hr><h3 class="anchor anchorWithStickyNavbar_LWe7" id="first-level">First level<a href="#first-level" class="hash-link" aria-label="Lien direct vers First level" title="Lien direct vers First level">​</a></h3><p>blablabla</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="second-level">Second level<a href="#second-level" class="hash-link" aria-label="Lien direct vers Second level" title="Lien direct vers Second level">​</a></h4><p>blablabla expliqué</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="third-level">Third level<a href="#third-level" class="hash-link" aria-label="Lien direct vers Third level" title="Lien direct vers Third level">​</a></h5><p>blablabla détail</p><hr><p>C'est important d'utiliser les titres sur vos tutos. Parfois, les lecteurs lisent plus d'un article en même temps, et il est plus facile pour eux de passer à la partie suivante lorsque les titres organisent la page.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="bout-dcode">Bout d'code<a href="#bout-dcode" class="hash-link" aria-label="Lien direct vers Bout d'code" title="Lien direct vers Bout d'code">​</a></h2><p>Il existe deux types de méthodes pour mettre du code en markdown:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="code-dans-un-ligne-de-texte">code dans un ligne de texte<a href="#code-dans-un-ligne-de-texte" class="hash-link" aria-label="Lien direct vers code dans un ligne de texte" title="Lien direct vers code dans un ligne de texte">​</a></h3><p>C'est quand tu utilises la balise "code" <code>``` 'my code is cool' ```</code> dans la même ligne que le texte que tu écris.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="isolement-des-lignes-de-codes">Isolement des lignes de codes<a href="#isolement-des-lignes-de-codes" class="hash-link" aria-label="Lien direct vers Isolement des lignes de codes" title="Lien direct vers Isolement des lignes de codes">​</a></h3><p>Il s'agit de présenter son code ainsi :</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token code punctuation" style="color:#393A34">```</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code code-block">my code is cool</span><span class="token code"></span><br></span><span class="token-line" style="color:#393A34"><span class="token code"></span><span class="token code punctuation" style="color:#393A34">```</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Le code est alors isolé dans son propre paragraphe.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mon-avis-sur-la-question">Mon avis sur la question<a href="#mon-avis-sur-la-question" class="hash-link" aria-label="Lien direct vers Mon avis sur la question" title="Lien direct vers Mon avis sur la question">​</a></h3><p>Utilisez toujours le second. Pour une raison simple: <strong>les gens utilisent le copier/coller</strong>. Et il est tellement plus facile de copier coller un code sur une ligne isolée.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="astuces-en-vrac">Astuces en vrac<a href="#astuces-en-vrac" class="hash-link" aria-label="Lien direct vers Astuces en vrac" title="Lien direct vers Astuces en vrac">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="bullet-points">Bullet points<a href="#bullet-points" class="hash-link" aria-label="Lien direct vers Bullet points" title="Lien direct vers Bullet points">​</a></h3><ul><li>Ne pas</li><li>les utiliser</li><li>n'importe</li><li>comment</li></ul><p>Ne les utilisez que lorsque c'est pertinent, c'est à dire dans deux cas :</p><ul><li>Pour une lite de trucs</li><li>Pour une liste de machins</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="utiliser-la-balise-citation-pour-les-citations">Utiliser la balise "citation" pour les citations<a href="#utiliser-la-balise-citation-pour-les-citations" class="hash-link" aria-label="Lien direct vers Utiliser la balise &quot;citation&quot; pour les citations" title="Lien direct vers Utiliser la balise &quot;citation&quot; pour les citations">​</a></h3><p>Utiliser les citations pour les citations. Je sais que ça sonne un peu stupide, mais tu pourrais vouloir utiliser le format "citation"  pour autre chose parce qu'il est joli. Ne le fais pas.</p><blockquote><p>Quote style is for quote - Dr. CssProvider</p></blockquote>]]></content:encoded>
            <category>hugo-tips</category>
        </item>
        <item>
            <title><![CDATA[Déployer Ubuntu avec vagrant et virtualbox]]></title>
            <link>https://baditboys.netlify.app/fr/blog/ubuntu</link>
            <guid>https://baditboys.netlify.app/fr/blog/ubuntu</guid>
            <pubDate>Mon, 27 Apr 2020 15:18:01 GMT</pubDate>
            <description><![CDATA[Déployer Ubuntu avec vagrant et virtualbox]]></description>
            <content:encoded><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="déployer-ubuntu-avec-vagrant-et-virtualbox">Déployer Ubuntu avec vagrant et virtualbox<a href="#déployer-ubuntu-avec-vagrant-et-virtualbox" class="hash-link" aria-label="Lien direct vers Déployer Ubuntu avec vagrant et virtualbox" title="Lien direct vers Déployer Ubuntu avec vagrant et virtualbox">​</a></h2><p>Ce post vous expliquera comment déployer une machine Ubuntu très facilement et rapidement !</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="quest-ce-dont-vous-avez-besoin-">Qu'est-ce dont vous avez besoin ?<a href="#quest-ce-dont-vous-avez-besoin-" class="hash-link" aria-label="Lien direct vers Qu'est-ce dont vous avez besoin ?" title="Lien direct vers Qu'est-ce dont vous avez besoin ?">​</a></h3><p>Nous utiliserons 2 outils pour rendre le déploiement de la vm Ubuntu très rapide !</p><p>Ces outils sont Vagrant et Virtual Box.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Lien direct vers Installation" title="Lien direct vers Installation">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="par-téléchargement">Par téléchargement<a href="#par-téléchargement" class="hash-link" aria-label="Lien direct vers Par téléchargement" title="Lien direct vers Par téléchargement">​</a></h4><p>Notez que vous devez choisir le système d'exploitation où vous souhaitez installer l'outil (Linux, Windows, etc...)</p><ul><li><p>Vagrant -&gt; <a href="https://www.vagrantup.com/downloads.html" target="_blank" rel="noopener noreferrer">téléchargez Vagrant</a></p></li><li><p>Virtual Box -&gt; <a href="https://www.virtualbox.org/wiki/Downloads" target="_blank" rel="noopener noreferrer">téléchargez Virtualbox</a></p></li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="en-utilisant-la-gestion-de-paquets">En utilisant la gestion de paquets<a href="#en-utilisant-la-gestion-de-paquets" class="hash-link" aria-label="Lien direct vers En utilisant la gestion de paquets" title="Lien direct vers En utilisant la gestion de paquets">​</a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="windows---chocolatey">Windows - Chocolatey<a href="#windows---chocolatey" class="hash-link" aria-label="Lien direct vers Windows - Chocolatey" title="Lien direct vers Windows - Chocolatey">​</a></h5><p>Pour commencer, vous devez installer Chocolatey. J'ai un post qui explique comment le faire correctement ici -&gt;
Maintenant que vous avez installé Chocolatey, utilisons-le.
Commençons avec VirtualBox, utilisez donc la commande suivante :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">choco </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> virtualbox</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et maintenant Vagrant :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">choco </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vagrant</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h5 class="anchor anchorWithStickyNavbar_LWe7" id="linux---apt">Linux - apt<a href="#linux---apt" class="hash-link" aria-label="Lien direct vers Linux - apt" title="Lien direct vers Linux - apt">​</a></h5><p>C'est le même concept que <strong>choco install</strong> mais pour Linux bien sûr.
Donc, pour Linux, nous utiliserons <strong>apt install</strong>.
Pour VirtualBox :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> virtualbox</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Pour Vagrant :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> vagrant</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="déploiement">Déploiement<a href="#déploiement" class="hash-link" aria-label="Lien direct vers Déploiement" title="Lien direct vers Déploiement">​</a></h3><p>Donc, premièrement nous avons besoin de la boîte Vagrant (n'oubliez pas de consulter le post Vagrant sur la page pour en apprendre un peu plus sur les boîtes Vagrant). Pour cet exemple, nous utiliserons <a href="https://app.vagrantup.com/ubuntu/boxes/bionic64" target="_blank" rel="noopener noreferrer">Ubuntu 18.04 LTS</a></p><p>Maintenant, sur votre machine locale, accédez à votre terminal, créez un dossier pour votre box Vagrant et, à l'intérieur de votre nouveau dossier, tapez :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant init ubuntu/bionic64</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>En faisant cela, vous ajouterez la box à votre Vagrant local.
Et maintenant, créons notre machine virtuelle Ubuntu ! Tapez donc dans votre terminal :</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">vagrant up</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Et voilà ! Votre première machine Ubuntu fraîche et propre !</p>]]></content:encoded>
            <category>ubuntu</category>
            <category>vm</category>
        </item>
        <item>
            <title><![CDATA[Utiliser les archetypes]]></title>
            <link>https://baditboys.netlify.app/fr/blog/archetypes</link>
            <guid>https://baditboys.netlify.app/fr/blog/archetypes</guid>
            <pubDate>Fri, 17 Apr 2020 12:49:31 GMT</pubDate>
            <description><![CDATA[Aujourd'hui, en français, je souhaite aborder le sujet des archétypes du moteur de génération de site Hugo.]]></description>
            <content:encoded><![CDATA[<p>Aujourd'hui, en français, je souhaite aborder le sujet des archétypes du moteur de génération de site Hugo.
Ce moteur très performant est d'ailleurs utilisé pour générer ces pages.</p><p>Les archétypes sont les éléments qui permettent de générer les entêtes de page Hugo, lorsqu'on les créées avec la commande <code>hugo new my_file.md</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="archetypesdefaultmd">archetypes/Default.md<a href="#archetypesdefaultmd" class="hash-link" aria-label="Lien direct vers archetypes/Default.md" title="Lien direct vers archetypes/Default.md">​</a></h2><p>Le default.md présent dans l'archétype s'applique à tous les "new hugo" que vous allez créer.
Ce default.md est personnalisable, comme vu dans l'article précédent, <em>Gérer du contenu dans un site Hugo</em>, mais il peut également être également multiplié.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="archetypesmon_mienmd">archetypes/mon_mien.md<a href="#archetypesmon_mienmd" class="hash-link" aria-label="Lien direct vers archetypes/mon_mien.md" title="Lien direct vers archetypes/mon_mien.md">​</a></h2><p>Imaginons le cas d'un site d'ESN (au hasard ;) ), dans lequel on trouvera une page d'accueil, un certains nombre de page 'Produits', de page 'Offres' et une page 'blog'.</p><p>il suffira de créer, dans le folder <em>archetypes</em>, trois fichiers :</p><ul><li>produit.md</li><li>offre.md</li><li>post.md</li></ul><p>ces trois fichiers contiendront les archétypes adequat en fonction du type de page.</p><p>Il est très simple d'appliquer un archétype à une page : l'archétype doit posséder le même nom que le répertoire hébergeant le type de page !</p><p>par exemple, pour créer une page produit, un page offre et un article de blog, nous utiliserons ces trois commandes :</p><div class="language-md codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-md codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Nouvelle page produit</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hugo new produit/eaviz.md</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Nouvelle offre Marte</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hugo new offre/expert_ansible.md</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token title important punctuation" style="color:#393A34">#</span><span class="token title important"> Nouvel article de blog</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">hugo new post/gestion_archetype.md</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="gestion-des-thèmes">Gestion des thèmes<a href="#gestion-des-thèmes" class="hash-link" aria-label="Lien direct vers Gestion des thèmes" title="Lien direct vers Gestion des thèmes">​</a></h2><p>A l'instar du config.toml de la section <em>exampleSite</em> d'un thème, je vous conseille vivement de repartir du ou des archetypes proposés par un thème.
Ca permettra de connaitre les bons répertoires de travail pour voir apparaitre vos pages aux endroits prévus par le thème.</p>]]></content:encoded>
            <category>hugo-tips</category>
        </item>
        <item>
            <title><![CDATA[Gérer du contenu dans un site Hugo]]></title>
            <link>https://baditboys.netlify.app/fr/blog/content_management</link>
            <guid>https://baditboys.netlify.app/fr/blog/content_management</guid>
            <pubDate>Tue, 14 Apr 2020 09:39:30 GMT</pubDate>
            <description><![CDATA[Cet article a l'objectif très simple de démystifier les éléments qu'on souhaite avoir sur le site (image dans les articles, avatar, etc.). C'est d'autant plus subtil que le comportement qu'on obtient avec Hugo en tant que serveur web, un site Hugo déployé sour gitlab Pages ou un cluster cloud ne sont pas les mêmes en fonction du standard que l'on choisit d'appliquer.]]></description>
            <content:encoded><![CDATA[<p>Cet article a l'objectif très simple de démystifier les éléments qu'on souhaite avoir sur le site (image dans les articles, avatar, etc.). C'est d'autant plus subtil que le comportement qu'on obtient avec Hugo en tant que serveur web, un site Hugo déployé sour gitlab Pages ou un cluster cloud ne sont pas les mêmes en fonction du standard que l'on choisit d'appliquer.</p><p>Le but de ce post est d'éclairer la manière de procéder pour faciliter la création de post.</p><p>*Disclaimer : le tutoriel officiel est <strong><em>très mauvais</em></strong> dans le cas d'un site que l'on souhaite déployer sous gitlab Pages !*</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="gestion-des-pages">Gestion des pages<a href="#gestion-des-pages" class="hash-link" aria-label="Lien direct vers Gestion des pages" title="Lien direct vers Gestion des pages">​</a></h2><p>Dans le cadre d'un site en mode blog, c'est relativement simple.</p><p>La commande <code>hugo new &lt;repertoire&gt;/&lt;nom d'article&gt;.md</code> permet d'ajouter des articles au format MD dans le dossier "répertoire". Usuellement, on utilisera "post" pour un blog.</p><hr><h3 class="anchor anchorWithStickyNavbar_LWe7" id="propriété-dun-page">Propriété d'un page<a href="#propriété-dun-page" class="hash-link" aria-label="Lien direct vers Propriété d'un page" title="Lien direct vers Propriété d'un page">​</a></h3><p>Les propriétés d'une page se gèrent dans l'entête des pages créées.
elle se retrouvent sous la forme suivante :</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">title: "mon article"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">date: AAAA/MM/DD/THH:MM:SS</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">draft: true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Il s'agit du standard généré par Hugo. Deux éléments sont à noter :</p><ol><li>Dans un déploiement dans gitlab, seule les pages "draft: false" s'affichent. Les pages "draft: true" sont ignorées lors du build du site. Il est alors possible de builder un site en local (avec l'option -D pour draft) et tester certaines pages tout en profitant de l'hébergement gitlab.</li><li>La version de base peut être complétée avec d'autres informations concernant la page créée :</li></ol><ul><li>subtitle: pour ajouter un sous-titre</li><li>tags: permet d'ajouter des tags à un article</li><li>categories: permet de catégoriser les articles</li></ul><p>Bref, rien de foufou, mais c'est utile. Ainsi, l'entête de l'article que vous êtes en train de lire est :</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">title: "Gérer du contenu dans un site Hugo"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">date: 2020-04-14T09:39:30Z</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">draft: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">subtitle: "Comment gérer du contenu dans un site statique généré par Hugo"</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tags:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- français</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- hugo-tips</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">categories:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">- hugo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">---</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><hr><h3 class="anchor anchorWithStickyNavbar_LWe7" id="gestion-des-images">Gestion des images<a href="#gestion-des-images" class="hash-link" aria-label="Lien direct vers Gestion des images" title="Lien direct vers Gestion des images">​</a></h3><p>Pour gérer les images affichées dans un article, voici la solution que je propose, et qui a l'avantage de marcher avec hugo en local, mais également avec un déploiement gitlab :</p><ol><li>Créer un sous-dossier "images" dans le répertoire "content"</li><li>Y déposer les images que vous souhaitez faire apparaitre dans votre article</li><li>ajouter <code>![texte alternatif](../../images/mon_image.jpg)</code> dans votre article, à l'endroit où vous souhaitez faire apparaitre l'image.</li></ol><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="gérer-le-contenu-liés-aux-thèmes-photos-de-fond-avatars-etc">Gérer le contenu liés aux thèmes (photos de fond, avatars, etc.)<a href="#gérer-le-contenu-liés-aux-thèmes-photos-de-fond-avatars-etc" class="hash-link" aria-label="Lien direct vers Gérer le contenu liés aux thèmes (photos de fond, avatars, etc.)" title="Lien direct vers Gérer le contenu liés aux thèmes (photos de fond, avatars, etc.)">​</a></h2><p>Dans ces cas là, la gestion des images locales peut être compliquées à gérer si on souhaite que le fonctionnement soit identique que l'on utilise le moteur hugo en local ou dans la version Gitlab Pages.</p><p>C'est pour cette raison que je propose de le gérer de la manière suivante :</p><p>Créer un répertoire appelé "static" à la racine de votre site. Placez-y directement les images que vous souhaitez utiliser, sans les mettre dans un sous-répertoire. Elles seront alors utilisables dans votre fichier de paramétrage config.toml en donnant simplement leur nom.</p>]]></content:encoded>
            <category>hugo-tips</category>
        </item>
        <item>
            <title><![CDATA[Démarrer Hugo avec gitlab CI/CD]]></title>
            <link>https://baditboys.netlify.app/fr/blog/hugo</link>
            <guid>https://baditboys.netlify.app/fr/blog/hugo</guid>
            <pubDate>Sat, 11 Apr 2020 21:03:59 GMT</pubDate>
            <description><![CDATA[Pour être honnête, je n'étais pas certain de découvrir le meilleur framework pour site internet lorsque j'ai débuté avec Hugo.]]></description>
            <content:encoded><![CDATA[<p>Pour être honnête, je n'étais pas certain de découvrir le meilleur framework pour site internet lorsque j'ai débuté avec Hugo.
Ceci étant, utiliser des fichiers Markdown, un temps de build très permformant pour n'avoir qu'à héberger des fichiers html statique et la possibilité de produire le site sur gitlab CI/CD, ça avait de quoi m'attirer !</p><p>Mais vous devez faire attention, car le quickstart de la doc officielle n'est pas compatible avec un déploiement sur Gitlab Pages.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="comment-démarrer-rapidement-avec-hugo">Comment démarrer rapidement avec hugo<a href="#comment-démarrer-rapidement-avec-hugo" class="hash-link" aria-label="Lien direct vers Comment démarrer rapidement avec hugo" title="Lien direct vers Comment démarrer rapidement avec hugo">​</a></h2><p>Voici comment mieux commencer avec Hugo selon moi :</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-1---sélection-du-thème">étape 1 - Sélection du thème<a href="#étape-1---sélection-du-thème" class="hash-link" aria-label="Lien direct vers étape 1 - Sélection du thème" title="Lien direct vers étape 1 - Sélection du thème">​</a></h3><p>Tout d'abord, choisissez <strong><em>attentivement</em></strong> le thème que vous souhaitez utiliser. C'est important car la façon dont vous allez configurer votre site Web peut être (très) spécifique à votre thème.</p><p>Pour choisir judicieusement, il suffit d'aller sur <a href="https://themes.gohugo.io" target="_blank" rel="noopener noreferrer">themes.gohugo.io</a> et de regarder la démo de ceux qui vous intéressent.
Toutes les démos intègrent la restitution de la syntaxe markdown, ce qui permet de s'assurer que le thème répond à vos souhaits!</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-2---nom-du-site-web">étape 2 - Nom du site Web<a href="#étape-2---nom-du-site-web" class="hash-link" aria-label="Lien direct vers étape 2 - Nom du site Web" title="Lien direct vers étape 2 - Nom du site Web">​</a></h3><p>Deuxièmement, choisissez le nom du site Web.
Ce doit être le nom du dossier. lorsque vous déploierez votre site Web sur les pages gitlab, vous auriez le site Web suivant <code> URL: http://username.gitlab.io/foldername/</code></p><p>Si vous créez un blog, "blog" serait un bon nom. Si vous êtes sur le site Web pour proposer un produit, "productName" serait pertinent.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-3---création-de-site-web">Étape 3 - Création de site Web<a href="#étape-3---création-de-site-web" class="hash-link" aria-label="Lien direct vers Étape 3 - Création de site Web" title="Lien direct vers Étape 3 - Création de site Web">​</a></h3><p>C'est la partie la plus simple du tutoriel. Il suffit simplement de saisir la commande suivante:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">hugo new site </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">nom_dossier</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Maintenant, vous avez un nouveau dossier appelé <em>nom_dossier</em> avec des éléments. Avant de faire quoi que ce soit, suivez l'étape suivante. N'ENTREZ PAS DANS LE NOUVEAU DOSSIER</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-4---téléchargement-du-thème">Étape 4 - Téléchargement du thème<a href="#étape-4---téléchargement-du-thème" class="hash-link" aria-label="Lien direct vers Étape 4 - Téléchargement du thème" title="Lien direct vers Étape 4 - Téléchargement du thème">​</a></h3><p>Allez sur le repository du thème choisi et NE CLONEZ PAS le référentiel git. Récupérez le fichier zip et décompressez-le sur <em>nom_dossier/themes/nom_thème</em>. (Oui, cette fois, vous entrez dans le <em>nom_dossier</em>)</p><p>Attention, le contenu du thème doit être sur <em>nom_thème</em>, pas sur <em>nom_thème/hugo-theme-name-master</em>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-5---utilisez-examplesite-comme-modèle">étape 5 - Utilisez exampleSite comme modèle<a href="#étape-5---utilisez-examplesite-comme-modèle" class="hash-link" aria-label="Lien direct vers étape 5 - Utilisez exampleSite comme modèle" title="Lien direct vers étape 5 - Utilisez exampleSite comme modèle">​</a></h3><p>Copiez le <em>nom_thème/exampleSite/config.toml</em> directement sur votre <em>nom de dossier</em>, en remplaçant celui créé en standard.</p><p>Sur le fichier config.toml, modifiez la ligne de sélection de thème en</p><div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">theme = "&lt;nom_thème&gt;"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Puisque vous souhaitez utiliser hugo avec les pages gitlab, vous devez également modifier le <em>baseURL</em> sur config.toml:</p><div class="language-toml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-toml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">baseurl = "https://&lt;username&gt;.gitlab.io/&lt;foldername&gt;"</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="déploiement-de-pages-gitlab">Déploiement de pages Gitlab<a href="#déploiement-de-pages-gitlab" class="hash-link" aria-label="Lien direct vers Déploiement de pages Gitlab" title="Lien direct vers Déploiement de pages Gitlab">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="attention">Attention<a href="#attention" class="hash-link" aria-label="Lien direct vers Attention" title="Lien direct vers Attention">​</a></h3><p>NE RIEN FAIRE DANS GIT! Vous allez créer un projet gitlab que vous initierez avec votre <em>foldername</em></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-6---créer-un-projet-gitlab">étape 6 - Créer un projet gitlab<a href="#étape-6---créer-un-projet-gitlab" class="hash-link" aria-label="Lien direct vers étape 6 - Créer un projet gitlab" title="Lien direct vers étape 6 - Créer un projet gitlab">​</a></h3><p>Sur gitlab, créez un nouveau projet, du même nom que votre dossier. Ne l'initialisez pas avec un fichier readme ou autre chose.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-7---créez-votre-fichier-ci">étape 7 - Créez votre fichier CI<a href="#étape-7---créez-votre-fichier-ci" class="hash-link" aria-label="Lien direct vers étape 7 - Créez votre fichier CI" title="Lien direct vers étape 7 - Créez votre fichier CI">​</a></h3><p>Allez sur le nom de votre dossier, et créez un fichier appelé <code>.gitlab-ci.yml</code></p><p>Modifiez le fichier avec le code suivant:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> monachus/hugo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">variables</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">GIT_SUBMODULE_STRATEGY</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> recursive</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">pages</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">script</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> hugo</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">artifacts</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">paths</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> public</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">only</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> master</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-8---poussez-votre-site-web">étape 8 - Poussez votre site Web<a href="#étape-8---poussez-votre-site-web" class="hash-link" aria-label="Lien direct vers étape 8 - Poussez votre site Web" title="Lien direct vers étape 8 - Poussez votre site Web">​</a></h3><p>Tout d'abord, lancez le repo:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> init</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Ensuite, ajoutez le répertoire /public au fichier .gitignore</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/public"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> .gitignore</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Enfin, validez et pushez le code sur la branche principale</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> </span><span class="token builtin class-name">.</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> commit -m </span><span class="token string" style="color:#e3116c">"Initial commit"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> remote </span><span class="token function" style="color:#d73a49">add</span><span class="token plain"> origin https://gitlab.com/YourUsername/your-hugo-site.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> push -u origin master</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copier le code" title="Copier" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg class="copyButtonIcon_y97N" viewBox="0 0 24 24"><path d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg class="copyButtonSuccessIcon_LjdS" viewBox="0 0 24 24"><path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="étape-9---see--wait">étape 9 - See &amp; Wait<a href="#étape-9---see--wait" class="hash-link" aria-label="Lien direct vers étape 9 - See &amp; Wait" title="Lien direct vers étape 9 - See &amp; Wait">​</a></h3><p>Allez dans l'onglet "CI / CD pipeline" de votre repository gitlab</p><p>Surveillez l'étape de build et attendez qu'elle soit passée. Vous y êtes ! Votre site Web est publié sur <em>username</em>.gitlab.io/<em>foldername</em></p>]]></content:encoded>
            <category>gitops</category>
            <category>devops</category>
            <category>hugo-tips</category>
        </item>
        <item>
            <title><![CDATA[A propos]]></title>
            <link>https://baditboys.netlify.app/fr/blog/aboutthepage</link>
            <guid>https://baditboys.netlify.app/fr/blog/aboutthepage</guid>
            <pubDate>Wed, 01 Jan 2020 13:18:41 GMT</pubDate>
            <description><![CDATA[Bonjour à tous,]]></description>
            <content:encoded><![CDATA[<p>Bonjour à tous,</p><p>Merci de votre visite sur notre blog généraliste sur les outils d'IT. On y parle Vagrant, Ansible, Docker, Git, CI/CD, etc.
Il s'agit simplement d'un support pour formaliser les activités de veilles de deux bad it boys !</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="a-propos-du-site">A propos du site:<a href="#a-propos-du-site" class="hash-link" aria-label="Lien direct vers A propos du site:" title="Lien direct vers A propos du site:">​</a></h2><p>Voici quelques information techniques au sujet de ce site</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="la-stack">La Stack<a href="#la-stack" class="hash-link" aria-label="Lien direct vers La Stack" title="Lien direct vers La Stack">​</a></h3><p><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159006/baditboys/posts_content/f7ac3d60-dfac-11e9-8e48-eb53c00d5867-jamstack_xuqjff_lx01df.webp" alt="jamstack icone" class="img_ev3q"></p><p>Pour mettre à dispo nos articles, nous utilisons la JAMstack: Javascript, Apis, Mark-up languages.</p><p>Plus précisemment, notre stack se compose des outils suivants:</p><p><a href="https://www.markdownguide.org/" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159098/baditboys/posts_content/markdown-512_c2efvu_irbmec.webp" alt="Markdown" class="img_ev3q"></a> <!-- -->&nbsp;<!-- -->&nbsp;<a href="https://cloudinary.com/" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159961/baditboys/posts_content/cloudinary-icon_ttaqxl.webp" alt="Cloudinary" class="img_ev3q"></a> <!-- -->&nbsp;<!-- -->&nbsp;<a href="https://gohugo.io/" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159203/baditboys/posts_content/29385237_ewmdwe_iefpyv.webp" alt="Hugo" class="img_ev3q"></a> <!-- -->&nbsp;<!-- -->&nbsp;<a href="https://gitlab.com" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159283/baditboys/posts_content/1108px-GitLab_Logo.svg_kdo5im_sgbbt3.webp" alt="Gitlab" class="img_ev3q"></a> <!-- -->&nbsp;<!-- --> <a href="https://www.netlify.com/" target="_blank" rel="noopener noreferrer"><img loading="lazy" src="https://res.cloudinary.com/j0rdan-m/image/upload/v1597159345/baditboys/posts_content/netlify-logo-758722CDF4-seeklogo.com_bmlufe_fiqpm4.webp" alt="Netlify" class="img_ev3q"></a></p><p>Nous rédigeons nos articles en Markdown, en stockant et partageant nos images sur Cloudinary. Le blog est ensuite construit avec hugo, puis il est testé et déployé sur Netlify grâce à Gitlab CI/CD.</p><p>Ce qui donne le workflow suivant:</p><p>{{<!-- -->}}</p>]]></content:encoded>
        </item>
    </channel>
</rss>