<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Substack de Emerson]]></title><description><![CDATA[O meu Substack pessoal]]></description><link>https://emersondominguescmara.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!0-mr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2206355d-462e-4d8f-a9c4-f75132b04954_144x144.png</url><title>Substack de Emerson</title><link>https://emersondominguescmara.substack.com</link></image><generator>Substack</generator><lastBuildDate>Thu, 21 May 2026 10:59:12 GMT</lastBuildDate><atom:link href="https://emersondominguescmara.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Emerson Domingues Câmara]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[emersondominguescmara@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[emersondominguescmara@substack.com]]></itunes:email><itunes:name><![CDATA[Emerson Domingues Câmara]]></itunes:name></itunes:owner><itunes:author><![CDATA[Emerson Domingues Câmara]]></itunes:author><googleplay:owner><![CDATA[emersondominguescmara@substack.com]]></googleplay:owner><googleplay:email><![CDATA[emersondominguescmara@substack.com]]></googleplay:email><googleplay:author><![CDATA[Emerson Domingues Câmara]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[GO HORSE ou simplesmente GH!]]></title><description><![CDATA[Uma metodologia muito utilizada ainda nos dias atuais.]]></description><link>https://emersondominguescmara.substack.com/p/go-horse-ou-simplesmente-gh</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/go-horse-ou-simplesmente-gh</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Thu, 14 May 2026 12:46:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!38uy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!38uy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!38uy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!38uy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!38uy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!38uy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!38uy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2567673,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/197679054?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!38uy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!38uy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!38uy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!38uy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9782e5f-26b3-481f-a9ba-ea801bf70c06_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>&#8220;Go Horse&#8221; (ou simplesmente &#8220;GH&#8221;) &#233; um termo usado no desenvolvimento de software para descrever uma abordagem extremamente apressada, bagun&#231;ada e sem planejamento. &#201; o oposto completo de metodologias &#225;geis bem aplicadas, boas pr&#225;ticas de engenharia de software e senso de qualidade.</p><p>A origem do termo vem de uma imagem engra&#231;ada que circula na internet: um cavalo desengon&#231;ado, desesperado, fazendo tudo de qualquer jeito para &#8220;entregar&#8221; algo r&#225;pido. O texto da imagem geralmente &#233;: *&#8221;Go Horse: Solu&#231;&#227;o em 5 minutos que vai te foder por 6 meses.&#8221;*</p><p>### Principais caracter&#237;sticas do &#8220;Go Horse&#8221;:</p><p>1.  **Sem planejamento:** N&#227;o se faz an&#225;lise de requisitos, nem arquitetura, nem diagramas. &#8220;Bora codar e ver no que d&#225;&#8221;.</p><p>2.  **Sem testes:** C&#243;digo &#233; escrito e j&#225; vai direto para produ&#231;&#227;o. Se funcionou uma vez na m&#225;quina do desenvolvedor, j&#225; era. Testes unit&#225;rios, de integra&#231;&#227;o ou de aceita&#231;&#227;o? &#8220;Isso &#233; coisa de frescura&#8221;.</p><p>3.  **Sem documenta&#231;&#227;o:** Nada de comentar o c&#243;digo, escrever README ou documentar APIs. &#8220;O c&#243;digo &#233; a documenta&#231;&#227;o&#8221; (mas o c&#243;digo &#233; ileg&#237;vel).</p><p>4.  **&#8221;Se funciona, n&#227;o mexe&#8221;:** Ningu&#233;m refatora ou melhora o c&#243;digo existente. Se tem um d&#233;bito t&#233;cnico gigante, ele fica l&#225;. Aplicar uma corre&#231;&#227;o simples pode gerar 10 novos bugs.</p><p>5.  **Press&#227;o m&#225;xima e prazos imposs&#237;veis:** A motiva&#231;&#227;o &#233; sempre &#8220;para ontem&#8221;. O foco &#233; entregar qualquer coisa que pare&#231;a funcionar, n&#227;o importa o custo.</p><p>6.  **Aus&#234;ncia de comunica&#231;&#227;o:** Todos mexem em tudo, ningu&#233;m avisa ningu&#233;m. O famoso &#8220;push sem aviso&#8221; que quebra a build dos outros.</p><p>### Exemplo cl&#225;ssico de uma situa&#231;&#227;o Go Horse:</p><p>- **Problema:** Um bot&#227;o no site n&#227;o est&#225; funcionando.</p><p>- **Solu&#231;&#227;o Go Horse:** O desenvolvedor coloca `onclick=&#8221;alert(&#8217;ok&#8217;)&#8221;` no HTML e sobe para produ&#231;&#227;o em 30 segundos.</p><p>- **Resultado real:** Agora o bot&#227;o exibe um alerta &#8220;ok&#8221;, mas ainda n&#227;o executa a fun&#231;&#227;o original. Al&#233;m disso, quebrou o layout do site em celulares (sem saber por qu&#234;). E o desenvolvedor j&#225; est&#225; &#8220;apagando outro inc&#234;ndio&#8221;.</p><p>### Por que isso &#233; p&#233;ssimo?</p><p>- **D&#237;vida t&#233;cnica explode:** Cada &#8220;gambiarra&#8221; vira uma bola de neve. Com o tempo, o sistema fica fr&#225;gil, qualquer mudan&#231;a leva horas (ou dias) e todo mundo tem medo de tocar no c&#243;digo.</p><p>- **Bugs em cascata:** Corrigir um problema cria v&#225;rios outros.</p><p>- **Estresse e rotatividade:** Desenvolvedores que trabalham assim constantemente ficam esgotados (burnout).</p><p>- **Produto de baixa qualidade:** O sistema vive quebrado, clientes insatisfeitos, e a empresa passa mais tempo apagando inc&#234;ndio do que criando valor.</p><p>### Diferen&#231;a para &#8220;Agile&#8221; ou &#8220;Startup enxuta&#8221;:</p><p>- **Agile bem feito:** Ciclos curtos, *mas com planejamento, testes, revis&#227;o e melhoria cont&#237;nua*.</p><p>- **Go Horse:** Ciclos curtos porque &#8220;saiu correndo do curral sem rumo&#8221;. &#201; o anti-m&#233;todo.</p><p>### Quando as pessoas usam o termo?</p><p>- Como **cr&#237;tica**: &#8220;Esse time s&#243; trabalha no Go Horse. Semana passada quebraram a produ&#231;&#227;o tr&#234;s vezes.&#8221;</p><p>- Como **autocr&#237;tica** (&#224;s vezes com tristeza ou humor negro): &#8220;Sei que &#233; Go Horse, mas o gerente quer isso ao vivo hoje. Vou fazer a gambiarra e amanh&#227; a gente pensa.&#8221;</p><p>- Como **alerta** em c&#243;digo ou documenta&#231;&#227;o: &#8220;TODO: Isso aqui foi um Go Horse violento. Precisa ser reescrito.&#8221;</p><p>### Resumo curto:</p><p>**Go Horse = fazer c&#243;digo de qualquer jeito, sem testes, sem planejamento, s&#243; na base do &#8216;se funcionar no meu PC j&#225; sobe&#8217;, empurrando d&#237;vida t&#233;cnica sem parar, para entregar &#8216;r&#225;pido&#8217; &#8212; e se foder (muito) depois.**</p><p>Se algu&#233;m te falar que &#8220;aqui a gente faz Go Horse&#8221;, fuja ou tente mudar a cultura antes que o sistema inteiro se torne um castelo de cartas prestes a desabar.</p>]]></content:encoded></item><item><title><![CDATA[Realizando o DEPLOY do ambiente escolhido ]]></title><description><![CDATA[Escolher entre DBaaS ou KaaS para chegar at&#233; esse momento.]]></description><link>https://emersondominguescmara.substack.com/p/realizando-o-deploy-do-ambiente-escolhido</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/realizando-o-deploy-do-ambiente-escolhido</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 13 May 2026 16:46:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0-mr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2206355d-462e-4d8f-a9c4-f75132b04954_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!saqn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!saqn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 424w, https://substackcdn.com/image/fetch/$s_!saqn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 848w, https://substackcdn.com/image/fetch/$s_!saqn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 1272w, https://substackcdn.com/image/fetch/$s_!saqn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!saqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png" width="269" height="321" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:321,&quot;width&quot;:269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:180423,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/197543297?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!saqn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 424w, https://substackcdn.com/image/fetch/$s_!saqn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 848w, https://substackcdn.com/image/fetch/$s_!saqn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 1272w, https://substackcdn.com/image/fetch/$s_!saqn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F84a7c1c5-396c-4d58-b2a7-2bd1ebd98331_269x321.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p># Provisionamento Autom&#225;tico de Infraestrutura no Proxmox: DBaaS e KaaS</p><p>Este &#233; o terceiro e mais poderoso script da minha s&#233;rie de automa&#231;&#227;o Proxmox. Enquanto os anteriores criavam usu&#225;rios/pools e redes virtuais, este script **orquestra a cria&#231;&#227;o completa de ambientes** &#8211; sejam bancos de dados (DBaaS) ou clusters Kubernetes (KaaS).</p><p>## O Problema que Este Script Resolve</p><p>Imagine que um novo cliente acabou de contratar sua infraestrutura. Voc&#234; precisa:</p><p>- Criar VMs de banco de dados ou Kubernetes</p><p>- Conect&#225;-las &#224; rede isolada correta</p><p>- Associ&#225;-las ao pool do cliente</p><p>- Configurar balanceamento de carga (no caso do KaaS)</p><p>- Documentar tudo automaticamente</p><p>Fazer isso manualmente para cada VM levaria horas e estaria sujeito a erros. Este script reduz esse processo para **minutos**.</p><p>## Arquitetura de Templates</p><p>O script espera templates pr&#233;-configurados no Proxmox:</p><p>| Template ID | Uso | Descri&#231;&#227;o |</p><p>|-------------|-----|-----------|</p><p>| 110 | MariaDB | Banco de dados relacional |</p><p>| 111 | PostgreSQL | Banco de dados relacional |</p><p>| 120 | Control Plane | Master do Kubernetes |</p><p>| 121 | Worker | N&#243; trabalhador do Kubernetes |</p><p>| 122 | HAProxy | Load balancer para o cluster |</p><p>## Funcionalidades Principais</p><p>### 1. DBaaS (Database as a Service)</p><p>Cria uma &#250;nica VM de banco de dados:</p><p># Op&#231;&#245;es interativas</p><p>- Tipo: MariaDB ou PostgreSQL</p><p>- CPU, mem&#243;ria e disco configur&#225;veis</p><p>- Conex&#227;o autom&#225;tica &#224; VNet do cliente</p><p>- Adi&#231;&#227;o ao pool correto</p><p>### 2. KaaS (Kubernetes as a Service)</p><p>Cria um cluster completo:</p><p>[HAProxy] &#8594; Load Balancer (porta 6443)</p><p>     &#8595;</p><p>[Control Plane 1]  &#8594; API Server</p><p>[Control Plane N]  &#8594; Alta disponibilidade</p><p>     &#8595;</p><p>[Worker 1]     &#8594; Pods e workloads</p><p>[Worker N]     &#8594; Escalabilidade horizontal</p><p>**Caracter&#237;sticas:**</p><p>- VMs na faixa dedicada 2000-2999</p><p>- Valida&#231;&#227;o autom&#225;tica de IDs dispon&#237;veis</p><p>- Gera&#231;&#227;o de configura&#231;&#227;o HAProxy</p><p>- Documenta&#231;&#227;o dos pr&#243;ximos passos</p><p>## Fluxo Completo de Execu&#231;&#227;o</p><p>1. Conecta ao Proxmox via SSH</p><p>         &#8595;</p><p>2. Verifica pool do cliente (script 1)</p><p>         &#8595;</p><p>3. Verifica VNet do cliente (script 2)</p><p>         &#8595;</p><p>4. Escolhe tipo de servi&#231;o (DB ou K8s)</p><p>         &#8595;</p><p>5. Configura hardware (CPU, RAM, disco)</p><p>         &#8595;</p><p>6. CLONA template (FULL CLONE)</p><p>         &#8595;</p><p>7. Redimensiona disco (se solicitado)</p><p>         &#8595;</p><p>8. Configura rede &#8594; bridge = VNet</p><p>         &#8595;</p><p>9. Associa VM ao pool do cliente</p><p>         &#8595;</p><p>10. Salva configura&#231;&#227;o em log</p><p>         &#8595;</p><p>11. Inicia VM (opcional)</p><p>## Destaques T&#233;cnicos</p><p>### Redimensionamento Inteligente de Disco</p><p># Suporta valores como &#8220;auto&#8221;, &#8220;20&#8221;, &#8220;50G&#8221;</p><p>if [ -n &#8220;$disk_size&#8221; ] &amp;&amp; [ &#8220;$disk_size&#8221; != &#8220;auto&#8221; ]; then</p><p>    # Remove sufixo G/g e valida n&#250;mero</p><p>    target_size=$(echo &#8220;$disk_size&#8221; | sed &#8216;s/[Gg]//g&#8217;)</p><p>    if [[ &#8220;$target_size&#8221; =~ ^[0-9]+$ ]] &amp;&amp; [ &#8220;$target_size&#8221; -gt 0 ]; then</p><p>        $ssh_cmd &#8220;qm disk resize $new_vmid virtio0 ${target_size}G&#8221;</p><p>    fi</p><p>fi</p><p>### Gerenciamento de VMIDs por Faixa</p><p># DBaaS: faixa geral (100+)</p><p>get_next_vmid() {</p><p>    # Encontra gaps na numera&#231;&#227;o</p><p>    # Evita conflitos com VMs existentes</p><p>}</p><p># KaaS: faixa dedicada 2000-2999</p><p>get_next_vmid_kaas() {</p><p>    # Verifica disponibilidade antes de criar</p><p>    # Garante que todos os IDs do cluster sejam cont&#237;guos</p><p>}</p><p>### Configura&#231;&#227;o HAProxy Autom&#225;tica</p><p>configure_haproxy() {</p><p>    # Gera configura&#231;&#227;o com backend round-robin</p><p>    # Inclui health checks (tcp-check)</p><p>    # Salva arquivo .cfg para o cliente</p><p>}</p><p>## Exemplo de Uso - DBaaS</p><p>$ ./clonar_para_vnet.sh</p><p>========================================</p><p>   CLONADOR DE VM PARA VNET - PROXMOX</p><p>========================================</p><p>Digite o IP do servidor Proxmox: 192.168.2.200</p><p>Digite o usu&#225;rio SSH (padr&#227;o: root): root</p><p>Digite a senha SSH: </p><p>CLIENTES EXISTENTES</p><p>  - cliente_acme</p><p>  - cliente_beta</p><p>Digite o nome do cliente: cliente_acme</p><p>SELECIONE O TIPO DE SERVI&#199;O</p><p>1 - DBaaS (Banco de Dados como Servi&#231;o)</p><p>2 - KaaS (Kubernetes como Servi&#231;o)</p><p>Escolha: 1</p><p>DBaaS - BANCO DE DADOS</p><p>1 - MariaDB (Template ID: 110)</p><p>2 - PostgreSQL (Template ID: 111)</p><p>Escolha: 1</p><p>CONFIGURA&#199;&#213;ES DA VM</p><p>CPUs (padr&#227;o: 2): 4</p><p>Mem&#243;ria RAM em MB (padr&#227;o: 4096): 8192</p><p>Tamanho do disco em GB (padr&#227;o: auto): 100</p><p>&#9989; VM CRIADA COM SUCESSO!</p><p>ID: 102</p><p>Nome: cliente_acme-mariadb</p><p>Pool: Pool_cliente_acme</p><p>VNet: vnet_cliente_acme</p><p>## Exemplo de Uso - KaaS</p><p>$ ./clonar_para_vnet.sh</p><p>SELECIONE O TIPO DE SERVI&#199;O</p><p>2 - KaaS (Kubernetes como Servi&#231;o)</p><p>KaaS - KUBERNETES CLUSTER</p><p>Quantidade de Control Planes (padr&#227;o: 1): 3</p><p>Quantidade de Workers (padr&#227;o: 2): 5</p><p>VERIFICANDO DISPONIBILIDADE DE IDs</p><p>&#9989; Faixa 2000-2999 tem 997 IDs dispon&#237;veis</p><p>RESUMO DO CLUSTER</p><p>Total de VMs: 9 (HAProxy + 3 CP + 5 Workers)</p><p>&#9989; CLUSTER KUBERNETES CRIADO COM SUCESSO!</p><p>Componentes:</p><p>  - HAProxy: ID 2000 (cliente_acme-haproxy)</p><p>  - Control Planes: 3 (IDs 2001, 2002, 2003)</p><p>  - Workers: 5 (IDs 2004-2008)</p><p>## Estrutura de Logs e Estado</p><p>O script mant&#233;m uma estrutura organizada:</p><p>logs/clientes/</p><p>&#9492;&#9472;&#9472; cliente_acme/</p><p>    &#9500;&#9472;&#9472; state.conf                    # Estado do cliente</p><p>    &#9500;&#9472;&#9472; vm_2000_20250115_143022.conf  # Config HAProxy</p><p>    &#9500;&#9472;&#9472; vm_2001_20250115_143045.conf  # Config CP-1</p><p>    &#9500;&#9472;&#9472; vm_2002_20250115_143108.conf  # Config CP-2</p><p>    &#9500;&#9472;&#9472; vm_2003_20250115_143131.conf  # Config CP-3</p><p>    &#9492;&#9472;&#9472; haproxy.cfg                    # Config do load balancer</p><p>## Integra&#231;&#227;o com os Scripts Anteriores</p><p>Este script completa o ecossistema:</p><p>criar_usuario.sh  &#8594;  Pool + Usu&#225;rio</p><p>        &#8595;</p><p>criar_vnet.sh     &#8594;  Rede isolada (VLAN)</p><p>        &#8595;</p><p>clonar_para_vnet.sh &#8594; VMs + Infraestrutura</p><p>## Casos de Uso Reais</p><p>### 1. Provedor de Banco de Dados Gerenciado</p><p>- Cada cliente recebe VMs de banco isoladas</p><p>- Recursos ajust&#225;veis por demanda</p><p>- Backup e restore integrados</p><p>### 2. Plataforma Kubernetes Multi-tenant</p><p>- Clusters completos em minutos</p><p>- Faixa de IPs dedicada por cliente</p><p>- Load balancer automatizado</p><p>### 3. Ambiente de Desenvolvimento para Equipes</p><p>- Times recebem clusters isolados</p><p>- Recursos dimension&#225;veis</p><p>- Destrui&#231;&#227;o f&#225;cil ap&#243;s o uso</p><p>## Depend&#234;ncias</p><p># Instalar sshpass (para autentica&#231;&#227;o por senha)</p><p>sudo apt install sshpass</p><p># Templates devem existir no Proxmox</p><p># IDs 110, 111, 120, 121, 122</p><p>## Pr&#243;ximos Passos Poss&#237;veis</p><p>1. **API REST** - Expor funcionalidades via HTTP</p><p>2. **Terraform Provider** - Gerenciar via IaC</p><p>3. **Integra&#231;&#227;o com billing** - Criar cobran&#231;a autom&#225;tica</p><p>4. **Dashboard web** - Interface para clientes</p><p>5. **Monitoring integration** - Prometheus + Grafana</p><p>## Considera&#231;&#245;es Finais</p><p>Este script representa a **automa&#231;&#227;o completa do ciclo de vida** de infraestrutura multi-tenant no Proxmox:</p><p>- &#9989; Seguran&#231;a (redes isoladas por VLAN)</p><p>- &#9989; Escalabilidade (clusters Kubernetes sob demanda)</p><p>- &#9989; Rastreabilidade (logs detalhados)</p><p>- &#9989; Consist&#234;ncia (templates padronizados)</p><p>O que antes exigia **horas de trabalho manual** agora acontece em **menos de 5 minutos** com entradas interativas simples.</p><p>---</p><p>## Trilogia Completa de Automa&#231;&#227;o Proxmox</p><p>1. **[criar_usuario.sh]** - Provisionamento de tenants (usu&#225;rios + pools)</p><p>2. **[criar_vnet.sh]** - Redes virtuais isoladas (VLANs + SDN)</p><p>3. **[clonar_para_vnet.sh]** - Orquestra&#231;&#227;o de VMs (DBaaS + KaaS)</p><p>Com estes tr&#234;s scripts, voc&#234; tem uma **plataforma completa de entrega de infraestrutura como servi&#231;o** rodando em cima do Proxmox VE.</p><p>---</p><p>Voc&#234; j&#225; automatizou seu ambiente Proxmox? Que tipo de servi&#231;o voc&#234; gostaria de oferecer aos seus clientes? Deixe nos coment&#225;rios!</p><p>**&#128276; Inscreva-se no Substack para n&#227;o perder os pr&#243;ximos posts:**</p><p>Gostou do conte&#250;do? Compartilhe com outros profissionais de infraestrutura! &#128640;</p><p></p><p></p><p>Conteudo do script:</p><p>#!/bin/bash</p><p># Cores para output</p><p>RED=&#8217;\033[0;31m&#8217;</p><p>GREEN=&#8217;\033[0;32m&#8217;</p><p>YELLOW=&#8217;\033[1;33m&#8217;</p><p>BLUE=&#8217;\033[0;34m&#8217;</p><p>CYAN=&#8217;\033[0;36m&#8217;</p><p>MAGENTA=&#8217;\033[0;35m&#8217;</p><p>NC=&#8217;\033[0m&#8217; # No Color</p><p># Configura&#231;&#245;es globais</p><p>SCRIPT_DIR=&#8221;$(cd &#8220;$(dirname &#8220;${BASH_SOURCE[0]}&#8221;)&#8221; &amp;&amp; pwd)&#8221;</p><p>STATE_DIR=&#8221;${SCRIPT_DIR}/.state&#8221;</p><p>LOG_DIR=&#8221;${SCRIPT_DIR}/logs/clientes&#8221;</p><p>VNET_CONF_DIR=&#8221;${SCRIPT_DIR}&#8221;</p><p># Fun&#231;&#227;o para imprimir mensagens coloridas</p><p>print_msg() {</p><p>    echo -e &#8220;${GREEN}[INFO]${NC} $1&#8221;</p><p>}</p><p>print_error() {</p><p>    echo -e &#8220;${RED}[ERRO]${NC} $1&#8221;</p><p>}</p><p>print_warning() {</p><p>    echo -e &#8220;${YELLOW}[ATEN&#199;&#195;O]${NC} $1&#8221;</p><p>}</p><p>print_info() {</p><p>    echo -e &#8220;${BLUE}[DETALHE]${NC} $1&#8221;</p><p>}</p><p>print_header() {</p><p>    echo -e &#8220;${CYAN}========================================${NC}&#8221;</p><p>    echo -e &#8220;${CYAN}$1${NC}&#8221;</p><p>    echo -e &#8220;${CYAN}========================================${NC}&#8221;</p><p>}</p><p>print_success() {</p><p>    echo -e &#8220;${GREEN}&#9989; $1${NC}&#8221;</p><p>}</p><p># Fun&#231;&#227;o para validar VM ID</p><p>validate_vmid() {</p><p>    local vmid=$1</p><p>    if [[ $vmid =~ ^[0-9]+$ ]] &amp;&amp; [ $vmid -ge 100 ] &amp;&amp; [ $vmid -le 999999999 ]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para validar nome da VM</p><p>validate_vmname() {</p><p>    local name=$1</p><p>    if [[ $name =~ ^[a-zA-Z0-9_-]+$ ]]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para carregar configura&#231;&#227;o do cliente</p><p>load_client_config() {</p><p>    local client_name=$1</p><p>    local config_file=&#8221;${STATE_DIR}/client_${client_name}.conf&#8221;</p><p>    if [ -f &#8220;$config_file&#8221; ]; then</p><p>        source &#8220;$config_file&#8221;</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para salvar configura&#231;&#227;o da VM criada</p><p>save_vm_config() {</p><p>    local client_name=$1</p><p>    local service_type=$2</p><p>    local db_type=$3</p><p>    local vm_id=$4</p><p>    local vm_name=$5</p><p>    local vnet_name=$6</p><p>    local config_file=&#8221;${LOG_DIR}/${client_name}/vm_${vm_id}_$(date +%Y%m%d_%H%M%S).conf&#8221;</p><p>    mkdir -p &#8220;$(dirname &#8220;$config_file&#8221;)&#8221;</p><p>    cat &gt; &#8220;$config_file&#8221; &lt;&lt; EOF</p><p># Configura&#231;&#227;o da VM - $(date)</p><p>CLIENT_NAME=&#8221;$client_name&#8221;</p><p>SERVICE_TYPE=&#8221;$service_type&#8221;</p><p>DB_TYPE=&#8221;$db_type&#8221;</p><p>VM_ID=&#8221;$vm_id&#8221;</p><p>VM_NAME=&#8221;$vm_name&#8221;</p><p>VNET_NAME=&#8221;$vnet_name&#8221;</p><p>STATUS=&#8221;CREATED&#8221;</p><p>EOF</p><p>    print_msg &#8220;Configura&#231;&#227;o da VM salva em: $config_file&#8221;</p><p>    # Atualizar arquivo de estado do cliente</p><p>    local state_file=&#8221;${LOG_DIR}/${client_name}/state.conf&#8221;</p><p>    echo &#8220;VM_${vm_id}_NAME=\&#8221;$vm_name\&#8221;&#8220; &gt;&gt; &#8220;$state_file&#8221;</p><p>    echo &#8220;VM_${vm_id}_TYPE=\&#8221;$service_type\&#8221;&#8220; &gt;&gt; &#8220;$state_file&#8221;</p><p>    echo &#8220;VM_${vm_id}_VNET=\&#8221;$vnet_name\&#8221;&#8220; &gt;&gt; &#8220;$state_file&#8221;</p><p>}</p><p># Fun&#231;&#227;o para listar VNets dispon&#237;veis</p><p>list_vnets() {</p><p>    local ssh_cmd=$1</p><p>    echo &#8220;&#8221;</p><p>    $ssh_cmd &#8220;pvesh get /cluster/sdn/vnets --output-format json&#8221; 2&gt;/dev/null | grep -oP &#8216;&#8221;vnet&#8221;:&#8221;\K[^&#8221;]+&#8217; | while read vnet; do</p><p>        echo &#8220;  - $vnet&#8221;</p><p>    done</p><p>}</p><p># Fun&#231;&#227;o para obter pr&#243;ximo VMID dispon&#237;vel (para DBaaS - faixa geral)</p><p>get_next_vmid() {</p><p>    local ssh_cmd=$1</p><p>    local MIN_VMID=100</p><p>    local all_vmids=$($ssh_cmd &#8220;qm list&#8221; 2&gt;/dev/null | tail -n +2 | awk &#8216;{print $1}&#8217; | sort -n)</p><p>    if [ -z &#8220;$all_vmids&#8221; ]; then</p><p>        echo $MIN_VMID</p><p>        return 0</p><p>    fi</p><p>    local max_vmid=$(echo &#8220;$all_vmids&#8221; | tail -1)</p><p>    local suggested=$((max_vmid + 1))</p><p>    # Verificar gaps</p><p>    local prev=$((MIN_VMID - 1))</p><p>    for vmid in $all_vmids; do</p><p>        if [ $vmid -ge $MIN_VMID ]; then</p><p>            if [ $((vmid - prev)) -gt 1 ]; then</p><p>                suggested=$((prev + 1))</p><p>                break</p><p>            fi</p><p>            prev=$vmid</p><p>        fi</p><p>    done</p><p>    if [ $suggested -lt $MIN_VMID ]; then</p><p>        suggested=$MIN_VMID</p><p>    fi</p><p>    echo $suggested</p><p>}</p><p># Fun&#231;&#227;o para obter pr&#243;ximo VMID dispon&#237;vel na faixa 2000-2999 (para KaaS)</p><p>get_next_vmid_kaas() {</p><p>    local ssh_cmd=$1</p><p>    local MIN_VMID=2000</p><p>    local MAX_VMID=2999</p><p>    # Obter todas as VMs existentes</p><p>    local existing_vmids=$($ssh_cmd &#8220;qm list&#8221; 2&gt;/dev/null | tail -n +2 | awk &#8216;{print $1}&#8217; | sort -n)</p><p>    # Criar array associativo para lookup r&#225;pido</p><p>    local -A used_vmids</p><p>    for vmid in $existing_vmids; do</p><p>        used_vmids[$vmid]=1</p><p>    done</p><p>    # Procurar primeiro ID livre na faixa</p><p>    for vmid in $(seq $MIN_VMID $MAX_VMID); do</p><p>        if [ -z &#8220;${used_vmids[$vmid]}&#8221; ]; then</p><p>            echo $vmid</p><p>            return 0</p><p>        fi</p><p>    done</p><p>    print_error &#8220;Faixa de VMIDs $MIN_VMID-$MAX_VMID est&#225; completamente ocupada!&#8221;</p><p>    return 1</p><p>}</p><p># Fun&#231;&#227;o para verificar disponibilidade da faixa de IDs para KaaS</p><p>check_kaas_range_availability() {</p><p>    local ssh_cmd=$1</p><p>    local needed_vms=$2</p><p>    local MIN_VMID=2000</p><p>    local MAX_VMID=2999</p><p>    local existing_vmids=$($ssh_cmd &#8220;qm list&#8221; 2&gt;/dev/null | tail -n +2 | awk &#8216;{print $1}&#8217; | sort -n)</p><p>    local available_count=0</p><p>    for vmid in $(seq $MIN_VMID $MAX_VMID); do</p><p>        if ! echo &#8220;$existing_vmids&#8221; | grep -q &#8220;^${vmid}$&#8221;; then</p><p>            ((available_count++))</p><p>        fi</p><p>    done</p><p>    if [ $available_count -lt $needed_vms ]; then</p><p>        print_error &#8220;Espa&#231;o insuficiente na faixa $MIN_VMID-$MAX_VMID&#8221;</p><p>        print_error &#8220;Necess&#225;rio: $needed_vms VMs | Dispon&#237;vel: $available_count&#8221;</p><p>        return 1</p><p>    fi</p><p>    print_success &#8220;Faixa $MIN_VMID-$MAX_VMID tem $available_count IDs dispon&#237;veis&#8221;</p><p>    return 0</p><p>}</p><p># Fun&#231;&#227;o para criar VM baseada no template (FULL CLONE) - VERS&#195;O CORRIGIDA</p><p>create_vm_from_template() {</p><p>    local ssh_cmd=$1</p><p>    local template_id=$2</p><p>    local new_vmid=$3</p><p>    local vm_name=$4</p><p>    local storage=$5</p><p>    local vnet_name=$6</p><p>    local cpu=$7</p><p>    local memory=$8</p><p>    local disk_size=${9}</p><p>    print_msg &#8220;Clonando template $template_id para VM ID $new_vmid (FULL CLONE)...&#8221;</p><p>    # DEBUG - Mostrar valores recebidos</p><p>    print_info &#8220;DEBUG: disk_size recebido = &#8216;${disk_size}&#8217;&#8221;</p><p>    print_info &#8220;DEBUG: vnet_name = &#8216;$vnet_name&#8217;&#8221;</p><p>    print_info &#8220;DEBUG: CPU=$cpu, MEM=${memory}MB&#8221;</p><p>    # Clone completo</p><p>    $ssh_cmd &#8220;qm clone $template_id $new_vmid --name $vm_name --storage $storage --full 1&#8221;</p><p>    if [ $? -ne 0 ]; then</p><p>        print_error &#8220;Falha ao clonar VM&#8221;</p><p>        return 1</p><p>    fi</p><p>    print_success &#8220;VM clonada com sucesso!&#8221;</p><p>    # Configurar recursos (CPU e Mem&#243;ria)</p><p>    print_msg &#8220;Configurando recursos da VM (CPU: $cpu, Mem&#243;ria: ${memory}MB)...&#8221;</p><p>    $ssh_cmd &#8220;qm set $new_vmid --cores $cpu --memory $memory&#8221;</p><p>    # Redimensionar disco se necess&#225;rio</p><p>    local resize_needed=0</p><p>    local target_size=&#8221;&#8220;</p><p>    # Verificar se disk_size n&#227;o &#233; vazio e n&#227;o &#233; &#8220;auto&#8221;</p><p>    if [ -n &#8220;$disk_size&#8221; ] &amp;&amp; [ &#8220;$disk_size&#8221; != &#8220;auto&#8221; ]; then</p><p>        # Remover poss&#237;vel sufixo &#8216;G&#8217; ou &#8216;g&#8217;</p><p>        target_size=$(echo &#8220;$disk_size&#8221; | sed &#8216;s/[Gg]//g&#8217;)</p><p>        # Verificar se &#233; um n&#250;mero v&#225;lido</p><p>        if [[ &#8220;$target_size&#8221; =~ ^[0-9]+$ ]] &amp;&amp; [ &#8220;$target_size&#8221; -gt 0 ]; then</p><p>            resize_needed=1</p><p>            print_msg &#8220;Redimensionamento solicitado: ${target_size}GB&#8221;</p><p>        else</p><p>            print_warning &#8220;Valor inv&#225;lido para disk_size: &#8216;$disk_size&#8217;. Ignorando redimensionamento.&#8221;</p><p>        fi</p><p>    else</p><p>        print_msg &#8220;Redimensionamento n&#227;o solicitado (disk_size=&#8217;$disk_size&#8217;)&#8221;</p><p>    fi</p><p>    # Executar redimensionamento se necess&#225;rio</p><p>    if [ $resize_needed -eq 1 ]; then</p><p>        print_msg &#8220;Redimensionando disco para ${target_size}GB...&#8221;</p><p>        # Para template com virtio0 (como seu caso)</p><p>        print_info &#8220;Executando: qm disk resize $new_vmid virtio0 ${target_size}G&#8221;</p><p>        # Tentar redimensionar (a VM pode estar parada ou rodando)</p><p>        if $ssh_cmd &#8220;qm disk resize $new_vmid virtio0 ${target_size}G&#8221; 2&gt;&amp;1; then</p><p>            print_success &#8220;&#9989; Disco redimensionado com sucesso para ${target_size}GB&#8221;</p><p>            # Verificar se funcionou</p><p>            local new_size=$($ssh_cmd &#8220;qm config $new_vmid&#8221; 2&gt;/dev/null | grep &#8216;^virtio0:&#8217; | grep -oP &#8216;size=\K[0-9]+&#8217;)</p><p>            print_info &#8220;Novo tamanho do disco: ${new_size}G&#8221;</p><p>        else</p><p>            print_error &#8220;&#10060; Falha ao redimensionar disco virtio0&#8221;</p><p>            # Tentar encontrar o disco correto</p><p>            local disk_id=$($ssh_cmd &#8220;qm config $new_vmid&#8221; 2&gt;/dev/null | grep -oE &#8216;^(virtio|scsi|ide|sata)[0-9]+:&#8217; | head -1 | tr -d &#8216;:&#8217;)</p><p>            if [ -n &#8220;$disk_id&#8221; ] &amp;&amp; [ &#8220;$disk_id&#8221; != &#8220;virtio0&#8221; ]; then</p><p>                print_msg &#8220;Tentando com $disk_id...&#8221;</p><p>                $ssh_cmd &#8220;qm disk resize $new_vmid $disk_id ${target_size}G&#8221; 2&gt;&amp;1</p><p>            fi</p><p>        fi</p><p>    fi</p><p>    # Configurar rede para usar a VNet</p><p>    print_msg &#8220;Configurando interface de rede para VNet $vnet_name...&#8221;</p><p>    $ssh_cmd &#8220;qm set $new_vmid --delete net0&#8221; &gt; /dev/null 2&gt;&amp;1</p><p>    $ssh_cmd &#8220;qm set $new_vmid --net0 virtio,bridge=$vnet_name,firewall=1&#8221;</p><p>    if [ $? -ne 0 ]; then</p><p>        print_error &#8220;Falha ao configurar interface de rede&#8221;</p><p>        return 1</p><p>    fi</p><p>    print_success &#8220;Interface de rede configurada: bridge=$vnet_name&#8221;</p><p>    return 0</p><p>}</p><p># Fun&#231;&#227;o para configurar HAProxy</p><p>configure_haproxy() {</p><p>    local ssh_cmd=$1</p><p>    local vm_id=$2</p><p>    local client_name=$3</p><p>    local vnet_name=$4</p><p>    local cluster_ips=$5</p><p>    print_msg &#8220;Configurando HAProxy para o cliente $client_name...&#8221;</p><p>    # Comando para configurar HAProxy dentro da VM (via qm guest exec)</p><p>    local haproxy_config=&#8221;</p><p>global</p><p>    log /dev/log local0</p><p>    log /dev/log local1 notice</p><p>    maxconn 4096</p><p>    user haproxy</p><p>    group haproxy</p><p>defaults</p><p>    log global</p><p>    mode tcp</p><p>    option tcplog</p><p>    retries 3</p><p>    timeout connect 5s</p><p>    timeout client 50s</p><p>    timeout server 50s</p><p>frontend kubernetes-frontend</p><p>    bind *:6443</p><p>    mode tcp</p><p>    default_backend kubernetes-backend</p><p>backend kubernetes-backend</p><p>    mode tcp</p><p>    balance roundrobin</p><p>    option tcp-check</p><p>$(echo &#8220;$cluster_ips&#8221; | sed &#8216;s/^/    server /&#8217; | sed &#8216;s/$/:6443 check fall 3 rise 2/&#8217;)</p><p>&#8220;</p><p>    # Salvar configura&#231;&#227;o localmente</p><p>    local config_file=&#8221;${LOG_DIR}/${client_name}/haproxy.cfg&#8221;</p><p>    echo &#8220;$haproxy_config&#8221; &gt; &#8220;$config_file&#8221;</p><p>    print_msg &#8220;Configura&#231;&#227;o HAProxy salva em: $config_file&#8221;</p><p>    print_info &#8220;Para aplicar a configura&#231;&#227;o, execute dentro da VM HAProxy:&#8221;</p><p>    echo &#8220;  sudo cp $config_file /etc/haproxy/haproxy.cfg&#8221;</p><p>    echo &#8220;  sudo systemctl restart haproxy&#8221;</p><p>}</p><p># Menu principal</p><p>print_header &#8220;CLONADOR DE VM PARA VNET - PROXMOX&#8221;</p><p># Verificar se sshpass est&#225; instalado</p><p>if ! command -v sshpass &amp;&gt; /dev/null; then</p><p>    print_warning &#8220;sshpass n&#227;o est&#225; instalado.&#8221;</p><p>    read -p &#8220;Deseja instalar sshpass? (s/n): &#8220; INSTALL_SSHPASS</p><p>    if [[ &#8220;$INSTALL_SSHPASS&#8221; =~ ^[Ss]$ ]]; then</p><p>        sudo apt-get update &amp;&amp; sudo apt-get install -y sshpass</p><p>        if [ $? -eq 0 ]; then</p><p>            print_msg &#8220;sshpass instalado com sucesso!&#8221;</p><p>        else</p><p>            print_error &#8220;Falha ao instalar sshpass&#8221;</p><p>            exit 1</p><p>        fi</p><p>    else</p><p>        print_error &#8220;sshpass &#233; necess&#225;rio para autentica&#231;&#227;o por senha.&#8221;</p><p>        exit 1</p><p>    fi</p><p>fi</p><p># Coletar informa&#231;&#245;es do servidor Proxmox</p><p>echo &#8220;&#8221;</p><p>read -p &#8220;Digite o IP do servidor Proxmox (ex: 192.168.2.200): &#8220; PROXMOX_IP</p><p>while [[ ! $PROXMOX_IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; do</p><p>    print_error &#8220;IP inv&#225;lido!&#8221;</p><p>    read -p &#8220;Digite o IP do servidor Proxmox: &#8220; PROXMOX_IP</p><p>done</p><p>read -p &#8220;Digite o usu&#225;rio SSH (padr&#227;o: root): &#8220; SSH_USER</p><p>SSH_USER=${SSH_USER:-root}</p><p>read -sp &#8220;Digite a senha SSH: &#8220; SSH_PASS</p><p>echo &#8220;&#8221;</p><p>SSH_CMD=&#8221;sshpass -p &#8216;$SSH_PASS&#8217; ssh -o StrictHostKeyChecking=no $SSH_USER@$PROXMOX_IP&#8221;</p><p># Testar conex&#227;o SSH</p><p>print_msg &#8220;Testando conex&#227;o SSH...&#8221;</p><p>if ! $SSH_CMD &#8220;echo &#8216;Conex&#227;o OK&#8217;&#8221; &gt; /dev/null 2&gt;&amp;1; then</p><p>    print_error &#8220;N&#227;o foi poss&#237;vel conectar ao servidor Proxmox.&#8221;</p><p>    exit 1</p><p>fi</p><p>print_success &#8220;Conex&#227;o SSH estabelecida!&#8221;</p><p># Listar clientes existentes</p><p>print_header &#8220;CLIENTES EXISTENTES&#8221;</p><p>CLIENTS_LIST=()</p><p>if [ -d &#8220;$LOG_DIR&#8221; ]; then</p><p>    for client_dir in &#8220;$LOG_DIR&#8221;/*/; do</p><p>        if [ -d &#8220;$client_dir&#8221; ]; then</p><p>            client_name=$(basename &#8220;$client_dir&#8221;)</p><p>            CLIENTS_LIST+=(&#8221;$client_name&#8221;)</p><p>            echo &#8220;  - $client_name&#8221;</p><p>        fi</p><p>    done</p><p>fi</p><p>if [ ${#CLIENTS_LIST[@]} -eq 0 ]; then</p><p>    print_warning &#8220;Nenhum cliente encontrado. Ser&#225; necess&#225;rio criar um novo.&#8221;</p><p>fi</p><p>echo &#8220;&#8221;</p><p>read -p &#8220;Digite o nome do cliente: &#8220; CLIENT_NAME</p><p>if [ -z &#8220;$CLIENT_NAME&#8221; ]; then</p><p>    print_error &#8220;Nome do cliente n&#227;o pode ser vazio!&#8221;</p><p>    exit 1</p><p>fi</p><p># Carregar configura&#231;&#227;o do cliente</p><p>CLIENT_POOL=&#8221;Pool_$CLIENT_NAME&#8221;</p><p>CLIENT_USER=&#8221;$CLIENT_NAME@pve&#8221;</p><p># Verificar se a pool do cliente existe</p><p>if ! $SSH_CMD &#8220;pvesh get /pools --output-format json&#8221; 2&gt;/dev/null | grep -q &#8220;\&#8221;poolid\&#8221;:\&#8221;$CLIENT_POOL\&#8221;&#8220;; then</p><p>    print_error &#8220;Pool &#8216;$CLIENT_POOL&#8217; n&#227;o encontrada!&#8221;</p><p>    print_info &#8220;Execute o script criar_usuario.sh primeiro para criar o cliente.&#8221;</p><p>    exit 1</p><p>fi</p><p>print_msg &#8220;Pool do cliente encontrada: $CLIENT_POOL&#8221;</p><p># Listar VNets dispon&#237;veis</p><p>print_header &#8220;VNETS DISPON&#205;VEIS&#8221;</p><p>list_vnets &#8220;$SSH_CMD&#8221;</p><p>echo &#8220;&#8221;</p><p>read -p &#8220;Digite o nome da VNet para este cliente: &#8220; VNET_NAME</p><p>if [ -z &#8220;$VNET_NAME&#8221; ]; then</p><p>    print_error &#8220;Nome da VNet n&#227;o pode ser vazio!&#8221;</p><p>    exit 1</p><p>fi</p><p># Verificar se a VNet existe</p><p>if ! $SSH_CMD &#8220;pvesh get /cluster/sdn/vnets/$VNET_NAME&#8221; &gt; /dev/null 2&gt;&amp;1; then</p><p>    print_error &#8220;VNet &#8216;$VNET_NAME&#8217; n&#227;o encontrada!&#8221;</p><p>    print_info &#8220;Execute o script criar_vnet.sh primeiro para criar a VNet.&#8221;</p><p>    exit 1</p><p>fi</p><p>print_success &#8220;VNet encontrada: $VNET_NAME&#8221;</p><p># Menu de sele&#231;&#227;o de servi&#231;o</p><p>print_header &#8220;SELECIONE O TIPO DE SERVI&#199;O&#8221;</p><p>echo &#8220;1 - DBaaS (Banco de Dados como Servi&#231;o)&#8221;</p><p>echo &#8220;2 - KaaS (Kubernetes como Servi&#231;o)&#8221;</p><p>echo &#8220;3 - Sair&#8221;</p><p>echo &#8220;&#8221;</p><p>read -p &#8220;Escolha uma op&#231;&#227;o (1-3): &#8220; SERVICE_OPTION</p><p>case $SERVICE_OPTION in</p><p>    1)</p><p>        # DBaaS</p><p>        print_header &#8220;DBaaS - BANCO DE DADOS&#8221;</p><p>        echo &#8220;1 - MariaDB (Template ID: 110)&#8221;</p><p>        echo &#8220;2 - PostgreSQL (Template ID: 111)&#8221;</p><p>        echo &#8220;&#8221;</p><p>        read -p &#8220;Escolha o tipo de banco de dados (1-2): &#8220; DB_OPTION</p><p>        case $DB_OPTION in</p><p>            1)</p><p>                TEMPLATE_ID=110</p><p>                DB_TYPE=&#8221;mariadb&#8221;</p><p>                print_info &#8220;Template selecionado: MariaDB&#8221;</p><p>                ;;</p><p>            2)</p><p>                TEMPLATE_ID=111</p><p>                DB_TYPE=&#8221;postgresql&#8221;</p><p>                print_info &#8220;Template selecionado: PostgreSQL&#8221;</p><p>                ;;</p><p>            *)</p><p>                print_error &#8220;Op&#231;&#227;o inv&#225;lida!&#8221;</p><p>                exit 1</p><p>                ;;</p><p>        esac</p><p>        # Configura&#231;&#245;es da VM</p><p>        echo &#8220;&#8221;</p><p>        print_header &#8220;CONFIGURA&#199;&#213;ES DA VM&#8221;</p><p>        VM_ID=$(get_next_vmid &#8220;$SSH_CMD&#8221;)</p><p>        read -p &#8220;Digite o ID para a nova VM (padr&#227;o: $VM_ID): &#8220; CUSTOM_VMID</p><p>        VM_ID=${CUSTOM_VMID:-$VM_ID}</p><p>        read -p &#8220;Digite o nome da VM (padr&#227;o: ${CLIENT_NAME}-${DB_TYPE}): &#8220; VM_NAME</p><p>        VM_NAME=${VM_NAME:-&#8221;${CLIENT_NAME}-${DB_TYPE}&#8221;}</p><p>        read -p &#8220;Quantidade de CPUs (padr&#227;o: 2): &#8220; CPU_CORES</p><p>        CPU_CORES=${CPU_CORES:-2}</p><p>        read -p &#8220;Mem&#243;ria RAM em MB (padr&#227;o: 4096): &#8220; MEMORY_MB</p><p>        MEMORY_MB=${MEMORY_MB:-4096}</p><p>        read -p &#8220;Tamanho do disco em GB (padr&#227;o: auto - manter tamanho do template): &#8220; DISK_SIZE</p><p>        DISK_SIZE=${DISK_SIZE:-auto}</p><p>        # Storage</p><p>        STORAGE=$($SSH_CMD &#8220;pvesh get /nodes/localhost/storage --output-format json&#8221; 2&gt;/dev/null | grep -oP &#8216;&#8221;storage&#8221;:&#8221;\K[^&#8221;]+&#8217; | head -1)</p><p>        STORAGE=${STORAGE:-&#8221;local-lvm&#8221;}</p><p>        read -p &#8220;Storage para a VM (padr&#227;o: $STORAGE): &#8220; CUSTOM_STORAGE</p><p>        STORAGE=${CUSTOM_STORAGE:-$STORAGE}</p><p>        # Resumo</p><p>        print_header &#8220;RESUMO DA OPERA&#199;&#195;O&#8221;</p><p>        echo &#8220;Cliente: $CLIENT_NAME&#8221;</p><p>        echo &#8220;Pool: $CLIENT_POOL&#8221;</p><p>        echo &#8220;Servi&#231;o: DBaaS - ${DB_TYPE^^}&#8221;</p><p>        echo &#8220;Template ID: $TEMPLATE_ID&#8221;</p><p>        echo &#8220;Nova VM ID: $VM_ID&#8221;</p><p>        echo &#8220;Nome da VM: $VM_NAME&#8221;</p><p>        echo &#8220;VNet: $VNET_NAME&#8221;</p><p>        echo &#8220;CPUs: $CPU_CORES&#8221;</p><p>        echo &#8220;Mem&#243;ria: ${MEMORY_MB}MB&#8221;</p><p>        echo &#8220;Disco: ${DISK_SIZE}GB&#8221;</p><p>        echo &#8220;Storage: $STORAGE&#8221;</p><p>        echo &#8220;&#8221;</p><p>        read -p &#8220;Confirmar cria&#231;&#227;o? (s/n): &#8220; CONFIRM</p><p>        if [[ ! &#8220;$CONFIRM&#8221; =~ ^[Ss]$ ]]; then</p><p>            print_warning &#8220;Opera&#231;&#227;o cancelada.&#8221;</p><p>            exit 0</p><p>        fi</p><p>        # Criar a VM (FULL CLONE)</p><p>        create_vm_from_template &#8220;$SSH_CMD&#8221; &#8220;$TEMPLATE_ID&#8221; &#8220;$VM_ID&#8221; &#8220;$VM_NAME&#8221; &#8220;$STORAGE&#8221; &#8220;$VNET_NAME&#8221; &#8220;$CPU_CORES&#8221; &#8220;$MEMORY_MB&#8221; &#8220;$DISK_SIZE&#8221;</p><p>        if [ $? -eq 0 ]; then</p><p>            # Adicionar VM &#224; pool do cliente</p><p>            print_msg &#8220;Adicionando VM &#224; pool $CLIENT_POOL...&#8221;</p><p>            $SSH_CMD &#8220;pvesh set /pools/$CLIENT_POOL --vms $VM_ID&#8221;</p><p>            # Salvar configura&#231;&#227;o</p><p>            save_vm_config &#8220;$CLIENT_NAME&#8221; &#8220;DBaaS&#8221; &#8220;$DB_TYPE&#8221; &#8220;$VM_ID&#8221; &#8220;$VM_NAME&#8221; &#8220;$VNET_NAME&#8221;</p><p>            # Iniciar VM</p><p>            read -p &#8220;Deseja iniciar a VM agora? (s/n - padr&#227;o: s): &#8220; START_VM</p><p>            START_VM=${START_VM:-s}</p><p>            if [[ &#8220;$START_VM&#8221; =~ ^[Ss]$ ]]; then</p><p>                print_msg &#8220;Iniciando VM $VM_ID...&#8221;</p><p>                $SSH_CMD &#8220;qm start $VM_ID&#8221;</p><p>                print_success &#8220;VM iniciada!&#8221;</p><p>            fi</p><p>            print_header &#8220;VM CRIADA COM SUCESSO!&#8221;</p><p>            echo &#8220;ID: $VM_ID&#8221;</p><p>            echo &#8220;Nome: $VM_NAME&#8221;</p><p>            echo &#8220;Tipo: ${DB_TYPE^^}&#8221;</p><p>            echo &#8220;Pool: $CLIENT_POOL&#8221;</p><p>            echo &#8220;VNet: $VNET_NAME&#8221;</p><p>        else</p><p>            print_error &#8220;Falha na cria&#231;&#227;o da VM!&#8221;</p><p>            exit 1</p><p>        fi</p><p>        ;;</p><p>    2)</p><p>        # KaaS</p><p>        print_header &#8220;KaaS - KUBERNETES CLUSTER&#8221;</p><p>        print_info &#8220;As VMs ser&#227;o criadas na faixa de IDs 2000-2999&#8221;</p><p>        echo &#8220;&#8221;</p><p>        print_info &#8220;Ser&#225; criado um cluster Kubernetes com:&#8221;</p><p>        echo &#8220;  1. HAProxy (Load Balancer)&#8221;</p><p>        echo &#8220;  2. N Control Planes&#8221;</p><p>        echo &#8220;  3. N Workers&#8221;</p><p>        echo &#8220;&#8221;</p><p>        # Coletar informa&#231;&#245;es do cluster</p><p>        read -p &#8220;Quantidade de Control Planes (padr&#227;o: 1): &#8220; CP_COUNT</p><p>        CP_COUNT=${CP_COUNT:-1}</p><p>        read -p &#8220;Quantidade de Workers (padr&#227;o: 2): &#8220; WORKER_COUNT</p><p>        WORKER_COUNT=${WORKER_COUNT:-2}</p><p>        # Configura&#231;&#245;es de hardware</p><p>        echo &#8220;&#8221;</p><p>        print_header &#8220;CONFIGURA&#199;&#213;ES DE HARDWARE&#8221;</p><p>        read -p &#8220;CPUs por Control Plane (padr&#227;o: 2): &#8220; CP_CPU</p><p>        CP_CPU=${CP_CPU:-2}</p><p>        read -p &#8220;Mem&#243;ria por Control Plane em MB (padr&#227;o: 4096): &#8220; CP_MEM</p><p>        CP_MEM=${CP_MEM:-4096}</p><p>        read -p &#8220;Disco por Control Plane em GB (padr&#227;o: auto): &#8220; CP_DISK</p><p>        CP_DISK=${CP_DISK:-auto}</p><p>        read -p &#8220;CPUs por Worker (padr&#227;o: 4): &#8220; WORKER_CPU</p><p>        WORKER_CPU=${WORKER_CPU:-4}</p><p>        read -p &#8220;Mem&#243;ria por Worker em MB (padr&#227;o: 8192): &#8220; WORKER_MEM</p><p>        WORKER_MEM=${WORKER_MEM:-8192}</p><p>        read -p &#8220;Disco por Worker em GB (padr&#227;o: auto): &#8220; WORKER_DISK</p><p>        WORKER_DISK=${WORKER_DISK:-auto}</p><p>        # Storage</p><p>        STORAGE=$($SSH_CMD &#8220;pvesh get /nodes/localhost/storage --output-format json&#8221; 2&gt;/dev/null | grep -oP &#8216;&#8221;storage&#8221;:&#8221;\K[^&#8221;]+&#8217; | head -1)</p><p>        STORAGE=${STORAGE:-&#8221;local-lvm&#8221;}</p><p>        read -p &#8220;Storage para as VMs (padr&#227;o: $STORAGE): &#8220; CUSTOM_STORAGE</p><p>        STORAGE=${CUSTOM_STORAGE:-$STORAGE}</p><p>        # Calcular total de VMs necess&#225;rias</p><p>        TOTAL_VMS=$((1 + $CP_COUNT + $WORKER_COUNT))  # HAProxy + Control Planes + Workers</p><p>        # Verificar disponibilidade da faixa de IDs</p><p>        print_header &#8220;VERIFICANDO DISPONIBILIDADE DE IDs&#8221;</p><p>        if ! check_kaas_range_availability &#8220;$SSH_CMD&#8221; $TOTAL_VMS; then</p><p>            print_error &#8220;N&#227;o h&#225; IDs suficientes na faixa 2000-2999 para criar o cluster.&#8221;</p><p>            exit 1</p><p>        fi</p><p>        # Resumo</p><p>        print_header &#8220;RESUMO DO CLUSTER&#8221;</p><p>        echo &#8220;Cliente: $CLIENT_NAME&#8221;</p><p>        echo &#8220;Pool: $CLIENT_POOL&#8221;</p><p>        echo &#8220;VNet: $VNET_NAME&#8221;</p><p>        echo &#8220;Total de VMs: $TOTAL_VMS (IDs na faixa 2000-2999)&#8221;</p><p>        echo &#8220;Control Planes: $CP_COUNT (CPU: $CP_CPU, Mem: ${CP_MEM}MB)&#8221;</p><p>        echo &#8220;Workers: $WORKER_COUNT (CPU: $WORKER_CPU, Mem: ${WORKER_MEM}MB)&#8221;</p><p>        echo &#8220;Storage: $STORAGE&#8221;</p><p>        echo &#8220;&#8221;</p><p>        read -p &#8220;Confirmar cria&#231;&#227;o do cluster? (s/n): &#8220; CONFIRM</p><p>        if [[ ! &#8220;$CONFIRM&#8221; =~ ^[Ss]$ ]]; then</p><p>            print_warning &#8220;Opera&#231;&#227;o cancelada.&#8221;</p><p>            exit 0</p><p>        fi</p><p>        # Lista para armazenar nomes dos Control Planes</p><p>        CP_NAMES=()</p><p>        CP_IDS=()</p><p>        # 1. Criar HAProxy</p><p>        print_header &#8220;CRIANDO HAProxy (Load Balancer)&#8221;</p><p>        HAPROXY_ID=$(get_next_vmid_kaas &#8220;$SSH_CMD&#8221;)</p><p>        if [ $? -ne 0 ]; then</p><p>            print_error &#8220;Falha ao obter ID para HAProxy&#8221;</p><p>            exit 1</p><p>        fi</p><p>        HAPROXY_NAME=&#8221;${CLIENT_NAME}-haproxy&#8221;</p><p>        create_vm_from_template &#8220;$SSH_CMD&#8221; &#8220;122&#8221; &#8220;$HAPROXY_ID&#8221; &#8220;$HAPROXY_NAME&#8221; &#8220;$STORAGE&#8221; &#8220;$VNET_NAME&#8221; &#8220;2&#8221; &#8220;2048&#8221; &#8220;auto&#8221;</p><p>        if [ $? -eq 0 ]; then</p><p>            $SSH_CMD &#8220;pvesh set /pools/$CLIENT_POOL --vms $HAPROXY_ID&#8221;</p><p>            save_vm_config &#8220;$CLIENT_NAME&#8221; &#8220;KaaS&#8221; &#8220;haproxy&#8221; &#8220;$HAPROXY_ID&#8221; &#8220;$HAPROXY_NAME&#8221; &#8220;$VNET_NAME&#8221;</p><p>            print_success &#8220;HAProxy criado: ID $HAPROXY_ID (faixa 2000-2999)&#8221;</p><p>        else</p><p>            print_error &#8220;Falha ao criar HAProxy&#8221;</p><p>            exit 1</p><p>        fi</p><p>        # 2. Criar Control Planes</p><p>        print_header &#8220;CRIANDO CONTROL PLANES&#8221;</p><p>        for i in $(seq 1 $CP_COUNT); do</p><p>            CP_ID=$(get_next_vmid_kaas &#8220;$SSH_CMD&#8221;)</p><p>            if [ $? -ne 0 ]; then</p><p>                print_error &#8220;Falha ao obter ID para Control Plane $i&#8221;</p><p>                exit 1</p><p>            fi</p><p>            CP_NAME=&#8221;${CLIENT_NAME}-cp-${i}&#8221;</p><p>            CP_NAMES+=(&#8221;$CP_NAME&#8221;)</p><p>            CP_IDS+=(&#8221;$CP_ID&#8221;)</p><p>            print_msg &#8220;Criando Control Plane $i/$CP_COUNT (ID: $CP_ID)...&#8221;</p><p>            create_vm_from_template &#8220;$SSH_CMD&#8221; &#8220;120&#8221; &#8220;$CP_ID&#8221; &#8220;$CP_NAME&#8221; &#8220;$STORAGE&#8221; &#8220;$VNET_NAME&#8221; &#8220;$CP_CPU&#8221; &#8220;$CP_MEM&#8221; &#8220;$CP_DISK&#8221;</p><p>            if [ $? -eq 0 ]; then</p><p>                $SSH_CMD &#8220;pvesh set /pools/$CLIENT_POOL --vms $CP_ID&#8221;</p><p>                save_vm_config &#8220;$CLIENT_NAME&#8221; &#8220;KaaS&#8221; &#8220;control-plane&#8221; &#8220;$CP_ID&#8221; &#8220;$CP_NAME&#8221; &#8220;$VNET_NAME&#8221;</p><p>                print_success &#8220;Control Plane $i criado: ID $CP_ID&#8221;</p><p>            else</p><p>                print_error &#8220;Falha ao criar Control Plane $i&#8221;</p><p>                exit 1</p><p>            fi</p><p>        done</p><p>        # 3. Criar Workers</p><p>        print_header &#8220;CRIANDO WORKERS&#8221;</p><p>        for i in $(seq 1 $WORKER_COUNT); do</p><p>            WORKER_ID=$(get_next_vmid_kaas &#8220;$SSH_CMD&#8221;)</p><p>            if [ $? -ne 0 ]; then</p><p>                print_error &#8220;Falha ao obter ID para Worker $i&#8221;</p><p>                exit 1</p><p>            fi</p><p>            WORKER_NAME=&#8221;${CLIENT_NAME}-worker-${i}&#8221;</p><p>            print_msg &#8220;Criando Worker $i/$WORKER_COUNT (ID: $WORKER_ID)...&#8221;</p><p>            create_vm_from_template &#8220;$SSH_CMD&#8221; &#8220;121&#8221; &#8220;$WORKER_ID&#8221; &#8220;$WORKER_NAME&#8221; &#8220;$STORAGE&#8221; &#8220;$VNET_NAME&#8221; &#8220;$WORKER_CPU&#8221; &#8220;$WORKER_MEM&#8221; &#8220;$WORKER_DISK&#8221;</p><p>            if [ $? -eq 0 ]; then</p><p>                $SSH_CMD &#8220;pvesh set /pools/$CLIENT_POOL --vms $WORKER_ID&#8221;</p><p>                save_vm_config &#8220;$CLIENT_NAME&#8221; &#8220;KaaS&#8221; &#8220;worker&#8221; &#8220;$WORKER_ID&#8221; &#8220;$WORKER_NAME&#8221; &#8220;$VNET_NAME&#8221;</p><p>                print_success &#8220;Worker $i criado: ID $WORKER_ID&#8221;</p><p>            else</p><p>                print_error &#8220;Falha ao criar Worker $i&#8221;</p><p>                exit 1</p><p>            fi</p><p>        done</p><p>        # 4. Configurar HAProxy</p><p>        print_header &#8220;CONFIGURANDO HAPROXY&#8221;</p><p>        # Montar string com os IPs dos Control Planes</p><p>        # Nota: Para obter os IPs reais, seria necess&#225;rio consultar o DHCP ou configurar IPs est&#225;ticos</p><p>        # Por enquanto, usamos os nomes das VMs como refer&#234;ncia</p><p>        CP_SERVERS=&#8221;&#8220;</p><p>        for cp_name in &#8220;${CP_NAMES[@]}&#8221;; do</p><p>            CP_SERVERS=&#8221;${CP_SERVERS}    server ${cp_name} ${cp_name}\n&#8221;</p><p>        done</p><p>        configure_haproxy &#8220;$SSH_CMD&#8221; &#8220;$HAPROXY_ID&#8221; &#8220;$CLIENT_NAME&#8221; &#8220;$VNET_NAME&#8221; &#8220;$CP_SERVERS&#8221;</p><p>        # 5. Resumo final</p><p>        print_header &#8220;CLUSTER KUBERNETES CRIADO COM SUCESSO!&#8221;</p><p>        echo &#8220;Cliente: $CLIENT_NAME&#8221;</p><p>        echo &#8220;Pool: $CLIENT_POOL&#8221;</p><p>        echo &#8220;VNet: $VNET_NAME&#8221;</p><p>        echo &#8220;Faixa de IDs utilizada: 2000-2999&#8221;</p><p>        echo &#8220;&#8221;</p><p>        echo &#8220;Componentes do cluster:&#8221;</p><p>        echo &#8220;  - HAProxy: ID $HAPROXY_ID ($HAPROXY_NAME)&#8221;</p><p>        echo &#8220;  - Control Planes: $CP_COUNT&#8221;</p><p>        for i in $(seq 0 $((CP_COUNT-1))); do</p><p>            echo &#8220;    * ${CP_NAMES[$i]} (ID: ${CP_IDS[$i]})&#8221;</p><p>        done</p><p>        echo &#8220;  - Workers: $WORKER_COUNT&#8221;</p><p>        echo &#8220;&#8221;</p><p>        print_info &#8220;Pr&#243;ximos passos:&#8221;</p><p>        echo &#8220;  1. Iniciar todas as VMs:&#8221;</p><p>        echo &#8220;     ssh root@$PROXMOX_IP \&#8221;qm start $HAPROXY_ID\&#8221;&#8220;</p><p>        for cp_id in &#8220;${CP_IDS[@]}&#8221;; do</p><p>            echo &#8220;     ssh root@$PROXMOX_IP \&#8221;qm start $cp_id\&#8221;&#8220;</p><p>        done</p><p>        for i in $(seq 1 $WORKER_COUNT); do</p><p>            echo &#8220;     ssh root@$PROXMOX_IP \&#8221;qm start ${CLIENT_NAME}-worker-${i}\&#8221; (verificar ID)&#8221;</p><p>        done</p><p>        echo &#8220;&#8221;</p><p>        echo &#8220;  2. Configurar o HAProxy com o arquivo salvo em:&#8221;</p><p>        echo &#8220;     ${LOG_DIR}/${CLIENT_NAME}/haproxy.cfg&#8221;</p><p>        echo &#8220;&#8221;</p><p>        echo &#8220;  3. Obter os IPs das VMs:&#8221;</p><p>        echo &#8220;     ssh root@$PROXMOX_IP \&#8221;qm guest cmd $HAPROXY_ID network-get-interfaces\&#8221;&#8220;</p><p>        echo &#8220;&#8221;</p><p>        echo &#8220;  4. Inicializar o cluster Kubernetes seguindo a documenta&#231;&#227;o&#8221;</p><p>        ;;</p><p>    3)</p><p>        echo &#8220;Saindo...&#8221;</p><p>        exit 0</p><p>        ;;</p><p>    *)</p><p>        print_error &#8220;Op&#231;&#227;o inv&#225;lida!&#8221;</p><p>        exit 1</p><p>        ;;</p><p>esac</p><p>echo &#8220;&#8221;</p><p>print_success &#8220;Processo conclu&#237;do!&#8221;</p><p>print_msg &#8220;Logs e configura&#231;&#245;es salvos em: ${LOG_DIR}/${CLIENT_NAME}/&#8221;</p><p></p>]]></content:encoded></item><item><title><![CDATA[Criação da infraestrutura de rede via script]]></title><description><![CDATA[# Criando Redes Virtuais Isoladas no Proxmox com SDN (Shell Script)]]></description><link>https://emersondominguescmara.substack.com/p/criacao-da-infraestrutura-de-rede</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/criacao-da-infraestrutura-de-rede</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 13 May 2026 16:35:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!VNBm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VNBm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VNBm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 424w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 848w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 1272w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VNBm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png" width="373" height="427" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:427,&quot;width&quot;:373,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:304038,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/197541216?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VNBm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 424w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 848w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 1272w, https://substackcdn.com/image/fetch/$s_!VNBm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda6c7b08-cd64-4949-b660-0ce60df0ebf5_373x427.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p># Criando Redes Virtuais Isoladas no Proxmox com SDN (Shell Script)</p><p>No post anterior, mostrei como automatizar a cria&#231;&#227;o de usu&#225;rios e pools no Proxmox. Hoje vou al&#233;m: **automatizar a cria&#231;&#227;o de redes virtuais isoladas (VLANs) usando o SDN do Proxmox VE**.</p><p>Este script resolve um problema comum em ambientes multi-tenant: como entregar redes completamente isoladas para cada cliente, com seu pr&#243;prio range de IPs, gateway e op&#231;&#227;o de sa&#237;da para internet (SNAT).</p><p>## O que o SDN do Proxmox oferece?</p><p>O Proxmox SDN (Software Defined Networking) permite:</p><p>- Criar zonas e VNets isoladas por VLAN</p><p>- Gerenciar IPs automaticamente (IPAM)</p><p>- Configurar sub-redes com gateway e SNAT</p><p>- Isolar portas para evitar comunica&#231;&#227;o direta entre VMs</p><p>## O que o script faz?</p><p>1. **Coleta informa&#231;&#245;es interativamente** com valida&#231;&#245;es robustas:</p><p>   - IP do servidor Proxmox, usu&#225;rio e senha/chave SSH</p><p>   - Nome da zona, bridge e IPAM</p><p>   - Nome da VNet, VLAN tag (1-4094)</p><p>   - Sub-rede (IP + CIDR) e gateway</p><p>   - Op&#231;&#245;es de isolamento de portas e SNAT</p><p>2. **Testa a conex&#227;o SSH** antes de qualquer a&#231;&#227;o</p><p>3. **Executa comandos remotos via `pvesh`** para:</p><p>   - Criar/verificar a zona VLAN</p><p>   - Criar a VNet com a VLAN tag especificada</p><p>   - Criar a sub-rede com gateway e SNAT opcional</p><p>   - Aplicar a configura&#231;&#227;o SDN</p><p>4. **Exibe resumo colorido** da cria&#231;&#227;o</p><p>5. **Opcionalmente salva** a configura&#231;&#227;o em arquivo `.conf`</p><p>## Destaques t&#233;cnicos</p><p>### Valida&#231;&#245;es rigorosas</p><p>validate_ip()    # Formato IPv4</p><p>validate_cidr()  # 0-32</p><p>validate_vlan()  # 1-4094</p><p>validate_name()  # A-Z, a-z, 0-9, _ e -</p><p>### Suporte a senha ou chave SSH</p><p>if [ -n &#8220;$SSH_PASS&#8221; ]; then</p><p>    SSH_CMD=&#8221;sshpass -p &#8216;$SSH_PASS&#8217; ssh ...&#8221;</p><p>else</p><p>    SSH_CMD=&#8221;ssh ...&#8221;  # usa chave SSH</p><p>fi</p><p>### Comandos `pvesh` utilizados</p><p># Criar/verificar zona</p><p>pvesh get /cluster/sdn/zones/$ZONE_NAME</p><p>pvesh create /cluster/sdn/zones --type vlan --zone $ZONE_NAME --bridge $BRIDGE --ipam $IPAM</p><p># Criar VNet</p><p>pvesh create /cluster/sdn/vnets --vnet $VNET_NAME --zone $ZONE_NAME --tag $VLAN_TAG --isolate-ports $ISOLATE</p><p># Criar sub-rede</p><p>pvesh create /cluster/sdn/vnets/$VNET_NAME/subnets --subnet $SUBNET --gateway $GATEWAY --type subnet --snat $SNAT</p><p># Aplicar configura&#231;&#227;o</p><p>pvesh set /cluster/sdn</p><p>## Como usar</p><p># Torne o script execut&#225;vel</p><p>chmod +x criar_vnet.sh</p><p># Execute</p><p>./criar_vnet.sh</p><p>### Exemplo de execu&#231;&#227;o</p><p>=========================================</p><p>   CRIADOR DE VNET - PROXMOX SDN</p><p>=========================================</p><p>Digite o IP do servidor Proxmox: 192.168.2.200</p><p>Digite o usu&#225;rio SSH (padr&#227;o: root): root</p><p>Digite a senha SSH (ou pressione Enter): </p><p>Nome da zona (padr&#227;o: DBaaS): DBaaS</p><p>Bridge de rede (padr&#227;o: vmbr1): vmbr1</p><p>IPAM (padr&#227;o: pve): pve</p><p>Nome da VNet (ex: cliente1): cliente_acme</p><p>VLAN TAG (1-4094): 101</p><p>Isolar portas? (s/n - padr&#227;o: s): s</p><p>Rede (ex: 10.0.101.0): 10.0.101.0</p><p>M&#225;scara CIDR (0-32): 24</p><p>Gateway (ex: 10.0.101.1): 10.0.101.1</p><p>Ativar SNAT para acesso &#224; internet? (s/n - padr&#227;o: s): s</p><p>&#9989; VNET CRIADA COM SUCESSO!</p><p>- VNet: cliente_acme (VLAN: 101)</p><p>- Sub-rede: 10.0.101.0/24 (Gateway: 10.0.101.1)</p><p>## Integra&#231;&#227;o com o script anterior</p><p>O script j&#225; salva um arquivo de estado em JSON para ser consumido por outros processos:</p><p>json</p><p>{</p><p>  &#8220;vnet_name&#8221;: &#8220;cliente_acme&#8221;,</p><p>  &#8220;vlan_id&#8221;: 101,</p><p>  &#8220;bridge&#8221;: &#8220;cliente_acme&#8221;,</p><p>  &#8220;subnet&#8221;: &#8220;10.0.101.0/24&#8221;,</p><p>  &#8220;gateway&#8221;: &#8220;10.0.101.1&#8221;</p><p>}</p><p>Isso permite, por exemplo, criar automaticamente um pool de usu&#225;rios e uma rede dedicada para o mesmo cliente.</p><p>## Casos de uso</p><p>- **Provedores de hospedagem** - cada cliente recebe uma VLAN isolada</p><p>- **Ambientes de desenvolvimento** - equipes com redes separadas</p><p>- **Laborat&#243;rios de treinamento** - turmas em redes distintas</p><p>- **DBaaS (Database as a Service)** - bancos de dados em redes privadas</p><p>## Depend&#234;ncias</p><p>No servidor onde o script &#233; executado (n&#227;o no Proxmox):</p><p>- `sshpass` (opcional, para usar senha em vez de chave SSH)</p><p>- `bash` 4.0+</p><p>Instalar no Ubuntu/Debian:</p><p>sudo apt install sshpass</p><p>## Por que isso &#233; &#250;til?</p><p>- **Consist&#234;ncia** - evita erros manuais na configura&#231;&#227;o de VLANs</p><p>- **Velocidade** - cria&#231;&#227;o de rede completa em segundos</p><p>- **Documenta&#231;&#227;o** - resumo e arquivo de configura&#231;&#227;o gerados automaticamente</p><p>- **Reprodutibilidade** - as mesmas configura&#231;&#245;es podem ser recriadas</p><p>- **Integra&#231;&#227;o** - sa&#237;da em JSON para uso em APIs ou orquestradores</p><p>## Pr&#243;ximos passos</p><p>Combinando os dois scripts (`criar_usuario.sh` + `criar_vnet.sh`), voc&#234; pode:</p><p>1. Criar um usu&#225;rio e pool para o cliente</p><p>2. Criar uma rede isolada (VLAN) dedicada</p><p>3. Associar VMs do cliente &#224; rede correta</p><p>4. Gerar automaticamente as credenciais e configura&#231;&#245;es de rede</p><p>Isso forma a base de uma **plataforma de automa&#231;&#227;o multi-tenant** completa.</p><p>---</p><p>Quer receber os pr&#243;ximos posts? Assine o substack! &#128640;</p><p></p><p></p><p>Conte&#250;do do script:</p><p></p><p>#!/bin/bash</p><p># Cores para output</p><p>RED=&#8217;\033[0;31m&#8217;</p><p>GREEN=&#8217;\033[0;32m&#8217;</p><p>YELLOW=&#8217;\033[1;33m&#8217;</p><p>NC=&#8217;\033[0m&#8217; # No Color</p><p># Fun&#231;&#227;o para imprimir mensagens coloridas</p><p>print_msg() {</p><p>    echo -e &#8220;${GREEN}[INFO]${NC} $1&#8221;</p><p>}</p><p>print_error() {</p><p>    echo -e &#8220;${RED}[ERRO]${NC} $1&#8221;</p><p>}</p><p>print_warning() {</p><p>    echo -e &#8220;${YELLOW}[ATEN&#199;&#195;O]${NC} $1&#8221;</p><p>}</p><p># Fun&#231;&#227;o para validar IP</p><p>validate_ip() {</p><p>    local ip=$1</p><p>    if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para validar CIDR</p><p>validate_cidr() {</p><p>    local cidr=$1</p><p>    if [[ $cidr =~ ^[0-9]{1,2}$ ]] &amp;&amp; [ $cidr -ge 0 ] &amp;&amp; [ $cidr -le 32 ]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para validar VLAN ID</p><p>validate_vlan() {</p><p>    local vlan=$1</p><p>    if [[ $vlan =~ ^[0-9]+$ ]] &amp;&amp; [ $vlan -ge 1 ] &amp;&amp; [ $vlan -le 4094 ]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Fun&#231;&#227;o para validar nome (apenas letras, n&#250;meros e h&#237;fen)</p><p>validate_name() {</p><p>    local name=$1</p><p>    if [[ $name =~ ^[a-zA-Z0-9_-]+$ ]]; then</p><p>        return 0</p><p>    else</p><p>        return 1</p><p>    fi</p><p>}</p><p># Coletar informa&#231;&#245;es do servidor Proxmox</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;   CRIADOR DE VNET - PROXMOX SDN&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;&#8221;</p><p>while true; do</p><p>    read -p &#8220;Digite o IP do servidor Proxmox (ex: 192.168.2.200): &#8220; PROXMOX_IP</p><p>    if validate_ip &#8220;$PROXMOX_IP&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;IP inv&#225;lido! Digite um IP v&#225;lido (ex: 192.168.2.200)&#8221;</p><p>    fi</p><p>done</p><p>read -p &#8220;Digite o usu&#225;rio SSH (padr&#227;o: root): &#8220; SSH_USER</p><p>SSH_USER=${SSH_USER:-root}</p><p>read -sp &#8220;Digite a senha SSH (ou pressione Enter se usar chave SSH): &#8220; SSH_PASS</p><p>echo &#8220;&#8221;</p><p>if [ -n &#8220;$SSH_PASS&#8221; ]; then</p><p>    SSH_CMD=&#8221;sshpass -p &#8216;$SSH_PASS&#8217; ssh -o StrictHostKeyChecking=no $SSH_USER@$PROXMOX_IP&#8221;</p><p>else</p><p>    SSH_CMD=&#8221;ssh -o StrictHostKeyChecking=no $SSH_USER@$PROXMOX_IP&#8221;</p><p>fi</p><p># Testar conex&#227;o SSH</p><p>print_msg &#8220;Testando conex&#227;o SSH...&#8221;</p><p>if ! $SSH_CMD &#8220;echo &#8216;Conex&#227;o OK&#8217;&#8221; &gt; /dev/null 2&gt;&amp;1; then</p><p>    print_error &#8220;N&#227;o foi poss&#237;vel conectar ao servidor Proxmox. Verifique IP, usu&#225;rio e senha/chave SSH.&#8221;</p><p>    exit 1</p><p>fi</p><p>print_msg &#8220;Conex&#227;o SSH estabelecida com sucesso!&#8221;</p><p>echo &#8220;&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;   CONFIGURA&#199;&#195;O DA ZONA&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>read -p &#8220;Nome da zona (padr&#227;o: DBaaS): &#8220; ZONE_NAME</p><p>ZONE_NAME=${ZONE_NAME:-DBaaS}</p><p>read -p &#8220;Bridge de rede (padr&#227;o: vmbr1): &#8220; BRIDGE</p><p>BRIDGE=${BRIDGE:-vmbr1}</p><p>read -p &#8220;IPAM (padr&#227;o: pve): &#8220; IPAM</p><p>IPAM=${IPAM:-pve}</p><p>echo &#8220;&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;   CONFIGURA&#199;&#195;O DA VNET&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>while true; do</p><p>    read -p &#8220;Nome da VNet (ex: cliente1, hragem, produ&#231;&#227;o): &#8220; VNET_NAME</p><p>    if validate_name &#8220;$VNET_NAME&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;Nome inv&#225;lido! Use apenas letras, n&#250;meros, h&#237;fen ou underscore.&#8221;</p><p>    fi</p><p>done</p><p>while true; do</p><p>    read -p &#8220;VLAN TAG (1-4094): &#8220; VLAN_TAG</p><p>    if validate_vlan &#8220;$VLAN_TAG&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;VLAN TAG inv&#225;lida! Use um n&#250;mero entre 1 e 4094.&#8221;</p><p>    fi</p><p>done</p><p>read -p &#8220;Isolar portas? (s/n - padr&#227;o: s): &#8220; ISOLATE_PORTS</p><p>if [[ &#8220;$ISOLATE_PORTS&#8221; =~ ^[SsNn]$ ]]; then</p><p>    if [[ &#8220;$ISOLATE_PORTS&#8221; =~ ^[Ss]$ ]]; then</p><p>        ISOLATE=1</p><p>    else</p><p>        ISOLATE=0</p><p>    fi</p><p>else</p><p>    ISOLATE=1</p><p>fi</p><p>echo &#8220;&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;   CONFIGURA&#199;&#195;O DA SUB-REDE&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>while true; do</p><p>    read -p &#8220;Rede (ex: 10.0.101.0): &#8220; SUBNET_IP</p><p>    if validate_ip &#8220;$SUBNET_IP&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;IP de rede inv&#225;lido!&#8221;</p><p>    fi</p><p>done</p><p>while true; do</p><p>    read -p &#8220;M&#225;scara CIDR (0-32): &#8220; CIDR</p><p>    if validate_cidr &#8220;$CIDR&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;CIDR inv&#225;lido! Use um n&#250;mero entre 0 e 32.&#8221;</p><p>    fi</p><p>done</p><p>SUBNET=&#8221;$SUBNET_IP/$CIDR&#8221;</p><p>while true; do</p><p>    read -p &#8220;Gateway (ex: 10.0.101.1): &#8220; GATEWAY</p><p>    if validate_ip &#8220;$GATEWAY&#8221;; then</p><p>        break</p><p>    else</p><p>        print_error &#8220;Gateway inv&#225;lido!&#8221;</p><p>    fi</p><p>done</p><p>read -p &#8220;Ativar SNAT para acesso &#224; internet? (s/n - padr&#227;o: s): &#8220; ENABLE_SNAT</p><p>if [[ &#8220;$ENABLE_SNAT&#8221; =~ ^[SsNn]$ ]]; then</p><p>    if [[ &#8220;$ENABLE_SNAT&#8221; =~ ^[Ss]$ ]]; then</p><p>        SNAT=1</p><p>    else</p><p>        SNAT=0</p><p>    fi</p><p>else</p><p>    SNAT=1</p><p>fi</p><p>echo &#8220;&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;   RESUMO DA CONFIGURA&#199;&#195;O&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;Servidor Proxmox: $PROXMOX_IP&#8221;</p><p>echo &#8220;Usu&#225;rio SSH: $SSH_USER&#8221;</p><p>echo &#8220;Zona: $ZONE_NAME&#8221;</p><p>echo &#8220;Bridge: $BRIDGE&#8221;</p><p>echo &#8220;IPAM: $IPAM&#8221;</p><p>echo &#8220;VNet: $VNET_NAME&#8221;</p><p>echo &#8220;VLAN TAG: $VLAN_TAG&#8221;</p><p>echo &#8220;Isolar Portas: $([ $ISOLATE -eq 1 ] &amp;&amp; echo &#8216;Sim&#8217; || echo &#8216;N&#227;o&#8217;)&#8221;</p><p>echo &#8220;Sub-rede: $SUBNET&#8221;</p><p>echo &#8220;Gateway: $GATEWAY&#8221;</p><p>echo &#8220;SNAT: $([ $SNAT -eq 1 ] &amp;&amp; echo &#8216;Sim&#8217; || echo &#8216;N&#227;o&#8217;)&#8221;</p><p>echo &#8220;&#8221;</p><p>read -p &#8220;Confirmar cria&#231;&#227;o? (s/n): &#8220; CONFIRM</p><p>if [[ ! &#8220;$CONFIRM&#8221; =~ ^[Ss]$ ]]; then</p><p>    print_warning &#8220;Opera&#231;&#227;o cancelada pelo usu&#225;rio.&#8221;</p><p>    exit 0</p><p>fi</p><p>echo &#8220;&#8221;</p><p>print_msg &#8220;Iniciando cria&#231;&#227;o da VNet...&#8221;</p><p># 1. Criar/Verificar a zona</p><p>print_msg &#8220;Criando/Verificando zona $ZONE_NAME...&#8221;</p><p>$SSH_CMD &#8220;pvesh get /cluster/sdn/zones/$ZONE_NAME&#8221; &gt; /dev/null 2&gt;&amp;1</p><p>if [ $? -ne 0 ]; then</p><p>    $SSH_CMD &#8220;pvesh create /cluster/sdn/zones --type vlan --zone $ZONE_NAME --bridge $BRIDGE --ipam $IPAM&#8221;</p><p>    if [ $? -eq 0 ]; then</p><p>        print_msg &#8220;Zona $ZONE_NAME criada com sucesso!&#8221;</p><p>    else</p><p>        print_error &#8220;Falha ao criar zona $ZONE_NAME&#8221;</p><p>        exit 1</p><p>    fi</p><p>else</p><p>    print_msg &#8220;Zona $ZONE_NAME j&#225; existe, continuando...&#8221;</p><p>fi</p><p># 2. Criar a VNet</p><p>print_msg &#8220;Criando VNet $VNET_NAME...&#8221;</p><p>$SSH_CMD &#8220;pvesh create /cluster/sdn/vnets --vnet $VNET_NAME --zone $ZONE_NAME --tag $VLAN_TAG --isolate-ports $ISOLATE&#8221;</p><p>if [ $? -eq 0 ]; then</p><p>    print_msg &#8220;VNet $VNET_NAME criada com sucesso!&#8221;</p><p>else</p><p>    print_error &#8220;Falha ao criar VNet $VNET_NAME&#8221;</p><p>    exit 1</p><p>fi</p><p># 3. Criar a sub-rede</p><p>print_msg &#8220;Criando sub-rede $SUBNET...&#8221;</p><p>if [ $SNAT -eq 1 ]; then</p><p>    $SSH_CMD &#8220;pvesh create /cluster/sdn/vnets/$VNET_NAME/subnets --subnet $SUBNET --gateway $GATEWAY --type subnet --snat 1&#8221;</p><p>else</p><p>    $SSH_CMD &#8220;pvesh create /cluster/sdn/vnets/$VNET_NAME/subnets --subnet $SUBNET --gateway $GATEWAY --type subnet&#8221;</p><p>fi</p><p>if [ $? -eq 0 ]; then</p><p>    print_msg &#8220;Sub-rede criada com sucesso!&#8221;</p><p>else</p><p>    print_error &#8220;Falha ao criar sub-rede&#8221;</p><p>    exit 1</p><p>fi</p><p># 4. Aplicar a configura&#231;&#227;o</p><p>print_msg &#8220;Aplicando configura&#231;&#227;o SDN...&#8221;</p><p>$SSH_CMD &#8220;pvesh set /cluster/sdn&#8221;</p><p>if [ $? -eq 0 ]; then</p><p>    print_msg &#8220;Configura&#231;&#227;o aplicada com sucesso!&#8221;</p><p>else</p><p>    print_error &#8220;Falha ao aplicar configura&#231;&#227;o&#8221;</p><p>    exit 1</p><p>fi</p><p>echo &#8220;&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo -e &#8220;${GREEN}&#9989; VNET CRIADA COM SUCESSO!${NC}&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p>echo &#8220;Resumo da cria&#231;&#227;o:&#8221;</p><p>echo &#8220;- Zona: $ZONE_NAME&#8221;</p><p>echo &#8220;- VNet: $VNET_NAME (VLAN: $VLAN_TAG)&#8221;</p><p>echo &#8220;- Sub-rede: $SUBNET (Gateway: $GATEWAY)&#8221;</p><p>echo &#8220;- SNAT: $([ $SNAT -eq 1 ] &amp;&amp; echo &#8216;Ativado&#8217; || echo &#8216;Desativado&#8217;)&#8221;</p><p>echo &#8220;- Isolamento de portas: $([ $ISOLATE -eq 1 ] &amp;&amp; echo &#8216;Ativado&#8217; || echo &#8216;Desativado&#8217;)&#8221;</p><p>echo &#8220;=========================================&#8221;</p><p># Opcional: Salvar configura&#231;&#227;o em arquivo</p><p>read -p &#8220;Salvar esta configura&#231;&#227;o em um arquivo? (s/n): &#8220; SAVE_CONFIG</p><p>if [[ &#8220;$SAVE_CONFIG&#8221; =~ ^[Ss]$ ]]; then</p><p>    CONFIG_FILE=&#8221;vnet_${VNET_NAME}_$(date +%Y%m%d_%H%M%S).conf&#8221;</p><p>    cat &gt; &#8220;$CONFIG_FILE&#8221; &lt;&lt; EOF</p><p># Configura&#231;&#227;o VNet - $VNET_NAME</p><p># Criado em: $(date)</p><p>PROXMOX_IP=&#8221;$PROXMOX_IP&#8221;</p><p>SSH_USER=&#8221;$SSH_USER&#8221;</p><p>ZONE_NAME=&#8221;$ZONE_NAME&#8221;</p><p>BRIDGE=&#8221;$BRIDGE&#8221;</p><p>IPAM=&#8221;$IPAM&#8221;</p><p>VNET_NAME=&#8221;$VNET_NAME&#8221;</p><p>VLAN_TAG=&#8221;$VLAN_TAG&#8221;</p><p>ISOLATE=&#8221;$ISOLATE&#8221;</p><p>SUBNET=&#8221;$SUBNET&#8221;</p><p>GATEWAY=&#8221;$GATEWAY&#8221;</p><p>SNAT=&#8221;$SNAT&#8221;</p><p>EOF</p><p>    print_msg &#8220;Configura&#231;&#227;o salva em: $CONFIG_FILE&#8221;</p><p># Ap&#243;s criar a VNet, salvar no estado global</p><p># Adicione estas linhas no final do script criar_vnet.sh, antes do exit</p><p># Salvar informa&#231;&#245;es da VNet para o estado global</p><p>if [ -n &#8220;$VNET_NAME&#8221; ]; then</p><p>    # Criar arquivo de estado para o orquestrador</p><p>    mkdir -p /home/elmotecnologia/projetos/deploy-automacao/.state</p><p>    cat &gt; /home/elmotecnologia/projetos/deploy-automacao/.state/vnet_info.json &lt;&lt; EOF</p><p>{</p><p>  &#8220;vnet_name&#8221;: &#8220;$VNET_NAME&#8221;,</p><p>  &#8220;vlan_id&#8221;: $VLAN_TAG,</p><p>  &#8220;bridge&#8221;: &#8220;$VNET_NAME&#8221;,</p><p>  &#8220;subnet&#8221;: &#8220;$SUBNET&#8221;,</p><p>  &#8220;gateway&#8221;: &#8220;$GATEWAY&#8221;</p><p>}</p><p>EOF</p><p>    echo &#8220;&#9989; Informa&#231;&#245;es da VNet salvas para integra&#231;&#227;o&#8221;</p><p>fi</p><p>fi</p>]]></content:encoded></item><item><title><![CDATA[Como ter uma mini cloud dentre de casa.]]></title><description><![CDATA[Utilizar tecnologia da nuvem em ambientes on-premisses. Cria&#231;&#227;o do usu&#225;rio e estrutura.]]></description><link>https://emersondominguescmara.substack.com/p/como-ter-uma-mini-cloud-dentre-de</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/como-ter-uma-mini-cloud-dentre-de</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 13 May 2026 16:23:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bxh3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bxh3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bxh3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bxh3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2674537,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/197538681?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bxh3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!bxh3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd56e9628-a743-4025-82f5-2303888d9ab8_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p># Automatizando a Cria&#231;&#227;o de Usu&#225;rios no Proxmox com Shell Script</p><p>Se voc&#234; trabalha com Proxmox VE e precisa provisionar novos clientes de forma &#225;gil e segura, automatizar esse processo &#233; essencial. Neste post, mostro um script que criei para **criar usu&#225;rios, pools e permiss&#245;es** em poucos segundos.</p><p>O que o script faz?</p><p>1. **Solicita ou recebe o nome do cliente** &#8211; via argumento ou interativamente.</p><p>2. **Gera uma senha aleat&#243;ria segura** com `openssl rand`.</p><p>3. **Cria um diret&#243;rio de log** para cada cliente, armazenando dados do provisionamento.</p><p>4. **Conecta via SSH ao Proxmox host** e executa remotamente comandos `pvesh` para:</p><p>   - Criar o usu&#225;rio (ex: `cliente@pve`)</p><p>   - Criar um pool exclusivo (ex: `Pool_Cliente`)</p><p>   - Atribuir permiss&#245;es de administrador de VMs no pool</p><p>   - Conceder acesso ao storage (PVEDatastoreUser)</p><p>   - Conceder acesso ao SDN (se dispon&#237;vel)</p><p>5. **Exibe as credenciais finais** e salva tudo em log.</p><p> Por que isso &#233; &#250;til?</p><p>- Evita erros manuais na atribui&#231;&#227;o de permiss&#245;es.</p><p>- Agiliza o onboarding de novos clientes.</p><p>- Mant&#233;m um hist&#243;rico organizado por cliente.</p><p>- Permite integra&#231;&#227;o com sistemas de orquestra&#231;&#227;o (o script gera sa&#237;da estruturada com `#STATE_OUTPUT#`).</p><p> Trecho do c&#243;digo</p><p># Exemplo de cria&#231;&#227;o remota via SSH</p><p>ssh -T root@192.168.2.200 &lt;&lt; EOF</p><p>    pvesh create /access/users --userid &#8220;$USER_FULL&#8221; --password &#8220;$PASS&#8221;</p><p>    pvesh create /pools --poolid &#8220;$POOL_ID&#8221;</p><p>    pvesh set /access/acl --path &#8220;/pool/$POOL_ID&#8221; --roles PVEVMAdmin --users &#8220;$USER_FULL&#8221;</p><p>EOF</p><p>Como usar</p><p>./criar_usuario.sh &#8220;NomeDoCliente&#8221;</p><p>Ou apenas:</p><p>./criar_usuario.sh</p><p>E digitar o nome quando solicitado.</p><p>Resultado</p><p>- Usu&#225;rio criado no Proxmox com permiss&#245;es limitadas ao seu pool e storage.</p><p>- Log salvo em `/home/elmotecnologia/projetos/entregaV2/clientes/&lt;cliente&gt;/provisionamento_*.log`.</p><p>- Senha &#250;nica e aleat&#243;ria, ideal para primeiro acesso.</p><p>---</p><p>Esse script faz parte do meu fluxo de automa&#231;&#227;o de infraestrutura. Se voc&#234; tamb&#233;m gerencia m&#250;ltiplos tenants no Proxmox, essa abordagem vai te poupar horas de trabalho repetitivo.</p><p>J&#225; pensou em expandir isso para uma API ou integrar com seu sistema de cobran&#231;a? &#201; o pr&#243;ximo passo que estou avaliando.</p><p>Voc&#234; usa Proxmox para oferecer hospedagem ou VPS? Me conta nos coment&#225;rios como est&#225; sua automa&#231;&#227;o atual.</p><p>---</p><p>Conte&#250;do do script:</p><p>#!/bin/bash</p><p># CONFIGURA&#199;&#213;ES</p><p>PROXMOX_HOST=&#8221;192.168.2.200&#8221;</p><p>PROXMOX_USER=&#8221;root&#8221;</p><p>STORAGE_ID=&#8221;local-lvm&#8221;</p><p># Processar par&#226;metros</p><p>CLIENT_NAME=&#8221;&#8220;</p><p>if [ $# -gt 0 ]; then</p><p>    CLIENT_NAME=&#8221;$1&#8221;</p><p>    echo &#8220;Cliente: $CLIENT_NAME&#8221;</p><p>else</p><p>    read -p &#8220;Digite o Nome do Cliente: &#8220; CLIENT_NAME</p><p>fi</p><p>[ -z &#8220;$CLIENT_NAME&#8221; ] &amp;&amp; echo &#8220;Nome n&#227;o pode ser vazio!&#8221; &amp;&amp; exit 1</p><p># Vari&#225;veis</p><p>USER_FULL=&#8221;$CLIENT_NAME@pve&#8221;</p><p>POOL_ID=&#8221;Pool_$CLIENT_NAME&#8221;</p><p>PASS=$(openssl rand -base64 15)</p><p>DATA_HORA=$(date &#8216;+%Y-%m-%d %H:%M:%S&#8217;)</p><p># Criar diret&#243;rio de log do cliente</p><p>LOG_DIR=&#8221;/home/elmotecnologia/projetos/entregaV2/clientes/$CLIENT_NAME&#8221;</p><p>mkdir -p &#8220;$LOG_DIR&#8221;</p><p>LOG_FILE=&#8221;$LOG_DIR/provisionamento_$(date +%Y%m%d_%H%M%S).log&#8221;</p><p>echo &#8220;--- Executando Deploy Remoto em $PROXMOX_HOST ---&#8221;</p><p>ssh -T $PROXMOX_USER@$PROXMOX_HOST &lt;&lt; EOF</p><p>    pvesh create /access/users --userid &#8220;$USER_FULL&#8221; --password &#8220;$PASS&#8221; --comment &#8220;Cliente $USER_FULL&#8221;</p><p>    pvesh create /pools --poolid &#8220;$POOL_ID&#8221;</p><p>    pvesh set /access/acl --path &#8220;/pool/$POOL_ID&#8221; --roles PVEVMAdmin --users &#8220;$USER_FULL&#8221;</p><p>    pvesh set /access/acl --path &#8220;/storage/$STORAGE_ID&#8221; --roles PVEDatastoreUser --users &#8220;$USER_FULL&#8221;</p><p>    pvesh set /access/acl --path &#8220;/sdn&#8221; --roles PVESDNUser --users &#8220;$USER_FULL&#8221; 2&gt;/dev/null || \</p><p>    pvesh set /access/acl --path &#8220;/&#8221; --roles PVESDNUser --users &#8220;$USER_FULL&#8221;</p><p>EOF</p><p>if [ $? -eq 0 ]; then</p><p>    echo &#8220;--------------------------------------------------------&#8221;</p><p>    echo &#8220;PROVISIONAMENTO CONCLU&#205;DO!&#8221;</p><p>    echo &#8220;USU&#193;RIO: $USER_FULL&#8221;</p><p>    echo &#8220;SENHA:   $PASS&#8221;</p><p>    echo &#8220;POOL:    $POOL_ID&#8221;</p><p>    echo &#8220;LOG:     $LOG_FILE&#8221;</p><p>    echo &#8220;--------------------------------------------------------&#8221;</p><p>    # Salvar no arquivo de log</p><p>    cat &gt; &#8220;$LOG_FILE&#8221; &lt;&lt; EOF</p><p>Data: $DATA_HORA</p><p>Cliente: $CLIENT_NAME</p><p>Usu&#225;rio: $USER_FULL</p><p>Pool: $POOL_ID</p><p>Senha: $PASS</p><p>Status: SUCESSO</p><p>EOF</p><p>    # Sa&#237;da para o estado global</p><p>    echo &#8220;###STATE_OUTPUT###&#8221;</p><p>    echo &#8220;USER_ID=$USER_FULL&#8221;</p><p>    echo &#8220;PASSWORD=$PASS&#8221;</p><p>    echo &#8220;POOL_ID=$POOL_ID&#8221;</p><p>    echo &#8220;###STATE_OUTPUT_END###&#8221;</p><p>else</p><p>    echo &#8220;ERRO no provisionamento!&#8221;</p><p>    exit 1</p><p>fi</p>]]></content:encoded></item><item><title><![CDATA[Aprenda a "Pensar" a Nuvem.]]></title><description><![CDATA[Esta &#233; a grande virada de chave: deixar de ser apenas um executor t&#233;cnico e passar a ser um conselheiro que entende o impacto da tecnologia no neg&#243;cio. As empresas buscam quem sabe por que usar cada a]]></description><link>https://emersondominguescmara.substack.com/p/aprenda-a-pensar-a-nuvem</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/aprenda-a-pensar-a-nuvem</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Tue, 05 May 2026 12:06:15 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!YtXD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YtXD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YtXD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YtXD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2096034,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/196533263?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YtXD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!YtXD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74ed5195-2888-4860-ad20-a0ac364f8a49_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&#201; exatamente nesse ponto que um excelente profissional de infraestrutura se diferencia e passa a ser um parceiro estrat&#233;gico. Vou detalhar como essa transi&#231;&#227;o acontece e como voc&#234; pode desenvolv&#234;-la, usando como b&#250;ssola as habilidades que o pr&#243;prio mercado est&#225; demandando.</p><p>Pense no &#8220;Pensar a Nuvem&#8221; como a capacidade de mudar o di&#225;logo. Em vez de discutir terabytes, n&#250;cleos de processamento e lat&#234;ncia, voc&#234; passar&#225; a discutir <strong>velocidade de entrega de produtos, otimiza&#231;&#227;o de margens de lucro e gest&#227;o de riscos corporativos</strong>.</p><h3><strong>1. Domine o &#8220;FinOps&#8221;: A Linguagem dos Neg&#243;cios na Nuvem</strong></h3><p>Se a tecnologia &#233; o motor, o FinOps &#233; o volante financeiro. N&#227;o se trata apenas de cortar custos, mas de entender o <strong>valor de neg&#243;cio</strong> de cada real gasto em nuvem. &#201; a pr&#225;tica que conecta tecnologia, finan&#231;as e neg&#243;cios em um modelo operacional colaborativo .</p><p>O que voc&#234; precisa aprender e praticar:</p><ul><li><p><strong>Conceitos e Princ&#237;pios:</strong> Entender os seis princ&#237;pios fundamentais do FinOps, como &#8220;Times colaboram&#8221;, &#8220;Decis&#245;es s&#227;o orientadas pelo valor de neg&#243;cio da nuvem&#8221; e &#8220;Todos assumem a propriedade do seu uso da nuvem&#8221;.</p></li><li><p><strong>Os Tr&#234;s Dom&#237;nios:</strong> Mergulhar nos ciclos de <strong>Informar</strong> (gerar visibilidade de custos e aloca&#231;&#227;o precisa por &#225;rea/servi&#231;o/feature), <strong>Otimizar</strong> (ajustar recursos para garantir performance ao menor custo, atrav&#233;s de right-sizing, compra de inst&#226;ncias reservadas, etc.) e <strong>Operar</strong> (automatizar a otimiza&#231;&#227;o cont&#237;nua e integrar m&#233;tricas de custo nos pipelines de CI/CD).</p></li><li><p><strong>M&#233;tricas que Importam:</strong> Abandonar a m&#233;trica de &#8220;custo total da nuvem&#8221; e come&#231;ar a usar &#8220;custo por transa&#231;&#227;o&#8221;, &#8220;custo por cliente&#8221;, &#8220;custo real do produto X&#8221;. Isso permite que qualquer l&#237;der de neg&#243;cio entenda se a margem de um produto est&#225; saud&#225;vel.</p></li></ul><p><strong>Seu Caminho de Aprendizado:</strong> O melhor passo aqui &#233; buscar a certifica&#231;&#227;o <strong>FinOps Certified Practitioner</strong>, da FinOps Foundation . Essa certifica&#231;&#227;o valida exatamente esse conjunto de conhecimentos que permite a voc&#234; sentar &#224; mesa com o CFO e o diretor de uma unidade de neg&#243;cios e discutir investimentos com propriedade.</p><p></p><h3><strong>2. Torne-se um Conselheiro com a Estrat&#233;gia dos &#8220;6 Rs&#8221;</strong></h3><p>&#201; aqui que voc&#234; deixa de executar migra&#231;&#245;es e passa a <strong>projetar futuros</strong>. Os &#8220;6 Rs&#8221; (Rehost, Replatform, Refactor, Repurchase, Retire, Retain) s&#227;o um framework para avaliar e decidir o melhor destino de uma aplica&#231;&#227;o, mas o valor estrat&#233;gico est&#225; em <em>como</em> voc&#234; conduz essa decis&#227;o.</p><p>Como &#8220;pensar&#8221; com os 6 Rs:</p><ul><li><p><strong>Rehost (Mover sem mudar):</strong> A decis&#227;o estrat&#233;gica aqui n&#227;o &#233; t&#233;cnica (&#8221;d&#225; pra mover?&#8221;), mas sim de <strong>velocidade e necessidade de capital</strong>. A pergunta &#233;: &#8220;Precisamos sair do data center em 3 meses para um movimento de M&amp;A? Ent&#227;o sacrificamos a otimiza&#231;&#227;o de custo de longo prazo pela agilidade e seguran&#231;a da migra&#231;&#227;o.&#8221;</p></li><li><p><strong>Refactor (Reescrever para a nuvem):</strong> A decis&#227;o n&#227;o &#233; sobre usar microsservi&#231;os ou Kubernetes, mas sobre <strong>vantagem competitiva</strong>. A pergunta &#233;: &#8220;Reescrever este sistema monol&#237;tico em cloud-native nos permitir&#225; lan&#231;ar features 60% mais r&#225;pido e escalar para 10x o n&#250;mero de clientes? O ROI desse investimento inicial mais alto se paga com uma posi&#231;&#227;o de mercado inalcan&#231;&#225;vel por concorrentes que s&#243; &#8216;lift-and-shift&#8217;?&#8221;</p></li><li><p><strong>Retire (Desligar) e Retain (Manter):</strong> Estas s&#227;o as decis&#245;es mais subestimadas e estrat&#233;gicas. <strong>Retire</strong> significa descomissionar sistemas que n&#227;o geram mais valor, liberando or&#231;amento e energia mental da equipe. <strong>Retain</strong> &#233; uma decis&#227;o de <strong>soberania e compliance</strong>. Significa olhar para um sistema e, com base em uma an&#225;lise de risco, decidir conscientemente que ele n&#227;o vai para a nuvem p&#250;blica, assumindo o custo de mant&#234;-lo on-premise por raz&#245;es regulat&#243;rias ou de seguran&#231;a de dados que nenhum SLA compensaria .</p></li></ul><p></p><h3><strong>3. Fale a Linguagem dos Riscos e da Soberania</strong></h3><p>O profissional que &#8220;pensa a nuvem&#8221; expande seu campo de vis&#227;o para incluir as &#225;reas jur&#237;dica, de compliance e de seguran&#231;a da informa&#231;&#227;o como parceiros de desenho da solu&#231;&#227;o.</p><p>O que isso significa na pr&#225;tica:</p><ul><li><p>Ao projetar uma arquitetura h&#237;brida, voc&#234; n&#227;o est&#225; apenas balanceando carga entre servidores. Voc&#234; est&#225; projetando um <strong>per&#237;metro de soberania de dados</strong>. Sua pergunta ao neg&#243;cio &#233;: &#8220;Esta aplica&#231;&#227;o lida com dados pessoais de cidad&#227;os europeus? Ent&#227;o ela <em>precisa</em> que a camada de dados resida em Frankfurt, e eu vou desenhar a arquitetura para que apenas a camada de aplica&#231;&#227;o, sem dados sens&#237;veis, possa rodar em outra regi&#227;o.&#8221;</p></li><li><p>Sua contribui&#231;&#227;o deixa de ser um desenho t&#233;cnico e passa a ser uma <strong>matriz de adequa&#231;&#227;o regulat&#243;ria</strong>, onde voc&#234; explica, para cada carga de trabalho, o <em>racional</em> da sua localiza&#231;&#227;o (performance, custo ou soberania).</p></li></ul><p>Essa vis&#227;o &#233; clara em posi&#231;&#245;es de alta senioridade, como a de um <strong>Cloud Advisor ou Arquiteto de Nuvem Soberana</strong>, que t&#234;m como responsabilidade traduzir requisitos de neg&#243;cio e regula&#231;&#227;o em estrat&#233;gias de arquitetura .</p><p>Para dar o primeiro passo pr&#225;tico, sugiro fazer um piloto na sua realidade atual: escolha um projeto e, antes de pensar na solu&#231;&#227;o t&#233;cnica, escreva um mini-documento de uma p&#225;gina respondendo &#8220;Qual problema de neg&#243;cio isso resolve?&#8221;, &#8220;Como ser&#225; medido o sucesso financeiro disso?&#8221; e &#8220;Quais s&#227;o os riscos de compliance que isso mitiga ou cria?&#8221;.</p>]]></content:encoded></item><item><title><![CDATA[A evolução do sistema de rede do PROXMOX]]></title><description><![CDATA[A substitui&#231;&#227;o da VLAN Bridge pela ZONE Vnets]]></description><link>https://emersondominguescmara.substack.com/p/a-evolucao-do-sistema-de-rede-do</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/a-evolucao-do-sistema-de-rede-do</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Tue, 14 Apr 2026 18:09:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!np6q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!np6q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!np6q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 424w, https://substackcdn.com/image/fetch/$s_!np6q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 848w, https://substackcdn.com/image/fetch/$s_!np6q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 1272w, https://substackcdn.com/image/fetch/$s_!np6q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!np6q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png" width="818" height="330" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:330,&quot;width&quot;:818,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17178,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/194214367?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!np6q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 424w, https://substackcdn.com/image/fetch/$s_!np6q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 848w, https://substackcdn.com/image/fetch/$s_!np6q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 1272w, https://substackcdn.com/image/fetch/$s_!np6q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F483bc6ed-b5a4-4d26-b9bf-734ccbc4a0ec_818x330.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: justify;">A diferen&#231;a fundamental est&#225; na camada de gerenciamento: com as bridges VLAN, voc&#234; faz a configura&#231;&#227;o &#8220;na m&#227;o&#8221;, n&#243; por n&#243;. Com o SDN, voc&#234; centraliza e automatiza toda a l&#243;gica da rede a n&#237;vel de cluster.</p><p style="text-align: justify;">Vamos detalhar os dois cen&#225;rios.</p><p style="text-align: justify;"></p><p>Cen&#225;rio 1: A Abordagem Tradicional (Bridge com VLAN)</p><p style="text-align: justify;">Esta &#233; a forma cl&#225;ssica e mais &#8220;manual&#8221; de configurar VLANs no Proxmox. Quando voc&#234; cria uma vmbr1.150, est&#225; criando uma interface de VLAN diretamente no sistema operacional do host (Debian) e, em seguida, anexando uma bridge a ela.</p><p style="text-align: justify;">Como funciona: Voc&#234; primeiro configura a interface VLAN (ex: bond0.150) e depois cria uma bridge (ex: vmbr150) que usa essa interface VLAN como porta. A VM ent&#227;o se conecta a essa bridge vmbr150 sem se preocupar com VLANs, pois o tr&#225;fego que chega nela j&#225; est&#225; &#8220;marcado&#8221; com a tag 150.</p><p style="text-align: justify;">Vis&#227;o no GUI: O administrador veria v&#225;rias bridges separadas (ex: vmbr150, vmbr160, vmbr170), cada uma representando uma VLAN.</p><p style="text-align: justify;">Gerenciamento: &#201; uma configura&#231;&#227;o est&#225;tica e local a cada n&#243;. Para adicionar uma nova VLAN, voc&#234; precisa editar o arquivo /etc/network/interfaces (ou usar o GUI) em cada host do cluster e, em seguida, recarregar as configura&#231;&#245;es.</p><p style="text-align: justify;">&#9989; Pr&#243;s da Abordagem Tradicional (Bridge por VLAN)</p><p style="text-align: justify;">Simplicidade e Transpar&#234;ncia: &#201; uma configura&#231;&#227;o de rede Linux pura, sem camadas extras. &#201; f&#225;cil de entender e depurar com comandos como tcpdump e bridge fdb.</p><p style="text-align: justify;">Monitoramento Granular: Como cada bridge ou interface VLAN (bond0.150) &#233; um objeto de rede separado, voc&#234; pode aplicar regras de firewall (ex: iptables) e monitorar o tr&#225;fego de cada VLAN individualmente usando ferramentas de SNMP.</p><p style="text-align: justify;">&#10060; Contras da Abordagem Tradicional</p><p style="text-align: justify;">Alta Sobrecarga Operacional: O maior problema em clusters. Para criar ou alterar uma VLAN, voc&#234; precisa modificar a configura&#231;&#227;o de rede em todos os n&#243;s do cluster manualmente, o que &#233; propenso a erros e dif&#237;cil de escalar.</p><p style="text-align: justify;">Falta de Isolamento e Vis&#227;o Centralizada: N&#227;o h&#225; um local &#250;nico no GUI do Proxmox que lhe mostre &#8220;estas s&#227;o todas as VLANs que eu tenho&#8221;. A configura&#231;&#227;o est&#225; espalhada pela configura&#231;&#227;o de rede de cada n&#243;.</p><p style="text-align: justify;">Migra&#231;&#227;o de VMs com Estado Fr&#225;gil: A migra&#231;&#227;o ao vivo (live migration) de uma VM exige que o n&#243; de destino tenha uma bridge com o mesmo nome configurada exatamente da mesma forma. Se houver qualquer diverg&#234;ncia, a migra&#231;&#227;o falhar&#225; silenciosamente.</p><p style="text-align: justify;"></p><div><hr></div><p style="text-align: justify;">Cen&#225;rio 2: A Abordagem Moderna (SDN com Vnets)</p><p style="text-align: justify;">Aqui, voc&#234; deixa de gerenciar pontes e VLANs n&#243; por n&#243; e passa a definir a inten&#231;&#227;o da rede a n&#237;vel de Datacenter. O Proxmox ent&#227;o se encarrega de implementar essa configura&#231;&#227;o em todos os n&#243;s do cluster.</p><p style="text-align: justify;">Como funciona: Voc&#234; define uma Zona (do tipo VLAN) que aponta para uma bridge f&#237;sica ou LAG existente (ex: vmbr0). Dentro dessa Zona, voc&#234; cria Vnets. Cada Vnet representa uma VLAN l&#243;gica. Quando voc&#234; &#8220;Aplica&#8221; a configura&#231;&#227;o, o Proxmox automaticamente cria as interfaces e bridges necess&#225;rias em todos os n&#243;s do cluster.</p><p style="text-align: justify;">Vis&#227;o no GUI: Voc&#234; tem uma vis&#227;o centralizada e hier&#225;rquica (Zonas -&gt; Vnets -&gt; Subnets) em &#8220;Datacenter -&gt; SDN&#8221;. A Vnet vlan_150 pode ser criada em poucos cliques e estar&#225; dispon&#237;vel para qualquer VM em qualquer n&#243; do cluster imediatamente.</p><p style="text-align: justify;">Gerenciamento: Totalmente centralizado. &#201; uma camada de abstra&#231;&#227;o que transforma a configura&#231;&#227;o de rede distribu&#237;da em uma configura&#231;&#227;o de software &#250;nica e consistente.</p><p style="text-align: justify;">&#9989; Pr&#243;s da Abordagem com SDN</p><p style="text-align: justify;">Gerenciamento Centralizado e Automatizado: Esta &#233; a maior vantagem. Voc&#234; cria uma Vnet uma &#250;nica vez, e o Proxmox a replica para todo o cluster. Isso garante consist&#234;ncia e elimina erros manuais.</p><ul><li><p><strong>Recursos Avan&#231;ados Integrados</strong>: O SDN n&#227;o &#233; apenas para VLANs. Com o mesmo paradigma, voc&#234; pode usar zonas do tipo VXLAN (para criar redes layer 2 que funcionam entre datacenters diferentes) ou Simple (para redes isoladas com NAT autom&#225;tico) com uma facilidade imensa.</p></li><li><p><strong>Automatiza&#231;&#227;o de IPs e DHCP (IPAM)</strong>: A Vnet pode ser configurada com um Subnet (ex: 192.168.150.0/24). O SDN pode ativar um servidor DHCP (via dnsmasq) e gerenciar o pool de endere&#231;os IPs automaticamente para as VMs conectadas a essa Vnet.</p></li></ul><p>&#10060; Contras da Abordagem com SDN</p><ul><li><p><strong>Curva de Aprendizado e Complexidade Inicial</strong>: O SDN introduz novos conceitos (Zonas, Vnets, Subnets, IPAM, VRF) que podem parecer complexos para quem est&#225; acostumado com a configura&#231;&#227;o de rede Linux tradicional.</p></li><li><p><strong>Abstra&#231;&#227;o Adicional</strong>: Para tarefas de troubleshooting muito espec&#237;ficas, a camada extra do SDN pode dificultar um pouco a localiza&#231;&#227;o do problema, pois voc&#234; precisa entender como a configura&#231;&#227;o l&#243;gica (Vnet) &#233; traduzida para a configura&#231;&#227;o f&#237;sica (bridge, VLAN) no host.</p></li></ul><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cuXG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cuXG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 424w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 848w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 1272w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cuXG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png" width="838" height="421" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cbb475eb-cd62-4814-822c-cac072b41862_838x421.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:421,&quot;width&quot;:838,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/194214367?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cuXG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 424w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 848w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 1272w, https://substackcdn.com/image/fetch/$s_!cuXG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcbb475eb-cd62-4814-822c-cac072b41862_838x421.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Qual escolher?</p><p>A escolha depende diretamente do tamanho e da complexidade do seu ambiente:</p><ul><li><p><strong>Para Home Labs ou Clusters Pequenos (1-3 n&#243;s): </strong></p></li></ul><p style="text-align: justify;">A abordagem tradicional pode ser perfeitamente adequada. A simplicidade de configurar uma bridge &#8220;vlan-aware&#8221; ou algumas bridges espec&#237;ficas &#233; mais direta e f&#225;cil de depurar se voc&#234; tem poucas redes para gerenciar.</p><ul><li><p><strong>Para Ambientes Profissionais ou Clusters M&#233;dios/Grandes: </strong></p></li></ul><p style="text-align: justify;">O SDN &#233; o caminho mais robusto e recomendado. A capacidade de gerenciar tudo de forma centralizada, garantir a consist&#234;ncia da configura&#231;&#227;o entre todos os n&#243;s e ter acesso a recursos como VXLAN e IPAM integrado supera em muito a complexidade inicial.</p><p style="text-align: justify;"><em><strong>O SDN no Proxmox deixou de ser &#8220;experimental&#8221; e tornou-se um pilar central da plataforma, sendo a base para a constru&#231;&#227;o de redes de locat&#225;rios (multi-tenancy) em larga escala.</strong></em></p><p></p>]]></content:encoded></item><item><title><![CDATA[Discos e partições no Linux]]></title><description><![CDATA[Maneiras e m&#233;todos em que o Linux consegue gerenciar os discos e parti&#231;&#245;es!]]></description><link>https://emersondominguescmara.substack.com/p/analise-weibull-49d</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/analise-weibull-49d</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Tue, 14 Apr 2026 15:19:13 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kHVP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Vou explicar de forma bem simples e direta.</p><p>Imagine que cada disco &#233; um carro &#128663;</p><ul><li><p> /dev/vdb1 - &#201; a placa do carro (endere&#231;o f&#237;sico)</p></li></ul><p>&#201; o nome t&#233;cnico que o Linux d&#225; ao disco naquele momento</p><p>Exemplo: `vdb1` = segundo disco virtual, primeira parti&#231;&#227;o</p><p>Problema: Se voc&#234; trocar os cabos ou reiniciar, o nome pode mudar (`vdb` pode virar `vdc`)</p><ul><li><p>/dev/disk/by-uuid - &#201; o RG/CPF do carro (identificador &#250;nico universal)</p></li></ul><p>&#201; um n&#250;mero &#250;nico que nunca muda, gerado na formata&#231;&#227;o</p><p>Exemplo: `202a0b1c-2d3e-4f56-890a-b1c2d3e4f5a6`</p><p>Vantagem: Mesmo que mude de lugar nos cabos, o sistema sempre acha o disco certo</p><ul><li><p>/dev/disk/by-id - &#201; a combina&#231;&#227;o marca + n&#250;mero de s&#233;rie (identifica&#231;&#227;o f&#237;sica)</p></li></ul><p>&#201; o nome de f&#225;brica do disco</p><p>Exemplo: `virtio-QEMU_HARDDISK_12345678`</p><p>Vantagem: Tamb&#233;m n&#227;o muda, mas &#233; mais leg&#237;vel que o UUID</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hsxh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hsxh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 424w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 848w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 1272w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hsxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png" width="724" height="206.37775202780998" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:246,&quot;width&quot;:863,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:23602,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/194191678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hsxh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 424w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 848w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 1272w, https://substackcdn.com/image/fetch/$s_!hsxh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff004b438-6cf4-4691-9992-5b4a61b18b78_863x246.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Regra de ouro: Para configura&#231;&#245;es permanentes, sempre use `UU<code>D`! </code></p><p>Ele &#233; &#224; prova de b<code>gun&#231;a &#128737;&#65039;</code></p><div><hr></div><p>Em Data Center com alta disponibilidade, a resposta muda completamente. </p><p>Vamos l&#225;:</p><p>Para HA, esque&#231;a UUID sozinho! &#128680;</p><p>Em servidores cr&#237;ticos com HA, voc&#234; precisa pensar em falhas de hardware, DRBD, iSCSI, multipath e failover autom&#225;tico.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kHVP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kHVP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 424w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 848w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 1272w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kHVP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png" width="797" height="369" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:369,&quot;width&quot;:797,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39571,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/194191678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kHVP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 424w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 848w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 1272w, https://substackcdn.com/image/fetch/$s_!kHVP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef93c137-703e-41c6-9d6c-0cff8ecf273d_797x369.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cen&#225;rios pr&#225;ticos:</p><p>1. Com Multipath (SAN, iSCSI, Fibre Channel) &#9989;</p><p>Use sempre by-id ou mpath</p><p>/dev/disk/by-id/wwn-0x600123456789abcde-part1 </p><p>ou </p><p>/dev/mapper/mpatha-part1</p><p>Por qu&#234;? O mesmo LUN chega por 2 ou mais cabos. Se um cabo falha, o `by-id` continua funcionando.</p><p>2. Cluster com DRBD (replica&#231;&#227;o s&#237;ncrona) &#9989;</p><p>Use o nome do recurso DRBD</p><p>/dev/drbd0</p><p>ou LABEL consistente entre n&#243;s</p><p>LABEL=cluster_data</p><p>Por qu&#234;? </p><p>UUID pode ser diferente em cada n&#243; se o disco for clonado.</p><p>3. Disco local com failover por keepalived/corosync &#9888;&#65039;</p><p>Use LABEL ou UUID, mas documente</p><p>LABEL=db_data</p><p>Por qu&#234;? </p><p>Facilita troubleshooting em recupera&#231;&#227;o de desastre.</p><p>Recomenda&#231;&#227;o final para Data Center HA &#127970;</p><p>Regra de ouro: </p><ul><li><p>by-id &gt; mpath &gt; LABEL &gt; UUID &gt; /dev/sdX</p></li></ul><p>Exemplo real no `/etc/fstab` (servidor HA):</p><p>Certificado para HA com multipath</p><p>/dev/disk/by-id/wwn-0x600123456789abcde-part1  /data  ext4  defaults,noatime  0 2</p><ul><li><p>Para cluster com DRBD</p></li></ul><p>/dev/drbd0  /replica  ext4  defaults,_netdev  0 2</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1CT9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1CT9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 424w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 848w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 1272w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1CT9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png" width="773" height="245" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/df427035-36a9-404d-b053-c3c481257b7b_773x245.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:245,&quot;width&quot;:773,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/194191678?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1CT9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 424w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 848w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 1272w, https://substackcdn.com/image/fetch/$s_!1CT9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdf427035-36a9-404d-b053-c3c481257b7b_773x245.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Resumo para voc&#234; levar para o data center: </p><p>Use `by-id` ou `mpath` com multipath, e `LABEL` padronizado em todos os n&#243;s do cluster. UUID fica para servidores standalone. &#127919;</p>]]></content:encoded></item><item><title><![CDATA[MDR (Managed Detection and Response)]]></title><description><![CDATA[1 - **MDR (Managed Detection and Response)** &#233; como se voc&#234; contratasse **um time de detetives e seguran&#231;as 24/7** para vigiar a casa digital da sua empresa.]]></description><link>https://emersondominguescmara.substack.com/p/mdr-managed-detection-and-response</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/mdr-managed-detection-and-response</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Sun, 12 Apr 2026 16:06:12 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!pA-F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pA-F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pA-F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 424w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 848w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 1272w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pA-F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png" width="851" height="512" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a112180f-a56e-4815-bc53-54182946bb21_851x512.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:512,&quot;width&quot;:851,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:587258,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193978476?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pA-F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 424w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 848w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 1272w, https://substackcdn.com/image/fetch/$s_!pA-F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa112180f-a56e-4815-bc53-54182946bb21_851x512.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>1 - **MDR (Managed Detection and Response)** &#233; como se voc&#234; contratasse **um time de detetives e seguran&#231;as 24/7** para vigiar a casa digital da sua empresa.</p><p>Funciona assim:</p><p>1.  **Detec&#231;&#227;o (Detection):**  </p><p>    Em vez de voc&#234; mesmo ficar olhando alertas (que muitas vezes s&#227;o falsos ou confusos), o servi&#231;o usa ferramentas e intelig&#234;ncia para **achar atividades suspeitas** em tempo real &#8211; invas&#245;es, v&#237;rus, funcion&#225;rios acessando o que n&#227;o devem, etc.</p><p>2.  **Resposta (Response):**  </p><p>    Quando algo &#233; encontrado, o time age **imediatamente** para conter o problema. Por exemplo:  </p><p>    - Isolar um computador infectado da rede.  </p><p>    - Bloquear um ataque antes que ele roube dados.  </p><p>    - Investigar como o invasor entrou e sugerir como corrigir.</p><p>**Em outras palavras:**  </p><p>Voc&#234; terceiriza a **vigil&#226;ncia e a a&#231;&#227;o contra amea&#231;as cibern&#233;ticas** para especialistas. Eles cuidam de detectar invasores e j&#225; resolvem (ou te ajudam a resolver) na hora.</p><p>**Diferen&#231;a importante:**  </p><p>- **Antiv&#237;rus comum** &#8594; s&#243; bloqueia coisas conhecidas.  </p><p>- **MDR** &#8594; ca&#231;a amea&#231;as avan&#231;adas e reage a ataques em andamento, mesmo os in&#233;ditos.</p><p>**Para que serve:**  </p><p>Empresas que n&#227;o t&#234;m time de seguran&#231;a 24/7 ou n&#227;o querem a dor de cabe&#231;a de gerenciar isso internamente. O MDR entrega paz de esp&#237;rito por um custo menor do que montar uma equipe pr&#243;pria.</p><p>Resumo final: **MDR = seus guarda-costas digitais que nunca dormem.**</p><div><hr></div><p>2 - Existem op&#231;&#245;es open-source que funcionam como um MDR, mas &#233; importante entender uma diferen&#231;a fundamental: **MDR comercial &#233; um servi&#231;o** (time de especialistas), enquanto **open-source te d&#225; as ferramentas** para voc&#234; mesmo montar e operar esse servi&#231;o.</p><p>Na pr&#225;tica, voc&#234; mesmo teria que fazer o papel do &#8220;time de detetives 24/7&#8221; que expliquei antes.</p><p>### &#128736;&#65039; As principais alternativas open-source</p><p>A forma mais comum de montar uma estrutura similar ao MDR &#233; combinar v&#225;rias ferramentas de c&#243;digo aberto. As principais s&#227;o:</p><p>**1. Wazuh (A base mais s&#243;lida)**</p><p>&#201; uma plataforma completa que une **SIEM** (an&#225;lise de logs) e **XDR** (detec&#231;&#227;o estendida). Ele coleta dados dos seus computadores e servidores, analisa em tempo real, detecta amea&#231;as (como malware, vulnerabilidades e invas&#245;es) e at&#233; consegue executar a&#231;&#245;es de resposta autom&#225;tica, como isolar uma m&#225;quina comprometida. &#201; gratuito, transparente e tem uma comunidade muito ativa .</p><p>**2. UTMStack (Outra plataforma completa)**</p><p>Assim como o Wazuh, o UTMStack &#233; uma plataforma que integra SIEM e XDR. Ele faz correla&#231;&#227;o de logs, an&#225;lise de tr&#225;fego da rede e usa intelig&#234;ncia contra amea&#231;as para detectar ataques complexos em tempo real. Tamb&#233;m &#233; open-source e dispon&#237;vel no GitHub .</p><p>**3. Montando um SOC open-source completo**</p><p>Para quem precisa de algo ainda mais pr&#243;ximo de um servi&#231;o profissional (mas operado internamente), &#233; poss&#237;vel juntar v&#225;rias ferramentas :</p><p>*   **Para coleta e an&#225;lise (SIEM/XDR)**: Wazuh</p><p>*   **Para an&#225;lise de tr&#225;fego de rede**: Suricata e Zeek</p><p>*   **Para gerenciar os incidentes (SIRP/SOAR)**: TheHive (para orquestrar a resposta) e Shuffle (para automatizar a&#231;&#245;es)</p><p>*   **Para intelig&#234;ncia contra amea&#231;as (TIP)**: MISP</p><p>Essa arquitetura permite criar um centro de opera&#231;&#245;es de seguran&#231;a (SOC) pr&#243;prio e open-source, que entrega o &#8220;Detection&#8221; (coleta e an&#225;lise) e o &#8220;Response&#8221; (orquestra&#231;&#227;o e automa&#231;&#227;o) de forma gratuita.</p><p>### &#9888;&#65039; Pontos importantes de aten&#231;&#227;o</p><p>1.  **Voc&#234; vira o operador**: A maior diferen&#231;a &#233; que o MDR comercial &#233; um servi&#231;o onde voc&#234; paga para terceiros monitorarem e agirem por voc&#234;. Com solu&#231;&#245;es open-source, **voc&#234; e seu time** precisam instalar, configurar, manter e, principalmente, **analisar os alertas e responder aos incidentes**. N&#227;o h&#225; um time de especialistas do outro lado fazendo isso .</p><p>2.  **Custo de opera&#231;&#227;o vs. licen&#231;a**: A ferramenta em si &#233; gratuita, mas voc&#234; ter&#225; custos com servidores, armazenamento e, o mais importante, com **pessoas qualificadas** (analistas de seguran&#231;a) para operar a plataforma 24/7. Em muitos casos, o custo operacional pode se aproximar ou at&#233; ultrapassar o valor de um bom MDR gerenciado.</p><p>3.  **Cuidado com nomes parecidos**: Durante a pesquisa, aparecem projetos com &#8220;MDR&#8221; no nome que **n&#227;o t&#234;m nada a ver** com seguran&#231;a cibern&#233;tica. Por exemplo:</p><p>    *   `py-mdr` &#233; uma biblioteca Python para enviar logs para um sistema MDR interno de uma empresa espec&#237;fica, n&#227;o uma solu&#231;&#227;o open-source de uso geral .</p><p>    *   `mdr` (Multifactor Dimensionality Reduction) &#233; um software de bioestat&#237;stica para an&#225;lise de intera&#231;&#245;es gen&#233;ticas .</p><p>### &#128142; Resumo final</p><p>Se voc&#234; busca uma ferramenta para aprender e montar sua pr&#243;pria estrutura de detec&#231;&#227;o e resposta, o **Wazuh** &#233; o melhor ponto de partida. Agora, se o que voc&#234; realmente precisa &#233; do **servi&#231;o** (algu&#233;m cuidando da seguran&#231;a para voc&#234;), o open-source n&#227;o vai te entregar isso sozinho &#8212; voc&#234; precisar&#225; de uma equipe interna para operar as ferramentas ou contratar um MDR comercial mesmo.</p>]]></content:encoded></item><item><title><![CDATA[Análise Weibull]]></title><description><![CDATA[Aplica&#231;&#227;o ao setor de TI]]></description><link>https://emersondominguescmara.substack.com/p/analise-weibull</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/analise-weibull</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Thu, 09 Apr 2026 13:35:03 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NJI6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NJI6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NJI6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 424w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 848w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 1272w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NJI6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp" width="674" height="379" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:379,&quot;width&quot;:674,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12446,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193687826?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NJI6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 424w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 848w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 1272w, https://substackcdn.com/image/fetch/$s_!NJI6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ea1f031-4407-4b22-adac-432f8692f8a6_674x379.webp 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>1 - Vou tentar explicar a **An&#225;lise Weibull** de forma bem simples, como se estiv&#233;ssemos conversando.</p><p>---</p><p>## O que &#233; a An&#225;lise Weibull?</p><p>&#201; um m&#233;todo estat&#237;stico usado principalmente para **estudar a vida &#250;til de produtos** ou **prever quando algo vai falhar** (quebrar, parar de funcionar).</p><p>Imagine que voc&#234; fabrica l&#226;mpadas. Quer saber:</p><p>- Quantas v&#227;o queimar r&#225;pido?</p><p>- Quantas v&#227;o durar muito?</p><p>- Qual &#233; o tempo m&#233;dio de vida delas?</p><p>A An&#225;lise Weibull te ajuda a responder isso, mesmo com poucos dados de teste.</p><p>---</p><p>## O segredo est&#225; em 3 n&#250;meros (par&#226;metros)</p><p>A distribui&#231;&#227;o Weibull usa tr&#234;s &#8220;ajustes&#8221; para se adaptar a diferentes tipos de falha:</p><p>1. **&#946; (beta) &#8211; formato da curva**  </p><p>   - &#946; &lt; 1: falhas &#8220;precoces&#8221; (produtos que j&#225; saem ruins da f&#225;brica)</p><p>   - &#946; = 1: falhas &#8220;aleat&#243;rias&#8221; (sem padr&#227;o, tipo acidente)</p><p>   - &#946; &gt; 1: falhas &#8220;por desgaste&#8221; (quanto mais velho, mais quebra)</p><p>2. **&#951; (eta) &#8211; escala**  </p><p>   &#201; a vida caracter&#237;stica. Quando o tempo atinge &#951;, cerca de 63,2% dos produtos j&#225; falharam.</p><p>3. **&#947; (gama) &#8211; localiza&#231;&#227;o**  </p><p>   &#201; um &#8220;atraso&#8221;: tempo m&#237;nimo garantido sem falha. (Geralmente &#233; zero, mas &#224;s vezes &#250;til.)</p><p>---</p><p>## Exemplo pr&#225;tico (bem simples)</p><p>&gt; Voc&#234; testa 10 ventiladores e anota quantas horas cada um durou. Com a an&#225;lise Weibull, voc&#234; descobre que &#946; = 2,5. Isso significa que seus ventiladores quebram principalmente por desgaste (como rolamento cansando). Da&#237; voc&#234; pode calcular: &#8220;em 2000 horas, 15% v&#227;o falhar&#8221;. Assim planeja garantia e manuten&#231;&#227;o.</p><p>---</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sBsr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sBsr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 424w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 848w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 1272w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sBsr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png" width="781" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:781,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30879,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193687826?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sBsr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 424w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 848w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 1272w, https://substackcdn.com/image/fetch/$s_!sBsr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe1b3cbc1-cd6b-437c-92ff-2c13be37225d_781x318.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>---</p><p></p><p>2 - A An&#225;lise Weibull n&#227;o &#233; usada s&#243; em engenharia mec&#226;nica ou el&#233;trica &#8212; ela tem aplica&#231;&#245;es muito &#250;teis em **TI (Tecnologia da Informa&#231;&#227;o)** tamb&#233;m.</p><p>Vou dar exemplos pr&#225;ticos de onde e como voc&#234; pode aplicar.</p><p>---</p><p>## 1. Prever falhas de hardware (disco, mem&#243;ria, fonte)</p><p>Em um data center, voc&#234; tem centenas de **HDs ou SSDs**. Em vez de esperar quebrar, voc&#234; coleta os tempos de falha de discos j&#225; trocados e ajusta uma Weibull.</p><p>- Se &#946; &lt; 1 &#8594; falhas precoces (lote ruim, problema de f&#225;brica)</p><p>- Se &#946; &gt; 1 &#8594; falhas por desgaste (comum em discos mec&#226;nicos)</p><p>Com isso, voc&#234; consegue:</p><p>- Calcular o **tempo ideal para troca preventiva** (ex.: substituir discos com 3 anos, antes da taxa de falha disparar)</p><p>- Estimar quantos discos v&#227;o falhar no pr&#243;ximo m&#234;s</p><p>**Exemplo real:** Provedores de nuvem (AWS, Google) usam modelos Weibull para programar a substitui&#231;&#227;o de discos e servidores.</p><p>---</p><p>## 2. Planejar garantia de equipamentos de TI</p><p>Se voc&#234; comprou 1000 notebooks para a empresa, pode usar Weibull para saber:</p><p>- Quantos v&#227;o precisar de reparo no primeiro ano?</p><p>- A partir de quantos meses a taxa de falha aumenta muito?</p><p>Assim, voc&#234; decide se vale a pena estender a garantia ou j&#225; comprar pe&#231;as sobressalentes.</p><p>---</p><p>## 3. Analisar falhas de software (bugs recorrentes)</p><p>Parece estranho, mas sim: voc&#234; pode aplicar Weibull a **tempos entre falhas de um sistema** (crash, travamento, erro grave).</p><p>- Se &#946; &lt; 1 &#8594; as falhas est&#227;o ficando **mais raras** com o tempo (o sistema est&#225; amadurecendo, bugs sendo corrigidos)</p><p>- Se &#946; &gt; 1 &#8594; as falhas est&#227;o ficando **mais frequentes** (pode ser degrada&#231;&#227;o por carga, vazamento de mem&#243;ria, etc.)</p><p>Isso ajuda a equipe de desenvolvimento a priorizar: ser&#225; que o sistema est&#225; realmente est&#225;vel ou est&#225; piorando?</p><p>---</p><p>## 4. Manuten&#231;&#227;o preditiva em infraestrutura de rede</p><p>Roteadores, switches, fontes de alimenta&#231;&#227;o, nobreaks, cabos de fibra&#8230; todos t&#234;m vida &#250;til. Com Weibull voc&#234; responde:</p><p>- &#8220;Ap&#243;s 4 anos, quantos switches provavelmente v&#227;o falhar?&#8221;</p><p>- &#8220;Qual o tempo m&#233;dio entre falhas (MTBF) real desse modelo?&#8221;</p><p>Com isso, voc&#234; evita paradas inesperadas e pode negociar contratos de manuten&#231;&#227;o baseados em dados.</p><p>---</p><p>## 5. Ciclo de vida de m&#225;quinas virtuais ou containers</p><p>Ambientes de nuvem: voc&#234; pode analisar quanto tempo uma VM (inst&#226;ncia) roda antes de ser reiniciada por falha, ou quanto tempo um container live dura sem crash.</p><p>Se o &#946; for alto (&gt;2), &#233; um sinal de que algo est&#225; se desgastando (ex.: vazamento de recurso, arquivo de log crescendo demais). D&#225; para agir antes da queda geral.</p><p>---</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UpF8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UpF8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 424w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 848w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 1272w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UpF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png" width="910" height="369" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e22869fe-9918-4717-b14e-5dd597bd1070_910x369.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:369,&quot;width&quot;:910,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193687826?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UpF8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 424w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 848w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 1272w, https://substackcdn.com/image/fetch/$s_!UpF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe22869fe-9918-4717-b14e-5dd597bd1070_910x369.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>---</p><p>## Ferramentas pr&#225;ticas para TI</p><p>Voc&#234; n&#227;o precisa fazer conta no papel. Use softwares que j&#225; t&#234;m Weibull embutido:</p><p>- **R** (biblioteca `fitdistrplus`) &#8211; gratuito</p><p>- **Python** (scipy.stats.weibull_min, reliability)</p><p>- **Excel** (com suplementos ou f&#243;rmulas manuais)</p><p>- **Ferramentas de manuten&#231;&#227;o preditiva** como `Splunk` + modelos customizados</p><p>---</p><p></p><p>3 - Vamos a um exemplo pr&#225;tico e simples em **Python** para analisar falhas de HD (ou qualquer componente de TI) usando a distribui&#231;&#227;o Weibull.</p><p>## Cen&#225;rio</p><p>Voc&#234; testou 10 discos r&#237;gidos e anotou o tempo (em horas) at&#233; cada um falhar. Quer descobrir:</p><p>- O **&#946; (beta)** &#8211; tipo de falha (desgaste, aleat&#243;ria ou precoce)</p><p>- O **&#951; (eta)** &#8211; vida caracter&#237;stica</p><p>- O **MTBF** estimado (tempo m&#233;dio entre falhas)</p><p>---</p><p>## C&#243;digo Python (passo a passo)</p><p>python</p><p># 1. Importar bibliotecas necess&#225;rias</p><p>import numpy as np</p><p>import matplotlib.pyplot as plt</p><p>from scipy import stats</p><p>import pandas as pd</p><p></p><p># 2. Dados de falha de HD (horas at&#233; falhar)</p><p># Exemplo: discos de um mesmo lote</p><p>tempos_falha = [1200, 1350, 1420, 1580, 1650, 1780, 2100, 2350, 2800, 3200]</p><p># 3. Ajustar a distribui&#231;&#227;o Weibull aos dados</p><p># Usamos &#8216;floc=0&#8217; porque n&#227;o queremos um par&#226;metro de localiza&#231;&#227;o (gamma)</p><p>params = stats.weibull_min.fit(tempos_falha, floc=0)</p><p>beta, loc, eta = params   # loc ser&#225; 0, ent&#227;o beta e eta s&#227;o os importantes</p><p></p><p># 4. Exibir os par&#226;metros</p><p>print(f&#8221;Par&#226;metro &#946; (forma): {beta:.3f}&#8221;)</p><p>print(f&#8221;Par&#226;metro &#951; (escala / vida caracter&#237;stica): {eta:.1f} horas&#8221;)</p><p>print(f&#8221;Par&#226;metro &#947; (localiza&#231;&#227;o): {loc} (fixado em zero)&#8221;)</p><p></p><p># 5. Calcular MTBF (tempo m&#233;dio at&#233; falha) para Weibull</p><p># MTBF = &#951; * &#915;(1 + 1/&#946;)</p><p>from scipy.special import gamma</p><p>mtbf = eta * gamma(1 + 1/beta)</p><p>print(f&#8221;\nMTBF estimado: {mtbf:.1f} horas&#8221;)</p><p></p><p># 6. Interpreta&#231;&#227;o do beta</p><p>if beta &lt; 1:</p><p>    tipo = &#8220;falhas precoces (mortalidade infantil)&#8221;</p><p>elif beta == 1:</p><p>    tipo = &#8220;falhas aleat&#243;rias (exponencial)&#8221;</p><p>else:</p><p>    tipo = &#8220;falhas por desgaste (envelhecimento)&#8221;</p><p>print(f&#8221;\nInterpreta&#231;&#227;o: &#946; = {beta:.3f} &#8594; {tipo}&#8221;)</p><p></p><p># 7. Gr&#225;fico de probabilidade Weibull (Weibull plot)</p><p>plt.figure(figsize=(8,5))</p><p>stats.probplot(tempos_falha, dist=stats.weibull_min(beta, scale=eta), plot=plt)</p><p>plt.title(&#8221;Gr&#225;fico de Probabilidade Weibull - Falhas de HD&#8221;)</p><p>plt.xlabel(&#8221;Tempo (horas)&#8221;)</p><p>plt.ylabel(&#8221;Percentil&#8221;)</p><p>plt.grid(True)</p><p>plt.show()</p><p></p><p># 8. Previs&#227;o: qual o tempo para 10% dos discos falharem?</p><p># Tempo para falha de 10% = &#951; * (-ln(1 - 0.10))^(1/&#946;)</p><p>tempo_10pct = eta * (-np.log(1 - 0.10))**(1/beta)</p><p>print(f&#8221;\nTempo para 10% dos discos falharem: {tempo_10pct:.0f} horas&#8221;)</p><p>---</p><p>## Resultado esperado (exemplo num&#233;rico)</p><p>Ao rodar o c&#243;digo com esses dados, voc&#234; ver&#225; algo como:</p><p>Par&#226;metro &#946; (forma): 2.341</p><p>Par&#226;metro &#951; (escala): 2127.3 horas</p><p>Par&#226;metro &#947; (localiza&#231;&#227;o): 0.0</p><p>MTBF estimado: 1884.2 horas</p><p>Interpreta&#231;&#227;o: &#946; = 2.341 &#8594; falhas por desgaste (envelhecimento)</p><p>Tempo para 10% dos discos falharem: 1023 horas</p><p>---</p><p>## O que isso significa para TI?</p><p>- **&#946; &#8776; 2,34** (maior que 1) &#8594; falhas t&#237;picas de **desgaste**. Ou seja, os HDs n&#227;o quebram por acaso; eles t&#234;m uma vida &#250;til e quanto mais tempo passam ligados, maior a chance de falha. Isso &#233; comum em discos mec&#226;nicos (rolamentos, motores).</p><p>- **&#951; = 2127 horas** &#8594; com cerca de 2127 horas (~89 dias), aproximadamente **63,2%** dos discos j&#225; ter&#227;o falhado. &#201; um ponto de refer&#234;ncia para planejar trocas.</p><p>- **MTBF = 1884 horas** &#8594; tempo m&#233;dio esperado de vida de um disco. Em um ambiente com muitos discos, voc&#234; esperaria que um disco falhe a cada 1884 horas de opera&#231;&#227;o (mas cuidado: MTBF &#233; &#250;til para planejamento, mas n&#227;o garante quanto tempo um disco espec&#237;fico vai durar).</p><p>- **Tempo para 10% falharem &#8776; 1023 horas** &#8594; se voc&#234; quiser uma garantia segura, pode trocar os discos antes desse tempo, evitando que 1 em cada 10 quebre inesperadamente.</p><p>---</p><p>## Como usar isso no dia a dia da TI?</p><p>1. **Manuten&#231;&#227;o preditiva**: se voc&#234; tem uma base de 1000 discos, e o tempo para 10% falharem &#233; 1023 horas (~42 dias), programe uma substitui&#231;&#227;o gradual a partir de 40 dias.</p><p>2. **Escolha de fornecedor**: compare dois lotes de discos &#8211; quem tiver maior &#946; e maior &#951; oferece melhor vida &#250;til.</p><p>3. **Dimensionamento de estoque**: sabendo que X% falham por m&#234;s, voc&#234; compra pe&#231;as de reposi&#231;&#227;o na quantidade certa.</p><p>4. **An&#225;lise de falhas recorrentes**: se &#946; cair ao longo do tempo, pode ser que a qualidade do hardware esteja piorando.</p><p>---</p><p>## Quer testar com seus pr&#243;prios dados?</p><p>Basta substituir a lista `tempos_falha` pelos seus valores reais (em horas, dias ou qualquer unidade). Se n&#227;o tiver dados reais, pode simular com `np.random.weibull(2, 10)*2000`.</p>]]></content:encoded></item><item><title><![CDATA[Manutenção Centrada na Confiabilidade (RCM ou MCC)]]></title><description><![CDATA[Aplica&#231;&#227;o da metodologia RCM a TI.]]></description><link>https://emersondominguescmara.substack.com/p/manutencao-centrada-na-confiabilidade</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/manutencao-centrada-na-confiabilidade</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Thu, 09 Apr 2026 13:17:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Rdah!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Rdah!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Rdah!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Rdah!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg" width="1080" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:224330,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193686818?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Rdah!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Rdah!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadb5ee5a-560b-4616-a46e-10a95f3c9d16_1080x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>1 - Imagine que voc&#234; tem um carro. A manuten&#231;&#227;o tradicional seria trocar o &#243;leo a cada 5 mil km ou fazer revis&#245;es s&#243; quando algo quebra. J&#225; a **Manuten&#231;&#227;o Centrada na Confiabilidade (MCC ou RCM)** pergunta: **&#8221;O que pode dar errado neste carro? E o que acontece se falhar?&#8221;**</p><p>Com base nas respostas, voc&#234; decide a melhor forma de cuidar de cada parte. Por exemplo:</p><p>- Os **pneus**: se falharem, voc&#234; pode sofrer um acidente grave. Ent&#227;o voc&#234; inspeciona a press&#227;o e o desgaste com frequ&#234;ncia.</p><p>- O **r&#225;dio**: se falhar, ningu&#233;m morre. Ent&#227;o voc&#234; s&#243; conserta quando parar de funcionar.</p><p>- O **motor**: voc&#234; troca o &#243;leo preventivamente, porque a falha &#233; cara e perigosa.</p><p>Ou seja, a MCC n&#227;o faz manuten&#231;&#227;o &#8220;s&#243; porque sim&#8221;. Ela analisa **riscos, consequ&#234;ncias e custos** para cada equipamento. O foco &#233; garantir que o sistema continue fazendo o que deve fazer (confiabilidade) do jeito mais eficiente poss&#237;vel.</p><p>**Resumo para brilhar:**  </p><p>&gt; &#201; um m&#233;todo que pergunta &#8220;o que pode falhar e qual o impacto?&#8221; para depois decidir se faz manuten&#231;&#227;o preventiva, preditiva ou s&#243; corretiva. Assim, voc&#234; gasta dinheiro onde realmente importa.</p><p></p><p>2 - Agora vamos levar o racioc&#237;nio do carro para o mundo da TI.</p><p>Na pr&#225;tica, a **Manuten&#231;&#227;o Centrada na Confiabilidade (MCC/RCM)** aplicada &#224; TI significa que voc&#234; n&#227;o trata todos os servidores, bancos de dados, redes ou aplicativos do mesmo jeito. Voc&#234; pergunta:</p><p>&gt; **&#8220;O que pode falhar aqui? Qual o impacto no neg&#243;cio se falhar? E qual a melhor forma de evitar ou mitigar essa falha?&#8221;**</p><p>A partir da&#237;, cada componente ganha uma estrat&#233;gia de manuten&#231;&#227;o (preventiva, preditiva, corretiva ou at&#233; mesmo nenhuma, se o risco for muito baixo).</p><p>### Exemplos pr&#225;ticos em TI</p><p>1. **Banco de dados de vendas (miss&#227;o cr&#237;tica)**  </p><p>   - Falha poss&#237;vel: servidor trava, disco corrompe.  </p><p>   - Consequ&#234;ncia: empresa para de faturar, clientes insatisfeitos.  </p><p>   - A&#231;&#227;o MCC:  </p><p>     - Manuten&#231;&#227;o preventiva: backup autom&#225;tico di&#225;rio + replica&#231;&#227;o s&#237;ncrona.  </p><p>     - Manuten&#231;&#227;o preditiva: monitorar espa&#231;o em disco, IOPS, temperatura do servidor.  </p><p>     - Teste peri&#243;dico de restaura&#231;&#227;o (verificar se o backup realmente funciona).</p><p>2. **Switch de rede do escrit&#243;rio secund&#225;rio (menos cr&#237;tico)**  </p><p>   - Falha poss&#237;vel: fonte queima.  </p><p>   - Consequ&#234;ncia: filial pequena fica sem rede por algumas horas.  </p><p>   - A&#231;&#227;o MCC: manter um switch reserva na prateleira (manuten&#231;&#227;o corretiva planejada). N&#227;o precisa de redund&#226;ncia ativa cara.</p><p>3. **Servidor de impress&#227;o de relat&#243;rios internos (baixa criticidade)**  </p><p>   - Falha poss&#237;vel: servi&#231;o para de rodar.  </p><p>   - Consequ&#234;ncia: ningu&#233;m imprime relat&#243;rios n&#227;o urgentes.  </p><p>   - A&#231;&#227;o MCC: s&#243; corrigir quando falhar. N&#227;o vale a pena investir em redund&#226;ncia ou monitoramento sofisticado.</p><p>4. **Cluster de aplica&#231;&#227;o web com alta demanda**  </p><p>   - Falha poss&#237;vel: um n&#243; do cluster morre.  </p><p>   - Consequ&#234;ncia: sobrecarga nos outros n&#243;s, poss&#237;vel lentid&#227;o.  </p><p>   - A&#231;&#227;o MCC:  </p><p>     - Preventiva: health checks autom&#225;ticos, rein&#237;cio autom&#225;tico do n&#243;.  </p><p>     - Preditiva: monitorar uso de CPU/mem&#243;ria para detectar vazamento antes da queda.  </p><p>     - Projetar para tolerar falha de um n&#243; (redund&#226;ncia N+1).</p><p>### Ferramentas e pr&#225;ticas que ajudam a aplicar MCC em TI</p><p>- **Monitoramento preditivo**: Prometheus, Zabbix, Datadog &#8211; alertam antes da falha.</p><p>- **An&#225;lise de risco**: matriz de criticidade (Alta/M&#233;dia/Baixa) com base em impacto financeiro, seguran&#231;a, conformidade.</p><p>- **Gest&#227;o de mudan&#231;as e testes**: validar se as a&#231;&#245;es preventivas n&#227;o quebram outras coisas.</p><p>- **Automa&#231;&#227;o de recovery**: scripts que reiniciam servi&#231;os, trocam IPs, acionam failover.</p><p>### Resumo para TI</p><p>&gt; A MCC na TI &#233; abandonar a ideia de &#8220;fazer manuten&#231;&#227;o em tudo igual&#8221;. Voc&#234; classifica seus ativos de TI por **import&#226;ncia para o neg&#243;cio**, analisa **modos de falha** e aplica a estrat&#233;gia certa: prevenir o que &#233; cr&#237;tico, prever o que &#233; caro, s&#243; corrigir o que &#233; irrelevante. O objetivo &#233; **m&#225;xima confiabilidade com custo m&#237;nimo**, n&#227;o &#8220;zero falhas a qualquer pre&#231;o&#8221;.</p>]]></content:encoded></item><item><title><![CDATA[FMEA (Análise de Modo e Efeito de Falha)]]></title><description><![CDATA[Imagine que voc&#234; vai fazer uma viagem de carro.]]></description><link>https://emersondominguescmara.substack.com/p/fmea-analise-de-modo-e-efeito-de</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/fmea-analise-de-modo-e-efeito-de</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Thu, 09 Apr 2026 12:44:02 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CHiX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CHiX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CHiX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CHiX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg" width="1080" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:259629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193683803?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CHiX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!CHiX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F458c724c-a365-4958-9617-50f207fad26f_1080x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>Imagine que voc&#234; vai fazer uma viagem de carro. Antes de sair, voc&#234; pensa: &#8220;E se o pneu furar? E se acabar a gasolina? E se o carro superaquecer?&#8221; Voc&#234; j&#225; est&#225;, sem saber, fazendo uma esp&#233;cie de FMEA mental.</p><p>**FMEA** &#233; uma forma organizada de fazer isso antes de fabricar um produto ou executar um processo. A sigla significa:</p><p>- **F** (An&#225;lise dos **Modos de Falha**): o que pode dar errado? (ex: &#8220;o parafuso quebrar&#8221;)</p><p>- **M** e **E** (e seus **Efeitos**): o que acontece se der errado? (ex: &#8220;a roda cai&#8221;)</p><p>- **A** (**An&#225;lise**): voc&#234; avalia o risco e decide o que fazer para evitar.</p><p>**O passo a passo bem resumido &#233;:**</p><p>1. **Liste o que pode falhar** (modo de falha). Ex: um liquidificador pode n&#227;o ligar.</p><p>2. **Quais as consequ&#234;ncias?** (efeito). Ex: n&#227;o fazer suco.</p><p>3. **O que causa essa falha?** (causa). Ex: fio partido.</p><p>4. **D&#234; notas** para a gravidade, a chance de acontecer e a chance de voc&#234; descobrir antes.</p><p>5. **Se a nota for alta** (risco grande), voc&#234; cria uma a&#231;&#227;o para evitar a falha. Ex: usar um fio mais resistente.</p><p>**Exemplo simples com um copo descart&#225;vel:**</p><p>- **Falha:** copo vaza.</p><p>- **Efeito:** molha a mesa.</p><p>- **Causa:** pl&#225;stico muito fino.</p><p>- **A&#231;&#227;o:** usar pl&#225;stico mais grosso ou fazer um teste antes de produzir em massa.</p><p>**Resumo final:** FMEA &#233; um &#8220;raio-X de poss&#237;veis problemas&#8221; que voc&#234; faz **antes** de acontecer, para gastar pouco consertando o projeto, e n&#227;o muito depois com reclama&#231;&#245;es ou acidentes. Simples assim!</p><p>E essa &#233; uma das melhores coisas do FMEA: ele n&#227;o &#233; exclusivo de f&#225;bricas ou engenharia. Qualquer setor que queira evitar problemas antes que eles aconte&#231;am pode us&#225;-lo.</p><p>Vou dar exemplos bem pr&#225;ticos:</p><p>- **Ind&#250;stria (j&#225; vimos):** evitar que pe&#231;as saiam com defeito.</p><p>- **Hospital / Sa&#250;de:** &#8220;E se o paciente receber o medicamento errado?&#8221; &#8594; revisar a etiquetagem ou dupla checagem.</p><p>- **Software / TI:** &#8220;E se o sistema travar no pagamento?&#8221; &#8594; criar alertas ou backups.</p><p>- **Escrit&#243;rio / Administra&#231;&#227;o:** &#8220;E se o e-mail com o contrato for para a pessoa errada?&#8221; &#8594; colocar confirma&#231;&#227;o antes de enviar.</p><p>- **Log&#237;stica / Transporte:** &#8220;E se a carga estragar por falta de refrigera&#231;&#227;o?&#8221; &#8594; monitorar temperatura em tempo real.</p><p>- **Atendimento ao cliente:** &#8220;E se o cliente ficar mais de 10 minutos na fila do chat?&#8221; &#8594; acionar um atendente extra automaticamente.</p><p>- **Constru&#231;&#227;o civil:** &#8220;E se a base do pr&#233;dio ceder?&#8221; &#8594; refor&#231;ar a funda&#231;&#227;o antes.</p><p>**A regra &#233; sempre a mesma:**  </p><p>1. O que pode dar errado?  </p><p>2. O que acontece?  </p><p>3. Qu&#227;o grave &#233;?  </p><p>4. O que faremos para evitar?</p><p>Ou seja, n&#227;o importa se voc&#234; faz bolo, vende roupas, programa aplicativos ou cuida de pacientes &#8212; se existe um processo com passos, o FMEA ajuda a torn&#225;-lo mais seguro. &#128521;</p>]]></content:encoded></item><item><title><![CDATA[Vamos conversar sobre segurança do ambiente de TI!!]]></title><description><![CDATA[Hoje vamos comentar um pouco sobre o sistema SASE (Secure Access Service Edge)]]></description><link>https://emersondominguescmara.substack.com/p/vamos-conversar-sobre-seguranca-do</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/vamos-conversar-sobre-seguranca-do</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 08 Apr 2026 12:21:35 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!nqJQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nqJQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nqJQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nqJQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1529402,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193567024?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nqJQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!nqJQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3298e39-6a5e-4dc9-af85-38988359b481_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>1 - Vamos come&#231;ar do inicio &#8230;</p><p><strong>O que &#233; SASE?</strong><br>Imagine que voc&#234; tem uma empresa com pessoas trabalhando no escrit&#243;rio, em casa ou no caf&#233;. Antes, para proteger a rede, voc&#234; usava v&#225;rios equipamentos separados (firewall, VPN, antiv&#237;rus na nuvem, etc.). O SASE &#233; como se voc&#234; <strong>juntasse tudo isso num s&#243; lugar na internet</strong> (na nuvem), de forma que todo mundo se conecta diretamente a esse &#8220;escudo &#250;nico&#8221; de prote&#231;&#227;o.</p><p><strong>O que ele fornece?</strong><br>Ele fornece <strong>seguran&#231;a + acesso r&#225;pido</strong> de qualquer lugar, sem precisar passar por um escrit&#243;rio central. Na pr&#225;tica:</p><ul><li><p><strong>Identifica quem &#233; voc&#234;</strong> (usu&#225;rio, dispositivo) antes de liberar o acesso.</p></li><li><p><strong>Verifica o tr&#225;fego</strong> (como um filtro que bloqueia v&#237;rus e ataques).</p></li><li><p><strong>Conecta voc&#234; diretamente</strong> aos aplicativos que precisa (seja na nuvem, como o Office 365, ou na rede da empresa).</p></li></ul><p><strong>Resumo final:</strong><br>SASE &#233; um servi&#231;o de seguran&#231;a e rede tudo-em-um, entregue pela nuvem, que permite que qualquer funcion&#225;rio acesse o que precisa de forma r&#225;pida e segura, esteja ele onde estiver.</p><p></p><p>2 - Mas ai vem uma d&#250;vida pertinente!!!</p><p></p><p>&#8220;<strong>Qual a diferen&#231;a do SASE para um sistema VPN/MFA normal que existe hoje?? Quais as principais diferen&#231;as e benef&#237;cios  entre eles?</strong>&#8220;</p><p></p><p>Vamos fazer uma analogia para simplificar a explica&#231;&#227;o:</p><h3><strong>A analogia do escrit&#243;rio</strong></h3><ul><li><p><strong>VPN + MFA</strong> &#233; como um <strong>porteiro + crach&#225;</strong>: voc&#234; mostra o crach&#225; (MFA), o porteiro verifica e te deixa entrar no <strong>pr&#233;dio inteiro</strong>. Depois que entra, voc&#234; pode circular por todos os andares, ver salas vazias, banheiros, etc. &#201; seguro na porta, mas aberto dentro.</p></li><li><p><strong>SASE</strong> &#233; como um <strong>escrit&#243;rio moderno com crach&#225; inteligente</strong>: voc&#234; mostra o crach&#225; (MFA), mas s&#243; pode ir exatamente para a sala onde vai trabalhar. O sistema sabe quem &#233; voc&#234;, qual dispositivo, e te conecta diretamente ao aplicativo (e-mail, ERP, etc.), sem dar acesso a toda a rede. E ainda tem um seguran&#231;a que inspeciona tudo o que voc&#234; faz em tempo real.</p></li></ul><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Zl58!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Zl58!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 424w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 848w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 1272w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Zl58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png" width="779" height="596" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:596,&quot;width&quot;:779,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:82742,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193567024?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Zl58!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 424w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 848w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 1272w, https://substackcdn.com/image/fetch/$s_!Zl58!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7a3f1255-ccc2-48b2-8ac5-f411a5f80e4d_779x596.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><strong>Benef&#237;cios pr&#225;ticos do SASE sobre VPN+MFA</strong></h3><ol><li><p><strong>Velocidade</strong>: Voc&#234; acessa Office 365, Salesforce ou Zoom <strong>direto da sua casa para a nuvem</strong>, sem passar pelo escrit&#243;rio. Com VPN tradicional, todo seu tr&#225;fego (incluindo YouTube, Spotify) vai para o escrit&#243;rio e volta &#8212; lento e caro.</p></li><li><p><strong>Seguran&#231;a granular</strong>: Na VPN, se voc&#234; tem acesso &#224; rede, pode escanear pastas compartilhadas, tentar acessar servidores. No SASE, voc&#234; s&#243; enxerga o aplicativo autorizado. Se seu dispositivo estiver infectado, o SASE bloqueia antes de conectar.</p></li><li><p><strong>Menos sobrecarga na empresa</strong>: Com VPN, o escrit&#243;rio precisa de grande banda e muitos equipamentos para lidar com todos os funcion&#225;rios remotos. Com SASE, cada um sai direto para a internet de forma segura, descongestionando a matriz.</p></li><li><p><strong>Prote&#231;&#227;o cont&#237;nua</strong>: VPN+MFA s&#243; autentica na entrada. Depois, voc&#234; pode baixar malware, enviar dados sigilosos etc. O SASE inspeciona todo o tr&#225;fego, como se tivesse um firewall e antiv&#237;rus na nuvem o tempo todo.</p></li><li><p><strong>Simplicidade para TI</strong>: Com VPN+MFA, voc&#234; gerencia VPN, MFA, firewall, proxy web, antiv&#237;rus, etc. Com SASE, tudo &#233; configurado num &#250;nico painel.</p></li></ol><div><hr></div><h3><strong>Quando VPN+MFA ainda faz sentido?</strong></h3><ul><li><p><strong>Cen&#225;rio simples</strong>: Poucos funcion&#225;rios remotos, s&#243; precisam acessar um ou dois sistemas internos.</p></li><li><p><strong>Or&#231;amento apertado</strong>: VPN e MFA podem ser gratuitas ou muito baratas (open-source, inclusas no firewall).</p></li><li><p><strong>Legado cr&#237;tico</strong>: Sistemas internos antigos que n&#227;o funcionam bem com acesso direto pela nuvem.</p></li></ul><p><strong>Mas aten&#231;&#227;o</strong>: </p><p>Para empresas que j&#225; usam muitos aplicativos na nuvem (SaaS) e t&#234;m equipes h&#237;bridas, a VPN tradicional se torna um gargalo e um risco de seguran&#231;a. SASE foi feito exatamente para esse mundo.</p><h3><strong>Resumo final</strong></h3><blockquote><p><strong>VPN + MFA</strong> = te d&#225; a chave do escrit&#243;rio.<br><strong>SASE</strong> = te leva diretamente &#224; sua mesa, com um seguran&#231;a do seu lado, e n&#227;o te deixa entrar em outras salas.</p></blockquote><p></p><p>3 - Mas como voc&#234; &#233; uma pessoa sagaz veio mais uma d&#250;vida &#8230;</p><p>&#8220; <strong>Mas um sistema "padr&#227;o" VPN+MFA voc&#234; poderia limitar acessos ao ambiente por regras de Firewall da mesma maneira que um SASE ent&#227;o eu entendo que n&#227;o vejo uma melhoria ao usar o SASE</strong>&#8220;</p><p></p><p>Vamos detalhar os tr&#234;s grandes &#8220;pontos cegos&#8221; da sua abordagem que o SASE foi projetado para resolver.</p><h3><strong>&#127919; Ponto Cego 1: A Natureza da Regra (IP vs. Identidade)</strong></h3><p>Com uma VPN, o firewall enxerga o mundo atrav&#233;s de endere&#231;os de IP. Voc&#234; concede acesso &#224; rede <code>192.168.x.x</code>. Se o usu&#225;rio &#233; confi&#225;vel, ele entra na rede e pode se mover. Em contraste, o SASE centraliza as pol&#237;ticas na sua <strong>identidade</strong>. A regra &#233;: &#8220;Jo&#227;o, do departamento financeiro, usando o laptop corporativo em dia, pode acessar o SAP&#8221;. Isso elimina o risco de movimento lateral, um problema cr&#244;nico em VPNs.</p><h3><strong>&#128230; Ponto Cego 2: Para Onde o Tr&#225;fego Vai (Backhauling)</strong></h3><p>Com a VPN, por padr&#227;o, todo o tr&#225;fego do usu&#225;rio &#233; roteado (tunelado) de volta para o data center da sua empresa para ser inspecionado. Isso &#233; ineficiente, lento e caro. O SASE, por sua vez, utiliza uma rede mundial de Pontos de Presen&#231;a (PoPs) na nuvem. O tr&#225;fego do usu&#225;rio &#233; inspecionado no PoP mais pr&#243;ximo dele e, em seguida, enviado diretamente para o destino final na internet.</p><h3><strong>&#128736;&#65039; Ponto Cego 3: A Complexidade e o Custo de Gest&#227;o</strong></h3><p>Seu cen&#225;rio de &#8220;firewall com regras&#8221; rapidamente se torna um pesadelo operacional, exigindo time dedicado para manuten&#231;&#227;o de regras e aquisi&#231;&#227;o de m&#250;ltiplas ferramentas. O SASE entrega uma plataforma unificada na nuvem que escala sob demanda e simplifica a gest&#227;o.</p><h3><strong>&#128142; Conclus&#227;o: Uma Mudan&#231;a de Paradigma</strong></h3><p>A diferen&#231;a que voc&#234; procura n&#227;o est&#225; na presen&#231;a ou aus&#234;ncia de regras, mas sim em <strong>quem</strong> toma a decis&#227;o e <strong>onde</strong> ela &#233; aplicada.</p><ul><li><p><strong>Firewall + VPN</strong>: Utiliza regras est&#225;ticas de rede, aplicadas em um &#250;nico ponto (o data center). &#201; um modelo de per&#237;metro fixo.</p></li><li><p><strong>SASE</strong>: Utiliza pol&#237;ticas din&#226;micas baseadas em identidade e contexto, aplicadas em uma rede distribu&#237;da globalmente. &#201; um modelo de &#8220;per&#237;metro zero&#8221; (Zero Trust).</p></li></ul><p>Portanto, a resposta &#233; <strong>n&#227;o</strong>. As regras de um firewall tradicional n&#227;o s&#227;o equivalentes &#224;s capacidades de um SASE, pois elas operam em camadas fundamentalmente diferentes do modelo de seguran&#231;a.</p><p></p><p>4 - Existe hoje algum sistemas SASE open-source?</p><p></p><p>Sobre as alternativas open-source para SASE, a resposta &#233; que <strong>n&#227;o existe, hoje, um sistema completo e maduro que voc&#234; possa simplesmente baixar e instalar como uma solu&#231;&#227;o pronta.</strong> A maioria dos projetos que voc&#234; encontra se encaixa em uma destas tr&#234;s categorias:</p><ul><li><p><strong>Componentes Individuais (Modelo &#8220;FVM/DIY&#8221;):</strong> Ferramentas que resolvem partes do problema, exigindo que voc&#234; mesmo integre e gerencie tudo.</p></li><li><p><strong>Projetos de Prova de Conceito:</strong> S&#227;o experimentos e estudos de caso, que podem servir como refer&#234;ncia, mas n&#227;o s&#227;o recomendados para produ&#231;&#227;o.</p></li><li><p><strong>Solu&#231;&#245;es com C&#243;digo Aberto, mas com Camada Comercial:</strong> Plataformas que t&#234;m uma vers&#227;o open-source, mas que para funcionar em escala dependem de uma camada de servi&#231;os ou licen&#231;a paga.</p></li></ul><h3><strong>&#129513; O Modelo &#8220;FVM/DIY&#8221; (Fa&#231;a Voc&#234; Mesmo/Do It Yourself)</strong></h3><p>Se a ideia for construir uma arquitetura SASE com componentes de c&#243;digo aberto, o caminho &#233; o &#8220;FVM/DIY&#8221;. Voc&#234; precisar&#225; juntar as pe&#231;as do quebra-cabe&#231;a. O artigo do TechTarget menciona que empresas com infraestrutura heterog&#234;nea ou contratos existentes podem adotar essa abordagem comprando produtos individuais que comp&#245;em a arquitetura SASE. A tabela abaixo lista alguns componentes que podem fazer parte dessa arquitetura, cada um resolvendo uma parte do problema.</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RaQS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RaQS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 424w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 848w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 1272w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RaQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png" width="776" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:776,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/193567024?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RaQS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 424w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 848w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 1272w, https://substackcdn.com/image/fetch/$s_!RaQS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffbc66383-9ef6-4914-92a9-32552ddfde15_776x700.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Um &#243;timo exemplo de como essas pe&#231;as se encaixam &#233; o projeto <strong>opensase</strong> no GitHub. Ele utiliza Docker para criar uma pilha que combina <strong>OpenVPN</strong> (VPN), <strong>Squid</strong> (proxy transparente) e <strong>ClamAV</strong> (antiv&#237;rus), mostrando na pr&#225;tica como &#233; poss&#237;vel orquestrar esses componentes.</p><h3><strong>&#128269; Projetos em Est&#225;gio Inicial</strong></h3><p>Alguns projetos se apresentam como &#8220;SASE Open Source&#8221;, mas &#233; importante entender o contexto de cada um:</p><ul><li><p><strong>Cylonix</strong>: &#201; uma aplica&#231;&#227;o cliente open-source para um servi&#231;o SASE. O c&#243;digo do cliente &#233; aberto, mas sua arquitetura depende de uma infraestrutura central, e alguns recursos avan&#231;ados s&#227;o para &#8220;Enterprise only&#8221;.</p></li><li><p><strong>SD-SASE</strong>: &#201; um projeto de comunidade com objetivos ambiciosos. Por&#233;m, o aviso de que &#8220;o c&#243;digo n&#227;o est&#225; aberto durante a fase de desenvolvimento&#8221; sugere que ainda n&#227;o &#233; uma solu&#231;&#227;o pr&#225;tica.</p></li><li><p><strong>RICON</strong>: A empresa afirma oferecer uma solu&#231;&#227;o &#8220;open-source&#8221;, mas o modelo de neg&#243;cio parece ser baseado na venda de appliances de hardware e suporte, com o software sendo a plataforma para esses servi&#231;os.</p></li></ul><h3><strong>&#128161; A Vis&#227;o Geral do Mercado</strong></h3><p>O SASE &#233;, por natureza, uma arquitetura complexa e integrada. No mercado comercial, ele &#233; oferecido como um servi&#231;o (SaaS) por grandes fornecedores (como Zscaler, Cisco, etc.), que entregam tudo integrado e com suporte. As alternativas open-source, por outro lado, exigem que voc&#234; seja o &#8220;arquiteto&#8221; e &#8220;integrador&#8221; do sistema, combinando diferentes ferramentas.</p><p>Resumindo, o caminho open-source para SASE &#233; um <strong>projeto de engenharia</strong> que demanda profundo conhecimento t&#233;cnico, tempo para integra&#231;&#227;o e recursos para manuten&#231;&#227;o. &#201; uma alternativa v&#225;lida para organiza&#231;&#245;es com time especializado, mas n&#227;o &#233; um substituto plug-and-play das solu&#231;&#245;es comerciais.</p><p></p><p></p>]]></content:encoded></item><item><title><![CDATA[KaaS na Prática: Crie um Produto de Nuvem Privada com Proxmox e Kubernetes em 30 dias! ]]></title><description><![CDATA[Neste v&#237;deo, apresento a arquitetura completa de um projeto que transforma infraestrutura Proxmox em um produto de Nuvem Privada (KaaS - Kubernetes as a Service).]]></description><link>https://emersondominguescmara.substack.com/p/kaas-na-pratica-crie-um-produto-de</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/kaas-na-pratica-crie-um-produto-de</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 08 Apr 2026 12:01:32 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/193566831/28bf384de998b0f244a276f0347037f7.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Neste v&#237;deo, apresento a arquitetura completa de um projeto que transforma infraestrutura Proxmox em um produto de Nuvem Privada (KaaS - Kubernetes as a Service). Mostro como &#233; poss&#237;vel provisionar um ambiente seguro e isolado, pronto para produ&#231;&#227;o, em menos de 30 dias!<br><br>[O que voc&#234; vai ver neste v&#237;deo]<br><br>Arquitetura de Rede: Segmenta&#231;&#227;o com VLANs, rede isolada (10.10.200.0/24) e o uso do HAProxy como Jump Server/Bastion Host e Load Balancer.<br><br>Automa&#231;&#227;o com Terraform: Como gerenciar o provisionamento de VMs, usu&#225;rios e ACLs. Explico por que utilizamos o par&#226;metro -parallelism=1 para garantir a estabilidade do host de teste.<br><br>Provisionamento com Ansible: O deploy do cluster Kubernetes propriamente dito ap&#243;s a infraestrutura estar 100% operacional.<br><br>Diferencial de Neg&#243;cio: Como reaproveitar ambientes em funcionamento para oferecer novos servi&#231;os sem a necessidade de criar infraestruturas paralelas.<br><br>[Tecnologias Utilizadas]<br><br>Hypervisor: Proxmox VE<br><br>IaC: Terraform<br><br>Config Management: Ansible<br><br>Security: HAProxy (Jump Server/ACLs)<br><br>Orquestra&#231;&#227;o: Kubernetes (K8s)<br><br>[Sobre o Autor]<br>Desenvolvedor e Arquiteto de Infraestrutura, entusiasta do movimento FVM (Fa&#231;a Voc&#234; Mesmo) e autodidata por natureza. O foco aqui &#233; compartilhar conhecimento pr&#225;tico para quem busca solu&#231;&#245;es reais e eficientes no dia a dia de TI.<br><br><a href="https://www.youtube.com/hashtag/opentowork">#OpenToWork</a> <a href="https://www.youtube.com/hashtag/kubernetes">#Kubernetes</a> <a href="https://www.youtube.com/hashtag/proxmox">#Proxmox</a> <a href="https://www.youtube.com/hashtag/terraform">#Terraform</a> <a href="https://www.youtube.com/hashtag/ansible">#Ansible</a> <a href="https://www.youtube.com/hashtag/cloudcomputing">#CloudComputing</a> <a href="https://www.youtube.com/hashtag/devops">#DevOps</a> <a href="https://www.youtube.com/hashtag/nuvemprivada">#NuvemPrivada</a> <a href="https://www.youtube.com/hashtag/kaas">#KaaS</a> <a href="https://www.youtube.com/hashtag/fvm">#FVM</a></p>]]></content:encoded></item><item><title><![CDATA[Gestores de micro serviços]]></title><description><![CDATA[Um panorama atual sobre os gerentes de ambiente de micro servi&#231;os.]]></description><link>https://emersondominguescmara.substack.com/p/gestores-de-micro-servicos</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/gestores-de-micro-servicos</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 25 Mar 2026 10:50:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!kGp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kGp1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kGp1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kGp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg" width="1080" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:265056,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/192080451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kGp1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kGp1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a79c97d-7e93-438d-aa30-d3085380b07f_1080x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Imagine que voc&#234; tem <strong>v&#225;rios computadores</strong> (ou servidores) e quer rodar seus programas (que est&#227;o dentro de containers) neles de forma organizada, sem se preocupar em qual m&#225;quina cada programa est&#225; rodando.</p><p>O <strong>Docker Swarm</strong> e o <strong>Kubernetes</strong> s&#227;o ferramentas que fazem isso, mas de formas diferentes.</p><div><hr></div><h2><strong>&#128051; Docker Swarm</strong></h2><h3><strong>O que &#233;?</strong></h3><p>&#201; o <strong>orquestrador nativo do Docker</strong>. Ele transforma um grupo de m&#225;quinas em um &#8220;enxame&#8221; (swarm) e voc&#234; gerencia tudo com comandos simples do Docker.</p><h3><strong>Caracter&#237;sticas principais:</strong></h3><ul><li><p><strong>Simplicidade</strong>: &#201; f&#225;cil de instalar e configurar. Se voc&#234; j&#225; usa Docker, aprende Swarm em poucas horas.</p></li><li><p><strong>Integra&#231;&#227;o</strong>: Os comandos s&#227;o <code>docker service create</code>, <code>docker stack deploy</code>, etc. Tudo junto.</p></li><li><p><strong>Seguran&#231;a por padr&#227;o</strong>: J&#225; vem com TLS autom&#225;tico entre os n&#243;s.</p></li><li><p><strong>Escalabilidade</strong>: Funciona bem para dezenas ou centenas de containers, mas n&#227;o para milhares em cen&#225;rios muito complexos.</p></li></ul><h3><strong>Onde funciona melhor?</strong></h3><ul><li><p><strong>Times pequenos/m&#233;dios</strong> que querem algo simples e funcional.</p></li><li><p><strong>Projetos que j&#225; usam Docker</strong> e n&#227;o querem aprender uma ferramenta nova e complexa.</p></li><li><p><strong>Ambientes onde a simplicidade de opera&#231;&#227;o vale mais do que recursos avan&#231;ados</strong> (ex: startups, equipes de DevOps enxutas).</p></li></ul><div><hr></div><h2><strong>&#9784;&#65039; Kubernetes (K8s)</strong></h2><h3><strong>O que &#233;?</strong></h3><p>&#201; um orquestrador mais <strong>poderoso, flex&#237;vel e complexo</strong>. Ele foi criado pelo Google e hoje &#233; mantido por uma enorme comunidade. Ele gerencia containers (n&#227;o s&#243; Docker, mas tamb&#233;m outras runtime) com uma arquitetura rica.</p><h3><strong>Caracter&#237;sticas principais:</strong></h3><ul><li><p><strong>Complexidade</strong>: Curva de aprendizado &#237;ngreme. Voc&#234; precisa entender conceitos como Pods, Deployments, Services, Ingress, etc.</p></li><li><p><strong>Alta flexibilidade</strong>: Permite configurar praticamente qualquer comportamento de rede, armazenamento, escalabilidade, pol&#237;ticas de seguran&#231;a, etc.</p></li><li><p><strong>Ecossistema enorme</strong>: Ferramentas como Helm (pacotes), Prometheus (monitoramento), Istio (service mesh) s&#227;o nativas do ecossistema K8s.</p></li><li><p><strong>Escalabilidade</strong>: Projetado para milhares de n&#243;s e containers. &#201; o padr&#227;o da ind&#250;stria para grande escala.</p></li></ul><h3><strong>Onde funciona melhor?</strong></h3><ul><li><p><strong>Empresas grandes</strong> ou com times de DevOps dedicados.</p></li><li><p><strong>Ambientes complexos</strong> que exigem m&#250;ltiplos ambientes (dev, staging, prod) com pol&#237;ticas de rede e seguran&#231;a refinadas.</p></li><li><p><strong>Projetos que precisam de portabilidade</strong> entre nuvens (multi-cloud) e alto controle.</p></li><li><p><strong>Quando se espera crescer muito</strong> e j&#225; se tem estrutura para gerenciar a complexidade.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dIZF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dIZF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 424w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 848w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 1272w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dIZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png" width="757" height="565" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:565,&quot;width&quot;:757,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/192080451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dIZF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 424w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 848w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 1272w, https://substackcdn.com/image/fetch/$s_!dIZF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c70fdd7-b16b-4a82-84a2-f1b357ece4fa_757x565.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2><strong>&#129517; Resumo: onde cada um funciona melhor</strong></h2><h3><strong>Escolha Docker Swarm se:</strong></h3><ul><li><p>Voc&#234; tem um time pequeno.</p></li><li><p>Precisa de algo que funcione &#8220;logo&#8221; com o m&#237;nimo de configura&#231;&#227;o.</p></li><li><p>N&#227;o precisa de recursos super avan&#231;ados (ex: service mesh, pol&#237;tica de rede granular).</p></li><li><p>Seu cen&#225;rio &#233; single-cloud ou on-premises simples.</p></li></ul><h3><strong>Escolha Kubernetes se:</strong></h3><ul><li><p>Voc&#234; tem time especializado (ou vai usar um servi&#231;o gerenciado como EKS, AKS, GKE).</p></li><li><p>Precisa de controle total sobre rede, armazenamento e pol&#237;ticas.</p></li><li><p>Vai operar em grande escala ou multi-cloud.</p></li><li><p>Quer seguir o padr&#227;o da ind&#250;stria para n&#227;o ficar preso a uma tecnologia.</p></li></ul><p></p><p>A escolha certa depende muito do seu cen&#225;rio: voc&#234; quer algo <strong>mais simples</strong>, algo que tamb&#233;m gerencie <strong>m&#225;quinas virtuais</strong> ou uma <strong>solu&#231;&#227;o completa na nuvem</strong>?</p><p>Vamos explorar as principais alternativas, que podem ser divididas em quatro grupos:</p><div><hr></div><h3><strong>1. &#9881;&#65039; Outros Orquestradores (Alternativas Diretas)</strong></h3><p>S&#227;o ferramentas que fazem o mesmo trabalho de orquestrar containers, mas com abordagens diferentes.</p><h4><strong>HashiCorp Nomad</strong></h4><ul><li><p><strong>O que &#233;:</strong> Um orquestrador <strong>leve e flex&#237;vel</strong> da HashiCorp (mesma do Terraform e Vault). Ele n&#227;o orquestra s&#243; containers, mas tamb&#233;m m&#225;quinas virtuais (VMs), aplica&#231;&#245;es tradicionais e jobs em lote .</p></li><li><p><strong>Pontos Fortes:</strong></p><ul><li><p><strong>Instala&#231;&#227;o simples:</strong> &#201; um bin&#225;rio &#250;nico e leve (cerca de 35MB), muito mais f&#225;cil que o Kubernetes .</p></li><li><p><strong>Flexibilidade:</strong> Permite rodar containers (Docker) e aplica&#231;&#245;es legadas (que n&#227;o est&#227;o em containers) no mesmo cluster .</p></li><li><p><strong>Integra&#231;&#227;o:</strong> Funciona perfeitamente com o <strong>Consul</strong> (descoberta de servi&#231;os) e <strong>Vault</strong> (gerenciamento de segredos) da HashiCorp .</p></li></ul></li><li><p><strong>Onde funciona melhor:</strong></p><ul><li><p>Ambientes que rodam uma <strong>mistura de tecnologias</strong> (containers + VMs + aplica&#231;&#245;es tradicionais).</p></li><li><p>Equipes que j&#225; usam o ecossistema da HashiCorp.</p></li><li><p>Projetos que querem os benef&#237;cios da orquestra&#231;&#227;o sem a complexidade do Kubernetes .</p></li></ul></li></ul><h4><strong>Apache Mesos + Marathon</strong></h4><ul><li><p><strong>O que &#233;:</strong> Um &#8220;av&#244;&#8221; dos orquestradores. O <strong>Mesos</strong> gerencia os recursos (CPU, mem&#243;ria) de um cluster, e o <strong>Marathon</strong> &#233; o &#8220;motor&#8221; que roda os containers em cima dele .</p></li><li><p><strong>Pontos Fortes:</strong></p><ul><li><p><strong>Escala gigantesca:</strong> Projetado para rodar em <strong>dezenas de milhares de n&#243;s</strong>, uma escala que poucos sistemas precisam .</p></li><li><p><strong>Versatilidade:</strong> Assim como o Nomad, ele foi feito para rodar n&#227;o s&#243; containers, mas tamb&#233;m big data (Hadoop, Spark) .</p></li></ul></li><li><p><strong>Onde funciona melhor:</strong></p><ul><li><p>Empresas que j&#225; t&#234;m uma grande infraestrutura baseada em Mesos e precisam de escala massiva.</p></li><li><p><em>Aten&#231;&#227;o:</em> &#201; uma tecnologia mais antiga e complexa. A comunidade e o desenvolvimento s&#227;o menores hoje em dia comparados ao Kubernetes .</p></li></ul></li></ul><div><hr></div><h3><strong>2. &#9729;&#65039; Servi&#231;os Gerenciados (Solu&#231;&#227;o na Nuvem)</strong></h3><p>Se voc&#234; n&#227;o quer se preocupar em gerenciar a infraestrutura do cluster, os provedores de nuvem oferecem op&#231;&#245;es que fazem isso para voc&#234;.</p><h4><strong>Amazon ECS (Elastic Container Service)</strong></h4><ul><li><p><strong>O que &#233;:</strong> O orquestrador nativo da <strong>AWS</strong>. &#201; uma alternativa &#8220;mais simples&#8221; ao Kubernetes para quem j&#225; est&#225; na nuvem da Amazon .</p></li><li><p><strong>Pontos Fortes:</strong></p><ul><li><p><strong>Integra&#231;&#227;o total com a AWS:</strong> Funciona nativamente com Load Balancers, IAM (permiss&#245;es), CloudWatch (logs) e RDS .</p></li><li><p><strong>Simplicidade:</strong> Voc&#234; gerencia tudo usando o console da AWS ou comandos espec&#237;ficos, sem precisar aprender um novo sistema complexo como o Kubernetes .</p></li><li><p><strong>Fargate:</strong> Permite rodar containers sem gerenciar servidores (serverless) .</p></li></ul></li><li><p><strong>Onde funciona melhor:</strong></p><ul><li><p>Empresas que j&#225; est&#227;o 100% na <strong>AWS</strong>.</p></li><li><p>Times que querem uma solu&#231;&#227;o que &#8220;funciona logo&#8221; com o que j&#225; conhecem da nuvem, sem a curva de aprendizado do Kubernetes.</p></li></ul></li></ul><h4><strong>Google Cloud Run / Azure Container Instances (ACI)</strong></h4><ul><li><p><strong>O que &#233;:</strong> Plataformas <strong>serverless</strong> para rodar containers. Voc&#234; faz o deploy da imagem, e a nuvem cuida de tudo: escalar de zero a milhares de inst&#226;ncias conforme a demanda .</p></li><li><p><strong>Pontos Fortes:</strong></p><ul><li><p><strong>Custo-benef&#237;cio:</strong> Voc&#234; paga apenas pelo tempo de processamento que seu container usa. Se n&#227;o houver tr&#225;fego, voc&#234; paga zero .</p></li><li><p><strong>Simplicidade extrema:</strong> N&#227;o h&#225; clusters para gerenciar. &#201; o &#8220;n&#237;vel m&#225;ximo&#8221; de abstra&#231;&#227;o .</p></li></ul></li><li><p><strong>Onde funciona melhor:</strong></p><ul><li><p><strong>APIs, microsservi&#231;os e tarefas pontuais (jobs)</strong> que se beneficiam do scaling autom&#225;tico instant&#226;neo.</p></li><li><p>Times que querem focar 100% no c&#243;digo da aplica&#231;&#227;o e esquecer a exist&#234;ncia de servidores ou clusters.</p></li></ul></li></ul><div><hr></div><h3><strong>3. &#129513; Distribui&#231;&#245;es Leves de Kubernetes (K8s &#8220;Dieta&#8221;)</strong></h3><p>Se voc&#234; quer usar Kubernetes, mas acha o padr&#227;o pesado demais para seu ambiente (como em dispositivos pequenos), existem vers&#245;es &#8220;enxutas&#8221; que mant&#234;m a compatibilidade.</p><h4><strong>K3s (da Rancher/SUSE)</strong></h4><ul><li><p><strong>O que &#233;:</strong> Uma vers&#227;o certificada do Kubernetes que vem em um &#250;nico bin&#225;rio de menos de <strong>100MB</strong> e consome pouca RAM (512 MB) .</p></li><li><p><strong>Onde funciona melhor:</strong> <strong>Edge computing, IoT (Internet das Coisas), CI/CD (testes automatizados) e desenvolvimento local</strong>. &#201; o padr&#227;o para rodar K8s em Raspberry Pi .</p></li></ul><h4><strong>MicroK8s (da Canonical)</strong></h4><ul><li><p><strong>O que &#233;:</strong> Feito pela empresa do Ubuntu, &#233; um K8s leve que instala com um &#250;nico comando e tem foco em <strong>desenvolvedores e opera&#231;&#245;es locais</strong> .</p></li><li><p><strong>Onde funciona melhor:</strong> Desenvolvimento local, testes e pequenas implanta&#231;&#245;es de produ&#231;&#227;o que precisam de um cluster simples e que pode ser atualizado com facilidade .</p></li></ul><div><hr></div><h3><strong>4. &#127970; Plataformas Empresariais (Kubernetes &#8220;Plus&#8221;)</strong></h3><p>S&#227;o vers&#245;es do Kubernetes com funcionalidades extras de seguran&#231;a, CI/CD e governan&#231;a, vendidas como um produto completo.</p><h4><strong>Red Hat OpenShift</strong></h4><ul><li><p><strong>O que &#233;:</strong> &#201; basicamente o Kubernetes &#8220;de terno e gravata&#8221;. A Red Hat pega o Kubernetes e adiciona um monte de ferramentas de seguran&#231;a, pipelines de CI/CD (Tekton), um console para desenvolvedores e gerenciamento de imagens .</p></li><li><p><strong>Onde funciona melhor:</strong> Grandes empresas que precisam de <strong>suporte corporativo</strong>, conformidade rigorosa (governo, bancos) e uma plataforma completa que vai al&#233;m do orquestrador b&#225;sico</p></li></ul><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CRUf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CRUf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 424w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 848w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 1272w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CRUf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png" width="766" height="530" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:530,&quot;width&quot;:766,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73942,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/192080451?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CRUf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 424w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 848w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 1272w, https://substackcdn.com/image/fetch/$s_!CRUf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b313674-08b5-44da-8685-d3cbd3fc3882_766x530.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3><strong>&#129300; E o Kubernetes?</strong></h3><p>Mesmo com todas essas op&#231;&#245;es, o <strong>Kubernetes continua sendo o &#8220;rei&#8221;</strong> para a grande maioria dos cen&#225;rios de m&#233;dio e grande porte. Se voc&#234; precisa de um ecossistema gigantesco, portabilidade entre nuvens e um padr&#227;o da ind&#250;stria, ele ainda &#233; a escolha principal .</p><p>Espero que esse panorama tenha ajudado! </p><p>At&#233; a pr&#243;xima!!!</p>]]></content:encoded></item><item><title><![CDATA[Vamos conversar sobre KaaS (Kubernetes As A Servide).]]></title><description><![CDATA[Vou te ajudar estruturando isso como um plano de arquitetura + pr&#233;-requisitos + boas pr&#225;ticas, focado em KaaS multi-tenant com HA e seguran&#231;a.]]></description><link>https://emersondominguescmara.substack.com/p/vamos-conversar-sobre-kaas-kubernetes</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/vamos-conversar-sobre-kaas-kubernetes</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Mon, 23 Mar 2026 16:08:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!0-mr!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2206355d-462e-4d8f-a9c4-f75132b04954_144x144.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div><hr></div><h1>&#129504; 1. Vis&#227;o geral da arquitetura (KaaS)</h1><p>Voc&#234; quer basicamente entregar algo parecido com o que o Amazon EKS, Google Kubernetes Engine ou Azure Kubernetes Service fazem &#8212; mas on-prem / self-managed.</p><h3>Componentes principais</h3><p><strong>Infra base (camada 0):</strong></p><ul><li><p>Hosts f&#237;sicos ou VMs (hypervisor tipo Proxmox VE, VMware ESXi, ou KVM)</p></li><li><p>Rede 192.168.122.0/24 (ADM/Internet)</p></li></ul><p><strong>Cluster Kubernetes (camada 1):</strong></p><ul><li><p>3 control planes (HA)</p></li><li><p>3 workers</p></li><li><p>Load balancer de API</p></li><li><p>etcd distribu&#237;do</p></li></ul><p><strong>Camada de acesso (camada 2):</strong></p><ul><li><p>Load balancer externo (HA)</p></li><li><p>Bastion / VPN</p></li><li><p>Ingress Controller</p></li></ul><p><strong>Camada multi-tenant (camada 3 - futuro):</strong></p><ul><li><p>Namespaces / clusters dedicados</p></li><li><p>RBAC + isolamento</p></li><li><p>Network Policies</p></li></ul><div><hr></div><h1>&#127959;&#65039; 2. Topologia recomendada</h1><h3>&#128313; Nodes</h3><p>TipoQuantidadeObserva&#231;&#245;esControl Plane3etcd distribu&#237;doWorker3workloadsLB (externo)2 (ou 1 + VRRP)HAProxy / NginxBastion1acesso seguro</p><div><hr></div><h3>&#128313; Distribui&#231;&#227;o IP (exemplo)</h3><pre><code><code>192.168.122.10-12  -&gt; control planes
192.168.122.20-22  -&gt; workers
192.168.122.5-6    -&gt; load balancers
192.168.122.2      -&gt; bastion
192.168.122.100    -&gt; VIP (API Kubernetes)
</code></code></pre><div><hr></div><h1>&#9881;&#65039; 3. Componentes obrigat&#243;rios</h1><h2>&#128312; Cluster Kubernetes</h2><p>Voc&#234; pode usar:</p><ul><li><p>kubeadm &#8594; mais controle (recomendado pra KaaS)</p></li><li><p>Rancher &#8594; facilita gest&#227;o</p></li><li><p>OpenShift &#8594; enterprise (mais pesado)</p></li></ul><p>&#128073; Para seu caso: <strong>kubeadm + stack modular</strong> &#233; ideal.</p><div><hr></div><h2>&#128312; Load Balancer (API HA)</h2><p>Para HA da API (<code>:6443</code>):</p><ul><li><p>HAProxy (mais usado)</p></li><li><p>Nginx</p></li><li><p>Keepalived (VIP com VRRP)</p></li></ul><p>&#128073; Padr&#227;o recomendado:</p><ul><li><p>HAProxy + Keepalived (VIP flutuante)</p></li></ul><div><hr></div><h2>&#128312; etcd (cr&#237;tico)</h2><ul><li><p>Rodando nos 3 control planes</p></li><li><p>Snapshot + backup obrigat&#243;rio</p></li><li><p>Lat&#234;ncia baixa entre nodes (&lt;10ms ideal)</p></li></ul><div><hr></div><h2>&#128312; CNI (rede do cluster)</h2><p>Escolha cr&#237;tica para multi-tenant:</p><ul><li><p>Calico &#8594; melhor para seguran&#231;a (NetworkPolicy forte)</p></li><li><p>Cilium &#8594; avan&#231;ado (recomendado para futuro)</p></li><li><p>Flannel &#8594; simples (n&#227;o recomendado pra multi-tenant)</p></li></ul><p>&#128073; Recomenda&#231;&#227;o: <strong>Cilium ou Calico</strong></p><div><hr></div><h2>&#128312; Ingress Controller</h2><ul><li><p>NGINX Ingress Controller</p></li><li><p>Traefik</p></li></ul><p>&#128073; NGINX &#233; mais padr&#227;o.</p><div><hr></div><h2>&#128312; Storage</h2><p>Voc&#234; vai precisar de storage persistente:</p><ul><li><p>Longhorn</p></li><li><p>Ceph</p></li><li><p>OpenEBS</p></li></ul><p>&#128073; Para PoC: Longhorn<br>&#128073; Produ&#231;&#227;o: Ceph</p><div><hr></div><h1>&#128272; 4. Seguran&#231;a (CR&#205;TICO para KaaS)</h1><p>Aqui est&#225; o diferencial do seu servi&#231;o.</p><h2>&#128313; Acesso</h2><ul><li><p>Nada exposto direto</p></li><li><p>Acesso via:</p><ul><li><p>VPN (WireGuard recomendado)</p></li><li><p>Bastion host</p></li></ul></li></ul><p>Sugest&#245;es:</p><ul><li><p>WireGuard</p></li><li><p>OpenVPN</p></li></ul><div><hr></div><h2>&#128313; API Server</h2><ul><li><p>TLS obrigat&#243;rio</p></li><li><p>RBAC ativado</p></li><li><p>Audit logs ativados</p></li><li><p>Desabilitar anonymous access</p></li></ul><div><hr></div><h2>&#128313; Multi-tenancy</h2><p>Voc&#234; ter&#225; 2 modelos poss&#237;veis:</p><h3>1. Soft multi-tenancy (mais simples)</h3><ul><li><p>Namespaces isolados</p></li><li><p>RBAC</p></li><li><p>Network Policies</p></li></ul><h3>2. Hard multi-tenancy (mais seguro)</h3><ul><li><p>Cluster por cliente</p></li></ul><p>&#128073; Para KaaS s&#233;rio: <strong>cluster por cliente</strong> ou &#8220;cluster pool&#8221;</p><div><hr></div><h2>&#128313; Network Policies</h2><p>Com Calico ou Cilium:</p><ul><li><p>Default deny</p></li><li><p>Isolamento entre namespaces</p></li><li><p>Controle L3/L7 (Cilium)</p></li></ul><div><hr></div><h2>&#128313; Secrets</h2><ul><li><p>N&#227;o usar secrets padr&#227;o apenas</p></li><li><p>Integrar com:</p><ul><li><p>HashiCorp Vault</p></li></ul></li></ul><div><hr></div><h2>&#128313; Hardening</h2><ul><li><p>CIS Benchmark Kubernetes</p></li><li><p>Desabilitar root containers</p></li><li><p>Pod Security Standards (restricted)</p></li></ul><div><hr></div><h1>&#127760; 5. Alta disponibilidade (HA)</h1><h2>&#128312; Control Plane HA</h2><ul><li><p>3 masters</p></li><li><p>etcd quorum (2/3)</p></li></ul><h2>&#128312; API HA</h2><ul><li><p>HAProxy + Keepalived (VIP)</p></li></ul><h2>&#128312; Worker HA</h2><ul><li><p>Deploy distribu&#237;do</p></li><li><p>Pod anti-affinity</p></li></ul><div><hr></div><h1>&#128230; 6. Observabilidade (j&#225; deixe previsto)</h1><p>Mesmo na PoC, pense nisso:</p><ul><li><p>Prometheus</p></li><li><p>Grafana</p></li><li><p>Loki</p></li><li><p>Jaeger</p></li></ul><div><hr></div><h1>&#128268; 7. Requisitos de infraestrutura</h1><h2>&#128313; Hardware m&#237;nimo (PoC)</h2><p>NodeCPURAMDiscoControl Plane2-4 vCPU4-8GBSSDWorker4-8 vCPU8-16GBSSD</p><div><hr></div><h2>&#128313; Requisitos gerais</h2><ul><li><p>Linux (Ubuntu 22.04 ou similar)</p></li><li><p>Sincroniza&#231;&#227;o NTP</p></li><li><p>DNS interno funcionando</p></li><li><p>Swap desabilitado</p></li><li><p>Container runtime:</p><ul><li><p>containerd (recomendado)</p></li></ul></li></ul><div><hr></div><h1>&#129513; 8. Decis&#245;es importantes (fa&#231;a antes da PoC)</h1><p>Voc&#234; precisa definir:</p><h3>&#128312; 1. Modelo KaaS</h3><ul><li><p>Cluster por cliente? (recomendado)</p></li><li><p>Namespace por cliente?</p></li></ul><h3>&#128312; 2. Networking</h3><ul><li><p>Overlay (Cilium/Calico)</p></li><li><p>LoadBalancer (MetalLB?)</p></li></ul><p>Sugest&#227;o:</p><ul><li><p>MetalLB</p></li></ul><div><hr></div><h3>&#128312; 3. Provisionamento futuro</h3><p>(Deixar no radar como voc&#234; comentou)</p><ul><li><p>Terraform</p></li><li><p>Ansible</p></li><li><p>Cluster API</p></li></ul><div><hr></div><h1>&#128640; 9. Arquitetura recomendada (resumo)</h1><p><strong>Stack sugerida para sua PoC:</strong></p><ul><li><p>Kubernetes: kubeadm</p></li><li><p>CNI: Cilium</p></li><li><p>LB: HAProxy + Keepalived</p></li><li><p>Storage: Longhorn</p></li><li><p>Ingress: NGINX</p></li><li><p>LB interno: MetalLB</p></li><li><p>Seguran&#231;a: WireGuard + RBAC + NetworkPolicy</p></li><li><p>Observabilidade: Prometheus + Grafana</p></li></ul><div><hr></div><h1>&#9888;&#65039; 10. Erros comuns (evite isso)</h1><ul><li><p>&#10060; Usar Flannel em ambiente multi-tenant</p></li><li><p>&#10060; Expor API direto na internet</p></li><li><p>&#10060; N&#227;o isolar namespaces</p></li><li><p>&#10060; N&#227;o fazer backup do etcd</p></li><li><p>&#10060; Misturar clientes no mesmo cluster sem controle</p></li></ul><div><hr></div><h1></h1>]]></content:encoded></item><item><title><![CDATA[Comparando Linux Bridge e OVS: simplicidade vs flexibilidade]]></title><description><![CDATA[Como escolher a melhor solu&#231;&#227;o de rede virtual para cada cen&#225;rio]]></description><link>https://emersondominguescmara.substack.com/p/comparando-linux-bridge-e-ovs-simplicidade</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/comparando-linux-bridge-e-ovs-simplicidade</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Fri, 20 Mar 2026 13:40:24 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!eIfA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eIfA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eIfA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eIfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg" width="1080" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:247709,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191581897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eIfA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!eIfA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b4d658f-89c3-48bf-90db-486fe86e4c63_1080x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>&#129513; O que &#233; uma bridge?</h2><p>Uma <em>bridge</em> (ponte) em redes &#233; como um &#8220;switch virtual&#8221;: ela conecta v&#225;rias interfaces de rede e decide para onde enviar os pacotes.</p><div><hr></div><h2>&#128039; <strong>Linux Bridge</strong></h2><p>&#201; a bridge <strong>nativa do Linux</strong>, simples e tradicional.</p><h3>&#128313; Caracter&#237;sticas:</h3><ul><li><p>J&#225; vem no kernel do Linux</p></li><li><p>Funciona como um switch b&#225;sico (camada 2)</p></li><li><p>F&#225;cil de configurar (ex: <code>brctl</code>, <code>ip link</code>)</p></li><li><p>Poucos recursos avan&#231;ados</p></li></ul><h3>&#128077; Quando usar:</h3><ul><li><p>Ambientes simples</p></li><li><p>M&#225;quinas virtuais b&#225;sicas (ex: com KVM)</p></li><li><p>Quando voc&#234; s&#243; precisa conectar interfaces</p></li></ul><div><hr></div><h2>&#128640; <strong>Open vSwitch (OVS Bridge)</strong></h2><p>O <strong>Open vSwitch</strong> &#233; uma bridge muito mais avan&#231;ada e program&#225;vel.</p><h3>&#128313; Caracter&#237;sticas:</h3><ul><li><p>Switch virtual <strong>mais inteligente e flex&#237;vel</strong></p></li><li><p>Suporte a <strong>OpenFlow</strong> (controle program&#225;vel da rede)</p></li><li><p>Integra&#231;&#227;o com cloud (ex: OpenStack, Kubernetes)</p></li><li><p>Suporte a VLAN, t&#250;nel (VXLAN, GRE), QoS, etc.</p></li><li><p>Melhor para redes complexas e automa&#231;&#227;o</p></li></ul><h3>&#128077; Quando usar:</h3><ul><li><p>Ambientes de nuvem</p></li><li><p>SDN (redes definidas por software)</p></li><li><p>Data centers</p></li><li><p>Quando precisa de controle avan&#231;ado de tr&#225;fego</p></li></ul><div><hr></div><h2>&#9878;&#65039; Compara&#231;&#227;o direta</h2><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JnHF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JnHF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 424w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 848w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 1272w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JnHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png" width="780" height="358" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:358,&quot;width&quot;:780,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32198,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191581897?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JnHF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 424w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 848w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 1272w, https://substackcdn.com/image/fetch/$s_!JnHF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F64cb851d-c03c-4dc6-a2be-1c70ed1a64ee_780x358.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div><hr></div><h2>&#129504; Resumindo (analogia simples)</h2><ul><li><p><strong>Linux Bridge</strong> = &#127968; <em>Um interruptor de luz simples</em></p></li><li><p><strong>OVS</strong> = &#129504; <em>Um sistema de automa&#231;&#227;o residencial inteligente</em></p></li></ul><div><hr></div><h2>&#128161; Dica pr&#225;tica</h2><p>Se voc&#234; est&#225;:</p><ul><li><p>come&#231;ando &#8594; use <strong>Linux Bridge</strong></p></li><li><p>trabalhando com cloud/devops &#8594; v&#225; de <strong>OVS</strong></p></li></ul><div><hr></div><p></p>]]></content:encoded></item><item><title><![CDATA[Metal As A Service]]></title><description><![CDATA[Explicando Bare Metal e MAAS de uma forma simples e direta!!]]></description><link>https://emersondominguescmara.substack.com/p/metal-as-a-service</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/metal-as-a-service</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 18 Mar 2026 23:08:57 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mN1I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mN1I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mN1I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mN1I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg" width="1080" height="1920" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1920,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:264150,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191424181?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mN1I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mN1I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bdb5bd8-cd13-4c49-ab5a-629588d83985_1080x1920.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>O <strong>Bare Metal</strong> &#233; essa casa privativa.</p><div><hr></div><h2>O que &#233; Bare Metal?</h2><p>Em termos t&#233;cnicos, um servidor <strong>Bare Metal</strong> &#233; um computador f&#237;sico dedicado exclusivamente a um &#250;nico locat&#225;rio (voc&#234;). O termo &#8220;bare metal&#8221; (metal nu, em tradu&#231;&#227;o livre) refere-se ao fato de que o sistema operacional &#233; instalado diretamente no hardware, sem uma camada intermedi&#225;ria de virtualiza&#231;&#227;o.</p><p>Diferente dos servidores em nuvem comuns (Cloud RAM/VPS), onde v&#225;rios usu&#225;rios dividem o mesmo processador e mem&#243;ria atrav&#233;s de um software chamado &#8220;hypervisor&#8221;, no Bare Metal <strong>todo o poder de processamento &#233; seu</strong>.</p><div><hr></div><h2>As principais caracter&#237;sticas</h2><p>Para entender por que algu&#233;m escolheria isso em vez da praticidade da nuvem comum, veja os pilares:</p><ul><li><p><strong>Desempenho Bruto:</strong> Como n&#227;o h&#225; &#8220;vizinhos barulhentos&#8221; disputando recursos, voc&#234; tem 100% da capacidade do hardware dispon&#237;vel o tempo todo.</p></li><li><p><strong>Seguran&#231;a e Isolamento:</strong> &#201; a op&#231;&#227;o favorita para empresas que lidam com dados ultrassens&#237;veis, pois h&#225; isolamento f&#237;sico total. Ningu&#233;m mais tem acesso ao seu disco ou mem&#243;ria.</p></li><li><p><strong>Customiza&#231;&#227;o Total:</strong> Voc&#234; escolhe o processador exato, a quantidade de RAM e o tipo de disco (NVMe, SSD, etc.), al&#233;m de poder instalar o sistema operacional e os drivers que preferir.</p></li><li><p><strong>Previsibilidade:</strong> O tempo de resposta &#233; constante. N&#227;o h&#225; oscila&#231;&#245;es de performance causadas por outros usu&#225;rios no mesmo servidor.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jOvl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jOvl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 424w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 848w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 1272w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jOvl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png" width="715" height="376" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:376,&quot;width&quot;:715,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191424181?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jOvl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 424w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 848w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 1272w, https://substackcdn.com/image/fetch/$s_!jOvl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F01eb2ae1-92f8-496e-add7-a07ea1526cfe_715x376.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Quando vale a pena usar?</h2><p>N&#227;o &#233; todo projeto que precisa de tanto poder. O Bare Metal brilha em cen&#225;rios como:</p><ol><li><p><strong>Big Data e Analytics:</strong> Processamento de volumes gigantescos de dados.</p></li><li><p><strong>Renderiza&#231;&#227;o de V&#237;deo e 3D:</strong> Tarefas que levam a CPU/GPU ao limite por horas.</p></li><li><p><strong>Bancos de Dados de Alta Performance:</strong> Onde cada milissegundo de lat&#234;ncia importa.</p></li><li><p><strong>Jogos Online:</strong> Servidores de games que precisam de estabilidade absoluta para evitar o &#8220;lag&#8221;.</p></li></ol><p><strong>Em resumo:</strong> Se a sua aplica&#231;&#227;o exige o m&#225;ximo de performance e voc&#234; quer controle total sobre a m&#225;quina, o Bare Metal &#233; o caminho. Se voc&#234; precisa de flexibilidade para aumentar e diminuir o servidor rapidamente, a nuvem virtualizada ainda &#233; melhor.</p><p></p><p>O <strong>Bare Metal</strong> &#233; a &#8220;casa f&#237;sica&#8221; que voc&#234; aluga, o <strong>MAAS (Metal as a Service)</strong> &#233; como se voc&#234; tivesse um controle remoto m&#225;gico que permite construir, reformar ou demolir essa casa instantaneamente, sem precisar de um martelo.</p><p>O MAAS &#233; uma ferramenta (criada pela Canonical, a mesma empresa do Ubuntu) que transforma seus servidores f&#237;sicos em algo que parece <strong>nuvem</strong>.</p><div><hr></div><h2>O que o MAAS faz na pr&#225;tica?</h2><p>Normalmente, configurar um servidor f&#237;sico d&#225; trabalho: voc&#234; precisa ir ao datacenter, colocar o pendrive, instalar o SO, configurar a rede, etc. O MAAS automatiza tudo isso. Ele trata o hardware real como se fossem m&#225;quinas virtuais em um painel de controle.</p><h3>O Fluxo de Funcionamento:</h3><ol><li><p><strong>Enclausuramento (Enlistment):</strong> Voc&#234; conecta um servidor novo na rede. O MAAS o detecta automaticamente via rede (PXE Boot).</p></li><li><p><strong>Invent&#225;rio (Commissioning):</strong> O MAAS &#8220;testa&#8221; a m&#225;quina, descobre quanta CPU, RAM e disco ela tem e a coloca no seu invent&#225;rio.</p></li><li><p><strong>Aloca&#231;&#227;o (Deployment):</strong> Com um clique (ou um comando na API), voc&#234; diz: <em>&#8220;Instale o Ubuntu 24.04 e configure o RAID 1 nesse servidor&#8221;</em>. O MAAS faz tudo sozinho.</p></li></ol><div><hr></div><h2>Por que usar MAAS?</h2><p>O MAAS resolve o maior problema do Bare Metal: a <strong>agilidade</strong>.</p><ul><li><p><strong>Automa&#231;&#227;o de Data Center:</strong> Voc&#234; gerencia centenas de servidores f&#237;sicos t&#227;o facilmente quanto gerencia 5 inst&#226;ncias na AWS.</p></li><li><p><strong>Integra&#231;&#227;o com Juju e Terraform:</strong> Voc&#234; pode usar ferramentas de infraestrutura como c&#243;digo (IaC) para subir clusters inteiros de <strong>Kubernetes</strong> ou <strong>OpenStack</strong> diretamente no metal.</p></li><li><p><strong>Gest&#227;o de IP e DNS:</strong> Ele j&#225; vem com um servidor DNS e DHCP integrado para que cada m&#225;quina nova j&#225; saia configurada com a rede correta.</p></li></ul><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6KbH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6KbH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 424w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 848w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 1272w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6KbH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png" width="696" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:696,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19290,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191424181?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6KbH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 424w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 848w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 1272w, https://substackcdn.com/image/fetch/$s_!6KbH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1fc5619b-f40f-4e85-a114-061d970a96aa_696x229.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p></p><p>Imagine que voc&#234; tem 50 servidores brutos. Sem o MAAS, voc&#234; levaria dias para configurar todos manualmente. Com o MAAS, voc&#234; escreve um script e em 20 minutos todos est&#227;o rodando o sistema que voc&#234; escolheu.</p><h3>Exemplo de uso:</h3><p>Empresas que precisam rodar bancos de dados pesados ou clusters de Intelig&#234;ncia Artificial usam o MAAS para garantir que o software rode direto no hardware (ganhando performance), mas mantendo a facilidade de &#8220;clicar e instalar&#8221; da nuvem.</p><p></p>]]></content:encoded></item><item><title><![CDATA[Quando o Firewall vira o Gargalo: Como o Linux XDP salva o dia contra ataques DDoS]]></title><description><![CDATA[Baseado em uma hist&#243;ria real!!!]]></description><link>https://emersondominguescmara.substack.com/p/quando-o-firewall-vira-o-gargalo</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/quando-o-firewall-vira-o-gargalo</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Mon, 16 Mar 2026 18:46:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!59SR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!59SR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!59SR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!59SR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!59SR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!59SR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!59SR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png" width="1408" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1408,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1726224,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/191163767?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!59SR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 424w, https://substackcdn.com/image/fetch/$s_!59SR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 848w, https://substackcdn.com/image/fetch/$s_!59SR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 1272w, https://substackcdn.com/image/fetch/$s_!59SR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec7bf622-00fd-4567-83ae-1a2f6b48d3b0_1408x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p><p>Salve, galera! Espero que estejam todos bem.</p><p>Recentemente, me peguei lembrando de uma situa&#231;&#227;o cr&#237;tica em uma empresa de Cloud onde trabalhei. Enfrent&#225;vamos ataques DDoS constantes e, vira e mexe, o ambiente ficava indispon&#237;vel.</p><p>Em um belo dia, recebemos um ataque t&#227;o massivo que os firewalls simplesmente n&#227;o aguentaram o volume de <strong>PPS (Pacotes por Segundo)</strong>. A situa&#231;&#227;o chegou a um ponto t&#227;o absurdo que, na sala de guerra, tomamos uma decis&#227;o dr&#225;stica: <strong>desligar o firewall</strong>. Era ligar o equipamento e tudo parava; o pr&#243;prio firewall se tornava o gargalo.</p><p>Imaginem o caos: todo o tr&#225;fego de entrada e sa&#237;da fluindo sem a prote&#231;&#227;o da borda, contando apenas com alguns bloqueios b&#225;sicos.</p><p>Foi nesse cen&#225;rio de &#8220;fogo no parquinho&#8221; que comecei a pesquisar solu&#231;&#245;es de alta performance para mitiga&#231;&#227;o de DDoS. Para minha surpresa, encontrei uma tecnologia sensacional: o <strong>Linux XDP</strong>.</p><p>Uma solu&#231;&#227;o <em>open source</em> capaz de tratar tr&#225;fego na casa dos <strong>100Gbps</strong>, dependendo apenas do hardware. Fiquei impressionado e resolvi resumir para voc&#234;s como essa &#8220;m&#225;gica&#8221; funciona.</p><div><hr></div><h3>O que &#233; o XDP (eXpress Data Path)?</h3><p>O XDP &#233; uma tecnologia que permite processar pacotes de rede antes mesmo de eles entrarem no &#8220;cora&#231;&#227;o&#8221; do sistema operacional (o Kernel do Linux).</p><p>Em termos t&#233;cnicos, ele roda diretamente no driver da placa de rede. Isso significa que, se um pacote &#233; malicioso, o Linux pode descart&#225;-lo no exato momento em que ele toca o hardware, sem gastar ciclos de CPU tentando processar metadados complexos.</p><h3>Por que ele &#233; t&#227;o especial?</h3><p>Para entender a vantagem, compare o XDP com o <strong>Netfilter</strong> (iptables/nftables) tradicional:</p><ol><li><p><strong>Firewall Comum (iptables):</strong> O pacote entra, o sistema reserva mem&#243;ria, cria metadados, passa por v&#225;rias camadas de software e s&#243; ent&#227;o verifica a regra. &#201; seguro, mas em ataques de grande escala, o overhead consome todo o processamento.</p></li><li><p><strong>XDP:</strong> O pacote chega e, logo na &#8220;porta de entrada&#8221;, um pequeno programa (escrito em <strong>eBPF</strong>) decide o destino. &#201; a diferen&#231;a entre checar o convite de algu&#233;m na cal&#231;ada ou deixar a pessoa entrar na sala para s&#243; ent&#227;o pedir o RG.</p></li></ol><h3>As 3 a&#231;&#245;es principais do XDP:</h3><ul><li><p><strong>XDP_DROP:</strong> Descarta o pacote imediatamente (o &#8220;santo graal&#8221; contra DDoS).</p></li><li><p><strong>XDP_PASS:</strong> Permite que o pacote siga o caminho normal para a stack do Kernel.</p></li><li><p><strong>XDP_TX:</strong> Reencaminha o pacote de volta pela mesma interface (extremamente &#250;til para balanceamento de carga).</p></li></ul><h3>Onde ele &#233; usado na vida real?</h3><ul><li><p><strong>Prote&#231;&#227;o Anti-DDoS:</strong> Gigantes como <strong>Cloudflare</strong> e <strong>Meta (Facebook)</strong> usam XDP para &#8220;jogar no lixo&#8221; milh&#245;es de pacotes de ataque por segundo sem comprometer a estabilidade dos servidores.</p></li><li><p><strong>Roteadores de Alta Performance:</strong> Para encaminhar tr&#225;fego com lat&#234;ncia m&#237;nima.</p></li></ul><blockquote><p><strong>Ponto importante:</strong> O XDP n&#227;o substitui o nftables ou firewalls stateful para tudo. Ele &#233; excelente para decis&#245;es r&#225;pidas e brutas. Se voc&#234; precisa de regras complexas (como rastrear o estado de uma conex&#227;o), o firewall tradicional ainda &#233; o caminho.</p></blockquote><div><hr></div><h3>Hardware Recomendado para 40 a 100 Gbps</h3><p>Para extrair o poder total do XDP, o hardware precisa acompanhar:</p><p><strong>Processadores (CPU):</strong></p><ul><li><p><strong>AMD EPYC 9004 Series</strong> ou <strong>Intel Xeon Scalable</strong>.</p></li><li><p><em>Ideal:</em> 16+ cores com alto clock e suporte a <strong>PCIe 4.0/5.0</strong>.</p></li></ul><p><strong>Placas de Rede (NIC) compat&#237;veis:</strong></p><ul><li><p><strong>NVIDIA ConnectX-6</strong></p></li><li><p><strong>Intel E810 / X710</strong></p></li><li><p><em>Diferencial:</em> Essas placas suportam <strong>Hardware Offload</strong>, permitindo que o programa eBPF rode com m&#225;xima efici&#234;ncia.</p></li></ul>]]></content:encoded></item><item><title><![CDATA[O Futuro da TI: “Hybrid by Design” e o Fim da Estratégia “Cloud-Only”]]></title><description><![CDATA[A crise energ&#233;tica que estamos vivencio n&#227;o apenas tem o potencial de abalar o movimento de migra&#231;&#227;o para nuvens p&#250;blicas, como j&#225; est&#225; ativamente remodelando as estrat&#233;gias de infraestrutura de TI]]></description><link>https://emersondominguescmara.substack.com/p/o-futuro-da-ti-hybrid-by-design-e</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/o-futuro-da-ti-hybrid-by-design-e</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Thu, 12 Mar 2026 21:38:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Bw2K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A crise energ&#233;tica que estamos vivencio n&#227;o apenas tem o potencial de abalar o movimento de migra&#231;&#227;o para nuvens p&#250;blicas, como j&#225; est&#225; ativamente remodelando as estrat&#233;gias de infraestrutura de TI. O que estamos testemunhando n&#227;o &#233; um abandono completo da nuvem, mas uma mudan&#231;a profunda e pragm&#225;tica em dire&#231;&#227;o a um modelo h&#237;brido, onde a internaliza&#231;&#227;o (repatria&#231;&#227;o) de cargas de trabalho, especialmente as de IA, est&#225; se acelerando .</p><p>A an&#225;lise dos dados mais recentes do setor mostra que a disponibilidade de energia se tornou o principal gargalo para a expans&#227;o da infraestrutura digital, afetando diretamente as decis&#245;es de CIOs e empresas .</p><ul><li><p>O Ponto de Virada: Por que a &#8220;Era Cloud-First&#8221; Est&#225; Dando Lugar a uma Abordagem H&#237;brida</p></li></ul><p>Por quase uma d&#233;cada, a m&#225;xima foi &#8220;cloud-first&#8221; ou &#8220;cloud-only&#8221;. </p><p>No entanto, diversos fatores, com a crise energ&#233;tica no centro, est&#227;o for&#231;ando uma reavalia&#231;&#227;o dessa estrat&#233;gia .</p><p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Bw2K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Bw2K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 424w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 848w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 1272w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Bw2K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png" width="713" height="695" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:695,&quot;width&quot;:713,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103629,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/190774827?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Bw2K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 424w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 848w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 1272w, https://substackcdn.com/image/fetch/$s_!Bw2K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bad8a9e-d93b-4927-9292-7380be132f31_713x695.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>### Estrat&#233;gias Emergentes em um Mundo com Energia Escassa</p><p>A crise energ&#233;tica n&#227;o est&#225; apenas criando problemas, mas tamb&#233;m for&#231;ando a inova&#231;&#227;o e a ado&#231;&#227;o de novas estrat&#233;gias tanto por parte dos provedores de nuvem quanto das empresas.</p><p>- Hiperescalares Buscando Autossufici&#234;ncia Energ&#233;tica: Gigantes como Google, Microsoft e Oracle est&#227;o &#8220;desistindo da rede el&#233;trica&#8221; convencional para seus novos projetos. Eles est&#227;o investindo bilh&#245;es em usinas de energia pr&#243;prias, como a compra da empresa de energia limpa Intersect pelo Google (US$ 4,75 bi) e projetos com pequenos reatores modulares (SMRs) pela Oracle .</p><p>- A Ascens&#227;o das &#8220;Neoclouds&#8221;: Novos provedores est&#227;o competindo com os hiperescalares n&#227;o pela posse de mais chips (GPUs), mas pelo controle de locais com forte conectividade e, crucialmente, acesso garantido &#224; energia. Elas se instalam em hubs menores com grades mais flex&#237;veis .</p><p>- &#8221;Traga Sua Pr&#243;pria Energia&#8221;: Para garantir novos data centers, os operadores agora precisam, em muitos casos, viabilizar sua pr&#243;pria fonte de energia, em vez de depender da expans&#227;o da rede p&#250;blica. A disponibilidade de energia se tornou um requisito bin&#225;rio: ou o local tem energia, ou o projeto n&#227;o sai do papel .</p><p>- Repatria&#231;&#227;o de Cargas de Trabalho de IA**: Os dados s&#227;o contundentes: 93% das empresas j&#225; repatriaram, est&#227;o repatriando ou avaliando a repatria&#231;&#227;o de cargas de trabalho de IA da nuvem p&#250;blica** . Isso &#233; impulsionado pela &#8220;economia da infer&#234;ncia&#8221;: treinar modelos (burst) pode valer a pena na nuvem, mas rod&#225;-los 24/7 (infer&#234;ncia) se torna proibitivamente caro, levando as empresas a trazer essa opera&#231;&#227;o para seus pr&#243;prios data centers .</p><p>- Infraestrutura para IA On-Premises: Como resultado, a constru&#231;&#227;o de fabricas de IA dedicadas (AI network fabrics) dentro dos data centers corporativos est&#225; crescendo. Espera-se que, em 2028, mais da metade dos gastos com switches de data center sejam para suportar cargas de trabalho de IA locais .</p><p>### O Futuro da TI: &#8220;Hybrid by Design&#8221; e o Fim da Estrat&#233;gia &#8220;Cloud-Only&#8221;</p><p>A mensagem principal para CIOs e gestores de TI &#233; clara: a estrat&#233;gia &#8220;cloud-first&#8221; est&#225; dando lugar a uma abordagem &#8221;hybrid by design&#8221;. A infraestrutura on-premises n&#227;o &#233; mais vista como um &#8220;legado&#8221; a ser extinguido, mas sim como um pilar central e estrat&#233;gico para performance, custo previs&#237;vel, seguran&#231;a e soberania de dados .</p><p>O movimento de internaliza&#231;&#227;o n&#227;o &#233; um retrocesso, mas uma evolu&#231;&#227;o. As empresas est&#227;o ficando &#8220;mais inteligentes sobre onde as cargas de trabalho de IA pertencem&#8221; . O papel do profissional de TI agora envolve um novo conjunto de habilidades e preocupa&#231;&#245;es:</p><p>- Mapeamento de Energia: Ao escolher um provedor de nuvem ou um local para um novo data center, a estrat&#233;gia de energia do local (disponibilidade, fonte, custo) &#233; t&#227;o importante quanto a conectividade de fibra .</p><p>- Planejamento Financeiro H&#237;brido: As decis&#245;es de infraestrutura agora exigem uma an&#225;lise mais sofisticada do TCO (Custo Total de Propriedade), comparando o CapEx de uma solu&#231;&#227;o on-premises com o OpEx imprevis&#237;vel e potencialmente crescente da nuvem .</p><p>- Arquitetura de Resili&#234;ncia: Projetar sistemas para operar e falhar perfeitamente entre ambientes de nuvem p&#250;blica e privada, garantindo a continuidade dos neg&#243;cios diante de apag&#245;es ou picos de demanda .</p><p>Em suma, a crise energ&#233;tica atuou como um catalisador, acelerando uma mudan&#231;a que j&#225; estava em curso devido a preocupa&#231;&#245;es com custo, seguran&#231;a e performance. O resultado &#233; um ecossistema de TI mais diversificado, resiliente e estrat&#233;gico, onde a nuvem p&#250;blica &#233; uma ferramenta poderosa, mas n&#227;o a &#250;nica, em um portf&#243;lio que valoriza cada vez mais o controle e a previsibilidade da infraestrutura internalizada.</p>]]></content:encoded></item><item><title><![CDATA[Escolha estratégica que garante a satisfação do cliente.]]></title><description><![CDATA[ZFS ou THIN-CLIENT (LVM) qual escolher?]]></description><link>https://emersondominguescmara.substack.com/p/escolha-estrategica-que-garante-a</link><guid isPermaLink="false">https://emersondominguescmara.substack.com/p/escolha-estrategica-que-garante-a</guid><dc:creator><![CDATA[Emerson Domingues Câmara]]></dc:creator><pubDate>Wed, 11 Mar 2026 16:12:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uarj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Para um servidor de fornecimento de VMs para clientes, a escolha do datastorage &#233; uma decis&#227;o estrat&#233;gica que impacta diretamente a satisfa&#231;&#227;o do cliente, a facilidade de gest&#227;o para voc&#234; e a longevidade da sua infraestrutura.</p><p>A resposta curta &#233;: **ZFS &#233; a escolha superior e mais recomendada para um ambiente de produ&#231;&#227;o que atende a clientes.**</p><p>A seguir, uma an&#225;lise detalhada de porqu&#234; o ZFS se destaca, em quais cen&#225;rios o LVM Thin ainda pode ser considerado e os riscos de cada escolha.</p><p>### &#127942; Por que o ZFS &#233; a Melhor Escolha para Oferecer a Clientes?</p><p>O ZFS n&#227;o &#233; apenas um sistema de arquivos, mas um gerenciador de volumes e sistema de arquivos integrado com foco em **integridade de dados**. Para um cliente, isso se traduz em mais seguran&#231;a e confiabilidade para os dados dele.</p><p>Aqui est&#227;o os principais benef&#237;cios do ZFS nesse contexto:</p><p>- **Prote&#231;&#227;o Contra Corrup&#231;&#227;o de Dados (Integridade):** Esta &#233; a principal vantagem. O ZFS utiliza **checksums** (somas de verifica&#231;&#227;o) em todos os dados. Se um bit de dados for corrompido silenciosamente (bit rot), o ZFS detecta e, se houver redund&#226;ncia (como um espelho), **repara automaticamente** . </p><p>Isso &#233; crucial para a credibilidade do seu servi&#231;o, pois evita dores de cabe&#231;a futuras com dados corrompidos de clientes.</p><p>- **Snapshots e Clones Eficientes:** O ZFS oferece snapshots (instant&#226;neos) quase instant&#226;neos e com consumo m&#237;nimo de espa&#231;o . Isso permite que voc&#234;:</p><p>- Ofere&#231;a **backups locais** ou a op&#231;&#227;o de &#8220;restaurar para um ponto anterior&#8221; como um servi&#231;o de valor agregado.</p><p>- Crie **clones** de VMs em segundos para testes ou desenvolvimento, sem duplicar o uso de espa&#231;o.</p><p>- **Performance Ajust&#225;vel com Cache (ARC/L2ARC/ZIL):** O ZFS usa inteligentemente a RAM (ARC) para acelerar leituras . Em um SSD de 480GB, isso &#233; especialmente ben&#233;fico, pois reduz a lat&#234;ncia e aumenta o IOPS (opera&#231;&#245;es de entrada/sa&#237;da por segundo) para as VMs.</p><p>- **Compress&#227;o em Tempo Real:** Recursos como a compress&#227;o `lz4` t&#234;m overhead m&#237;nimo e podem **aumentar a capacidade efetiva do seu disco e o desempenho** . Voc&#234; consegue armazenar mais VMs no mesmo espa&#231;o f&#237;sico, e com menos grava&#231;&#227;o em disco, prolonga-se a vida &#250;til do SSD.</p><p>- **Otimiza&#231;&#245;es para SSDs:** O ZFS lida muito bem com SSDs, especialmente com a op&#231;&#227;o `TRIM` (`autotrim=on`) para gerenciar o desgaste do disco ao longo do tempo . Lembra do `ashift=12` que voc&#234; perguntou? Ele garante que o ZFS esteja perfeitamente alinhado com a geometria do seu SSD de 480GB, maximizando a performance e a vida &#250;til .</p><p>### &#128201; Quando o LVM Thin Ainda Poderia Ser Considerado?</p><p>O LVM Thin &#233; a evolu&#231;&#227;o do LVM tradicional, adicionando suporte a *thin provisioning* (provisionamento din&#226;mico) e snapshots . No entanto, ele tem limita&#231;&#245;es importantes.</p><p>O LVM Thin poderia ser uma op&#231;&#227;o **se**:</p><p>- Seu hardware for muito limitado, especialmente em RAM. O ZFS realmente aprecia ter bastante mem&#243;ria para o cache (ARC). A recomenda&#231;&#227;o comum &#233; de 1GB de RAM para cada 1TB de armazenamento , o que no seu caso (480GB) seria perfeitamente adequado.</p><p>- Voc&#234; tem um conhecimento muito profundo de LVM e prefere trabalhar com ferramentas mais tradicionais do Linux.</p><p>**Mas os riscos e desvantagens do LVM Thin s&#227;o significativos:**</p><p>- **Performance Pode Degradar com o Uso:** H&#225; relatos de que o LVM Thin pode sofrer severas perdas de performance quando o pool de armazenamento atinge alta capacidade de uso, tornando as VMs extremamente lentas . Isso &#233; um pesadelo em um ambiente de cliente.</p><p>- **&#8221;Write Amplification&#8221; em Snapshots:** O mecanismo de copy-on-write (COW) do LVM Thin pode introduzir lat&#234;ncia, especialmente em opera&#231;&#245;es de escrita com snapshots ativos .</p><p>- **Risco de Corrup&#231;&#227;o se o Pool Encher:** Se o pool de dados do LVM Thin encher completamente, as VMs que estiverem escrevendo dados naquele momento podem sofrer **corrup&#231;&#227;o de dados grave** . Com o ZFS, o pool se torna apenas somente leitura, protegendo a integridade dos dados existentes.</p><p>- **Gest&#227;o de Metadados &#233; Cr&#237;tica:** O espa&#231;o para metadados no LVM Thin &#233; limitado e, se encher, todo o pool pode parar de funcionar, exigindo interven&#231;&#227;o manual complexa . O ZFS gerencia seus metadados de forma mais integrada e robusta.</p><p>### &#9878;&#65039; Tabela Comparativa: ZFS vs. LVM Thin para VMs de Clientes</p><p>Para simplificar a decis&#227;o, veja esta compara&#231;&#227;o direta:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uarj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uarj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 424w, https://substackcdn.com/image/fetch/$s_!uarj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 848w, https://substackcdn.com/image/fetch/$s_!uarj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 1272w, https://substackcdn.com/image/fetch/$s_!uarj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uarj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png" width="632" height="523.375" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:424,&quot;width&quot;:512,&quot;resizeWidth&quot;:632,&quot;bytes&quot;:50521,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://emersondominguescmara.substack.com/i/190632814?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uarj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 424w, https://substackcdn.com/image/fetch/$s_!uarj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 848w, https://substackcdn.com/image/fetch/$s_!uarj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 1272w, https://substackcdn.com/image/fetch/$s_!uarj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe9257b43-c341-49d1-99eb-3e07718dccc8_512x424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p></p>]]></content:encoded></item></channel></rss>