1<!DOCTYPE html> 2<html lang="fr"> 3<head> 4 <meta charset="utf-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 6 <title>devops - STRANIX.net</title> 7 <link rel="preconnect" href="https://rsms.me" crossorigin /> 8 <link rel="stylesheet" href="https://rsms.me/inter/inter.css" /> 9 <link rel="preconnect" href="https://fonts.googleapis.com" /> 10 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 11 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;600;700&display=swap" /> 12 <link rel="stylesheet" type="text/css" href="/assets/built/screen.css?v=5cf00d3149" /> 13 <link rel="canonical" href="https://stranix.net/tag/devops/"> 14 <meta name="referrer" content="no-referrer-when-downgrade"> 15 16 <meta property="og:site_name" content="STRANIX.net"> 17 <meta property="og:type" content="website"> 18 <meta property="og:title" content="devops - STRANIX.net"> 19 <meta property="og:url" content="https://stranix.net/tag/devops/"> 20 <meta property="og:image" content="https://stranix.net/content/images/size/w1200/2026/02/gilles1.png"> 21 <meta name="twitter:card" content="summary_large_image"> 22 <meta name="twitter:title" content="devops - STRANIX.net"> 23 <meta name="twitter:url" content="https://stranix.net/tag/devops/"> 24 <meta name="twitter:image" content="https://stranix.net/content/images/size/w1200/2026/02/gilles1.png"> 25 <meta name="twitter:site" content="@stranix_79"> 26 <meta property="og:image:width" content="1200"> 27 <meta property="og:image:height" content="465"> 28 29
29<script type="application/ld+json"> 30{ 31 "@context": "https://schema.org", 32 "@type": "Series", 33 "publisher": { 34 "@type": "Organization", 35 "name": "STRANIX.net", 36 "url": "https://stranix.net/", 37 "logo": { 38 "@type": "ImageObject", 39 "url": "https://stranix.net/content/images/2026/02/stranix-avatar.png", 40 "width": 60, 41 "height": 60 42 } 43 }, 44 "url": "https://stranix.net/tag/devops/", 45 "name": "devops", 46 "mainEntityOfPage": "https://stranix.net/tag/devops/" 47} 48 </script>
48 49 50 <meta name="generator" content="Ghost 6.45"> 51 <link rel="alternate" type="application/rss+xml" title="STRANIX.net" href="https://stranix.net/rss/"> 52
52<script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.69/umd/portal.min.js" data-i18n="true" data-ghost="https://stranix.net/" data-key="359b251e2963557c1fbbfb148c" data-api="https://stranix.net/ghost/api/content/" data-locale="fr" crossorigin="anonymous"></script>
52<style id="gh-members-styles">.gh-post-upgrade-cta-content, 53.gh-post-upgrade-cta { 54 display: flex; 55 flex-direction: column; 56 align-items: center; 57 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; 58 text-align: center; 59 width: 100%; 60 color: #ffffff; 61 font-size: 16px; 62} 63 64.gh-post-upgrade-cta-content { 65 border-radius: 8px; 66 padding: 40px 4vw; 67} 68 69.gh-post-upgrade-cta h2 { 70 color: #ffffff; 71 font-size: 28px; 72 letter-spacing: -0.2px; 73 margin: 0; 74 padding: 0; 75} 76 77.gh-post-upgrade-cta p { 78 margin: 20px 0 0; 79 padding: 0; 80} 81 82.gh-post-upgrade-cta small { 83 font-size: 16px; 84 letter-spacing: -0.2px; 85} 86 87.gh-post-upgrade-cta a { 88 color: #ffffff; 89 cursor: pointer; 90 font-weight: 500; 91 box-shadow: none; 92 text-decoration: underline; 93} 94 95.gh-post-upgrade-cta a:hover { 96 color: #ffffff; 97 opacity: 0.8; 98 box-shadow: none; 99 text-decoration: underline; 100} 101 102.gh-post-upgrade-cta a.gh-btn { 103 display: block; 104 background: #ffffff; 105 text-decoration: none; 106 margin: 28px 0 0; 107 padding: 8px 18px; 108 border-radius: 4px; 109 font-size: 16px; 110 font-weight: 600; 111} 112 113.gh-post-upgrade-cta a.gh-btn:hover { 114 opacity: 0.92; 115}</style> 116
116<script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="359b251e2963557c1fbbfb148c" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://stranix.net/" data-locale="fr" crossorigin="anonymous"></script>
116 117 118 <link href="https://stranix.net/webmentions/receive/" rel="webmention"> 119
119<script defer src="/public/cards.min.js?v=5cf00d3149"></script>
119 120 <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=5cf00d3149"> 121
121<script defer src="/public/member-attribution.min.js?v=5cf00d3149"></script>
121<style>:root {--ghost-accent-color: #F5842A;}</style> 122 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"> 123</head> 124<body class="tag-template tag-devops"> 125 <header class="site-head"> 126 <div class="wrap head-inner"> 127 <a class="brand" href="https://stranix.net"> 128 <img class="brand-logo" src="https://stranix.net/content/images/2026/02/stranix-avatar.png" alt="STRANIX.net" /> 129 <span class="brand-name">stranix<span class="dim">.net</span></span> 130 </a> 131 <div class="head-right"> 132 <nav class="nav-main"> 133 <ul class="nav"> 134 <li class="nav-accueil"><a href="https://stranix.net/">Accueil</a></li> 135 <li class="nav-a-propos"><a href="https://stranix.net/about/">à propos</a></li> 136 <li class="nav-apps"><a href="https://apps.stranix.net">Apps</a></li> 137 <li class="nav-cheatsheets"><a href="https://stranix.net/cheatsheets/">Cheatsheets</a></li> 138</ul> 139 140 </nav> 141 <nav class="socials" aria-label="Réseaux"> 142 <a href="https://x.com/stranix_79" target="_blank" rel="me noopener" aria-label="X (Twitter)"> 143 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24h-6.657l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77Z"/></svg> 144 </a> 145 <a href="https://github.com/stranix79" target="_blank" rel="me noopener" aria-label="GitHub"> 146 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.605-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.5 11.5 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222 0 1.606-.014 2.898-.014 3.293 0 .322.216.694.825.576C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> 147 </a> 148 <a href="https://www.linkedin.com/in/fauviegilles/" target="_blank" rel="me noopener" aria-label="LinkedIn"> 149 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286ZM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065Zm1.782 13.019H3.555V9h3.564v11.452ZM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0Z"/></svg> 150 </a> 151</nav> 152 <a class="hub-badge" href="https://code79.com" target="_blank" rel="noopener">part of <b>code79.com</b></a> 153 </div> 154 </div> 155 </header> 156 157 <main class="site-main"> 158 159 160<section class="section"> 161 <div class="wrap"> 162 163 <div class="post-feed"> 164 <article class="card"> 165 <a class="card-link" href="/terraform-cloudflare-mes-dns-en-infrastructure-as-code-et-lunderscore-qui-ma-fait-peter-un-cable/"> 166 <div class="card-thumb"> 167 <img src="/content/images/size/w800/2026/07/tf-cf-cover.png" alt="Terraform + Cloudflare : mes DNS en Infrastructure as Code (et l'underscore qui m'a fait péter un câble)" loading="lazy" /> 168 </div> 169 <div class="card-body"> 170 <span class="card-tag">DNS</span> 171 <h3 class="card-title">Terraform + Cloudflare : mes DNS en Infrastructure as Code (et l'underscore qui m'a fait péter un câble)</h3> 172 <p class="card-excerpt">
172Gérer toute sa config DNS Cloudflare en Infrastructure as Code avec Terraform : mon retour d'expérience concret, avec le piège du token qui rend fou.</p> 173 <div class="card-meta">4 min read · 2 juil. 2026</div> 174 </div> 175 </a> 176</article> 177 <article class="card"> 178 <a class="card-link" href="/adieu-dyndns-gerer-vos-ip-dynamiques-avec-cloudflare-et-un-peu-de-script-magique/"> 179 <div class="card-thumb"> 180 <img src="/content/images/size/w800/2026/02/cloudflare-diagram.png" alt="Adieu DynDNS : Gérer vos IP dynamiques avec Cloudflare (et un peu de script magique)" loading="lazy" /> 181 </div> 182 <div class="card-body"> 183 <span class="card-tag">DNS</span> 184 <h3 class="card-title">Adieu DynDNS : Gérer vos IP dynamiques avec Cloudflare (et un peu de script magique)</h3> 185 <p class="card-excerpt">Bonjour, bande de hackers des internets ! 186 187Aujourdâhui, je vais vous montrer comment mettre à jour automatiquement votre</p> 188 <div class="card-meta">2 min read · 20 août 2025</div> 189 </div> 190 </a> 191</article> 192 <article class="card"> 193 <a class="card-link" href="/hashicorp-vault-enfin-une-video-claire-pedagogique-et-sexy-ou-presque/"> 194 <div class="card-thumb"> 195 <img src="/content/images/size/w800/2026/02/thumbnail_with_correct_stranix_logo.png" alt="HashiCorp Vault : enfin une vidéo claire, pédagogique et sexy (ou presque)" loading="lazy" /> 196 </div> 197 <div class="card-body"> 198 <span class="card-tag">News</span> 199 <h3 class="card-title">HashiCorp Vault : enfin une vidéo claire, pédagogique et sexy (ou presque)</h3> 200 <p class="card-excerpt">Bon, pour une fois, je vais faire un truc rare ici : ce contenu nâest pas de moi. Mais il est tellement bien fichu que j</p> 201 <div class="card-meta">2 min read · 27 mars 2025</div> 202 </div> 203 </a> 204</article> 205 <article class="card"> 206 <a class="card-link" href="/sssd-ldap-active-directory-authentification-centralisee-sous-linux-sans-peter-un-cable/"> 207 <div class="card-thumb"> 208 <img src="/content/images/size/w800/2026/02/ldap--1-.jpg" alt="SSSD + LDAP/Active Directory : Authentification Centralisée sous Linux (Sans Péter un Câble)" loading="lazy" /> 209 </div> 210 <div class="card-body"> 211 <span class="card-tag">Linux</span> 212 <h3 class="card-title">SSSD + LDAP/Active Directory : Authentification Centralisée sous Linux (Sans Péter un Câble)</h3> 213 <p class="card-excerpt">Tu en as marre de jongler entre des comptes utilisateurs sur chaque machine Linux de ton infra ? LDAP + SSSD, câest la s</p> 214 <div class="card-meta">3 min read · 17 mars 2025</div> 215 </div> 216 </a> 217</article> 218 <article class="card"> 219 <a class="card-link" href="/openvpn-en-docker-securiser-ses-services-sans-exposer-son-infra/"> 220 <div class="card-thumb"> 221 <img src="/content/images/size/w800/2026/02/IMG_1431.jpg" alt="OpenVPN en Docker : Sécuriser ses services sans exposer son infra" loading="lazy" /> 222 </div> 223 <div class="card-body"> 224 <span class="card-tag">devops</span> 225 <h3 class="card-title">OpenVPN en Docker : Sécuriser ses services sans exposer son infra</h3> 226 <p class="card-excerpt">Aujourdâhui, on va parler VPN. Mais pas de ces VPN commerciaux qui promettent lâanonymat et la liberté numérique tout en</p> 227 <div class="card-meta">3 min read · 12 mars 2025</div> 228 </div> 229 </a> 230</article> 231 </div> 232 <nav class="pagination"> 233 <span class="page-number">Page 1 of 1</span> 234</nav> 235 236 </div> 237</section> 238 239 </main> 240 241 <footer class="site-foot"> 242 <div class="wrap"> 243 <div class="foot-grid"> 244 <div> 245 <a class="brand" href="https://stranix.net"> 246 <img class="brand-logo" src="https://stranix.net/content/images/2026/02/stranix-avatar.png" alt="STRANIX.net" />
247 <span class="brand-name">stranix<span class="dim">.net</span></span> 248 </a> 249 <p class="foot-tag">La tech de terrain, sans langue de bois. Linux, PostgreSQL, DevOps & homelab.</p> 250 <nav class="socials" aria-label="Réseaux"> 251 <a href="https://x.com/stranix_79" target="_blank" rel="me noopener" aria-label="X (Twitter)"> 252 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24h-6.657l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77Z"/></svg> 253 </a> 254 <a href="https://github.com/stranix79" target="_blank" rel="me noopener" aria-label="GitHub"> 255 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.605-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.5 11.5 0 0 1 12 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222 0 1.606-.014 2.898-.014 3.293 0 .322.216.694.825.576C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg> 256 </a> 257 <a href="https://www.linkedin.com/in/fauviegilles/" target="_blank" rel="me noopener" aria-label="LinkedIn"> 258 <svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286ZM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065Zm1.782 13.019H3.555V9h3.564v11.452ZM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.225 0Z"/></svg> 259 </a> 260</nav> 261 </div> 262 <div> 263 <h4>L'écosystème</h4> 264 <a href="https://code79.com" target="_blank" rel="noopener"><b>code79.com</b> â l'atelier</a> 265 <a href="https://dbfactory.io" target="_blank" rel="noopener"><b>dbfactory.io</b> â PostgreSQL managé</a> 266 <a href="https://sygnet.app" target="_blank" rel="noopener"><b>sygnet.app</b> â sync de favoris</a> 267 </div> 268 <div> 269 <h4>Explorer</h4> 270 <a href="https://stranix.net">Tous les articles</a> 271 <a href="https://stranix.nettags/">Catégories</a> 272 <a href="https://stranix.net#/portal/signup" data-portal="signup">Newsletter</a> 273 </div> 274 </div> 275 <div class="foot-bottom"> 276 <span class="hosted">Conçu, hébergé & bichonné par <a href="https://code79.com" target="_blank" rel="noopener"><b>code79.com</b></a> â sans cloud US.</span> 277 <span>© 2026 STRANIX.net</span> 278 </div> 279 </div> 280 </footer> 281 282 <div style="text-align:center; font-size:20px;"> 283 <a href="https://instagram.com/stranix_79" target="_blank" style="margin:0 10px;"> 284 <i class="fab fa-instagram"></i> 285 </a> 286 <a href="https://www.linkedin.com/company/stranix-net" target="_blank" style="margin:0 10px;"> 287 <i class="fab fa-linkedin"></i> 288 </a> 289 <a href="https://github.com/stranix79" target="_blank" style="margin:0 10px;"> 290 <i class="fab fa-github"></i> 291 </a> 292</div> 293
293<script src="/assets/js/main.js?v=5cf00d3149"></script>
293 294 295
295<script> 296 window.dataLayer = window.dataLayer || []; 297 function gtag() { dataLayer.push(arguments); } 298 gtag('consent', 'default', { ad_storage: 'denied', ad_user_data: 'denied', ad_personalization: 'denied', analytics_storage: 'denied', wait_for_update: 500 }); 299 try { if (localStorage.getItem('sn-analytics') === 'granted') gtag('consent', 'update', { analytics_storage: 'granted' }); } catch (e) {} 300 </script>
vendor: 68 bytes, lines 300-301
300 301 <script async src="https://www.googletagmanager.com/gtag/js?id=
301G-VYSTEPJMS7
vendor: 16 bytes, lines 301-302
301"></script> 302
302<script> 303 gtag('js', new Date()); 304 gtag('config', 'G-VYSTEPJMS7', { anonymize_ip: true }); 305 </script>
305 306 <div id="sn-bar" class="sn-bar" hidden role="dialog" aria-label="Préférences de mesure d'audience"> 307 <p>On utilise Google Analytics pour comprendre l'audience du site. <a href="https://policies.google.com/privacy" target="_blank" rel="noopener">En savoir plus</a>.</p> 308 <div class="sn-actions"> 309 <button type="button" id="sn-no" class="sn-btn sn-ghost">Refuser</button> 310 <button type="button" id="sn-yes" class="sn-btn sn-primary">Accepter</button> 311 </div> 312 </div> 313 <style> 314 .sn-bar { position: fixed; left: 1rem; right: 1rem; bottom: max(1rem, env(safe-area-inset-bottom)); max-width: 520px; margin-inline: auto; background: #1c1b16; border: 1px solid #33322a; border-radius: 12px; padding: 1rem 1.1rem; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .8rem; z-index: 2147483000; pointer-events: auto; box-shadow: 0 18px 40px -20px rgba(0,0,0,.7); font-family: 'JetBrains Mono', ui-monospace, monospace; } 315 .sn-bar[hidden] { display: none !important; } 316 .sn-bar p { margin: 0; font-size: .8rem; color: #a39d8c; flex: 1 1 240px; line-height: 1.5; } 317 .sn-bar a { color: #f5842a; } 318 .sn-actions { display: flex; gap: .5rem; } 319 .sn-btn { font-family: inherit; font-size: .8rem; font-weight: 600; padding: .6rem 1rem; min-height: 44px; border-radius: 7px; cursor: pointer; pointer-events: auto; border: 1px solid #33322a; background: transparent; color: #ece7dc; } 320 .sn-ghost:hover { border-color: #f5842a; color: #f5842a; } 321 .sn-primary { background: #f5842a; color: #1a1206; border-color: #f5842a; } 322 </style> 323
323<script> 324 (function () { 325 var bar = document.getElementById('sn-bar'); if (!bar) return; 326 var choice = null; try { choice = localStorage.getItem('sn-analytics'); } catch (e) {} 327 if (!choice) bar.hidden = false; 328 function set(v) { try { localStorage.setItem('sn-analytics', v); } catch (e) {} bar.hidden = true; if (v === 'granted' && typeof gtag === 'function') gtag('consent', 'update', { analytics_storage: 'granted' }); } 329 var yes = document.getElementById('sn-yes'); var no = document.getElementById('sn-no'); 330 if (yes) yes.addEventListener('click', function () { set('granted'); }); 331 if (no) no.addEventListener('click', function () { set('denied'); }); 332 })(); 333 </script>
333 334</body> 335</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.