<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luis Cruz</title>
    <description>The latest articles on DEV Community by Luis Cruz (@luiscruzcwb).</description>
    <link>https://dev.to/luiscruzcwb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1108147%2Fba39f74c-0867-4451-87e1-2e5b8c473d16.jpeg</url>
      <title>DEV Community: Luis Cruz</title>
      <link>https://dev.to/luiscruzcwb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luiscruzcwb"/>
    <language>en</language>
    <item>
      <title>Automação GitOps com Terraform e Proxmox</title>
      <dc:creator>Luis Cruz</dc:creator>
      <pubDate>Fri, 30 Jan 2026 14:45:43 +0000</pubDate>
      <link>https://dev.to/luiscruzcwb/automacao-gitops-com-terraform-e-proxmox-12m7</link>
      <guid>https://dev.to/luiscruzcwb/automacao-gitops-com-terraform-e-proxmox-12m7</guid>
      <description>&lt;p&gt;Há alguns meses, adquiri um &lt;strong&gt;M910q Desktop (ThinkCentre)&lt;/strong&gt; para utilizá-lo no meu homelab, permitindo que o WSL do meu Lenovo S145 tivesse um pouco de descanso.&lt;/p&gt;

&lt;p&gt;Essa iniciativa faz parte da minha busca contínua por evolução técnica, criando ambientes de teste e homologação que me permitam experimentar novas ferramentas e abordagens com mais liberdade.&lt;/p&gt;

&lt;p&gt;Na criação das VMs, sempre utilizei o Terraform para o provisionamento. No entanto, recentemente realizei alguns ajustes importantes, integrando o GitHub e o &lt;a href="https://developer.hashicorp.com/terraform/cloud-docs" rel="noopener noreferrer"&gt;HCP Terraform&lt;/a&gt; ao fluxo de trabalho.&lt;/p&gt;

&lt;p&gt;Após dedicar algumas horas a esse processo, concluí um projeto que mudou completamente a forma como gerencio minha infraestrutura de homelab, e decidi compartilhar essa jornada com vocês.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O problema inicial&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sempre que eu precisava criar uma VM no Proxmox, o processo se repetia: abrir a interface web, preencher formulários, configurar rede manualmente, aguardar a criação da VM, acessar via SSH e configurar o ambiente. &lt;/p&gt;

&lt;p&gt;Além disso, era necessário torcer para lembrar exatamente quais passos haviam sido executados caso fosse preciso replicar o processo no futuro. &lt;/p&gt;

&lt;p&gt;Não havia histórico de mudanças, automação consistente ou rastreabilidade.&lt;/p&gt;

&lt;p&gt;Mesmo utilizando scripts ou o próprio Terraform, ainda existiam etapas manuais, tornando o processo mais demorado do que deveria e com pontos claros de melhoria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A solução: GitOps + Terraform + GitHub Actions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Implementei um fluxo completo de GitOps, no qual toda a infraestrutura passou a ser gerenciada exclusivamente por código versionado em Git.&lt;/p&gt;

&lt;p&gt;O resultado foi bastante expressivo.&lt;/p&gt;

&lt;p&gt;Hoje, consigo criar, modificar ou remover VMs simplesmente realizando um commit e um push. Em cerca de dois a três minutos, a alteração é automaticamente aplicada no ambiente Proxmox.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que aprendi no caminho&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nem tudo é simples, especialmente para quem está começando do zero.&lt;/p&gt;

&lt;p&gt;Como já possuo uma boa experiência com essas ferramentas, configurar corretamente as permissões no Proxmox, implementar um self-hosted runner na rede local, já que o Proxmox não é acessível diretamente da nuvem, e estruturar o código de forma escalável e reutilizável não foi algo particularmente difícil.&lt;/p&gt;

&lt;p&gt;Ainda assim, cada etapa se mostrou uma oportunidade de aprendizado e de refinamento dos processos relacionados a Infrastructure as Code, CI/CD e boas práticas de automação.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Observação: para quem nunca fez algo semelhante, deixei um passo a passo detalhado, além de uma FAQ, para facilitar a reprodução do ambiente.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Tecnologias utilizadas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A stack é 100% open source e gratuita. &lt;/p&gt;

&lt;p&gt;Utilizei Terraform para IaC, GitHub Actions para automação, Terraform Cloud para gerenciamento remoto de estado e Proxmox como hypervisor. Tudo isso rodando em um ambiente self-hosted, garantindo controle total sobre os dados e a infraestrutura.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O impacto real&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Antes: entre 15 e 20 minutos para criar cada VM, com um processo manual, sujeito a erros e sem histórico de alterações.&lt;/p&gt;

&lt;p&gt;Agora: cerca de 30 segundos para definir a VM em código, seguido de commit e push automáticos, com rastreabilidade completa via Git.&lt;/p&gt;

&lt;p&gt;Mais importante do que o tempo economizado foi o ganho em confiabilidade.&lt;/p&gt;

&lt;p&gt;Cada mudança passa por revisão, fica registrada no histórico do Git e pode ser revertida facilmente com um simples git revert. Isso é especialmente valioso em ambientes de experimentação, onde a possibilidade de voltar atrás com segurança faz toda a diferença.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lições aprendidas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Automação não é sobre eliminar o trabalho manual, mas sim reduzir tarefas repetitivas e propensas a erros.&lt;/p&gt;

&lt;p&gt;Infrastructure as Code não é exclusiva de grandes empresas. Homelabs são ambientes ideais para experimentação.&lt;/p&gt;

&lt;p&gt;Documentação é tão importante quanto o código. Dediquei tempo a documentar cada etapa pensando no meu “eu do futuro”.&lt;/p&gt;

&lt;p&gt;Self-hosted runners ampliam significativamente as possibilidades de automação em ambientes locais.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp19lnc9a36u6i7zvurl5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp19lnc9a36u6i7zvurl5.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Próximos passos / Melhorias&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Pretendo evoluir esse projeto integrando o Ansible, já que atualmente utilizo o &lt;a href="https://semaphoreui.com/" rel="noopener noreferrer"&gt;Semaphore UI&lt;/a&gt; para a configuração pós-criação das VMs, além de adicionar testes automatizados antes do deploy.&lt;/p&gt;

&lt;p&gt;Para quem se interessou pelos detalhes técnicos da implementação, e quiser fazer a implementação, o passo a passo, incluindo troubleshooting de todos os problemas enfrentados: &lt;a href="https://github.com/luiscruzcwb/homelab-infrastructure-template.git" rel="noopener noreferrer"&gt;homelab-infrastructure-template&lt;br&gt;
Public&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trabalhar com infraestrutura é uma jornada contínua de aprendizado.&lt;/p&gt;

&lt;p&gt;Compartilhar conhecimento e aprender com a comunidade faz toda a diferença.&lt;/p&gt;




</description>
      <category>devops</category>
      <category>gitops</category>
      <category>terraform</category>
      <category>proxmox</category>
    </item>
    <item>
      <title>Windows - Instalando o WSL e o Docker</title>
      <dc:creator>Luis Cruz</dc:creator>
      <pubDate>Wed, 10 Dec 2025 02:12:55 +0000</pubDate>
      <link>https://dev.to/luiscruzcwb/windows-instalando-o-wsl-e-o-docker-1bi2</link>
      <guid>https://dev.to/luiscruzcwb/windows-instalando-o-wsl-e-o-docker-1bi2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Pré-requisitos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows 11 ou Windows 10 com atualizações que suportem WSL 2. &lt;/li&gt;
&lt;li&gt;Virtualização por hardware habilitada na BIOS/UEFI.&lt;/li&gt;
&lt;li&gt;Conexão à internet para baixar distribuições, pacotes e imagens Docker.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Instalar o WSL (passo rápido)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No PowerShell em modo Administrador execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando habilitará os recursos necessários para executar o WSL e instalar a distribuição do Ubuntu do Linux. (&lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/basic-commands#install" rel="noopener noreferrer"&gt;Essa distribuição padrão pode ser alterada&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verificar versão e distros&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl -l -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Novas instalações feitas com &lt;strong&gt;wsl --install&lt;/strong&gt; são, por padrão, configuradas para &lt;strong&gt;WSL 2&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Para instruções oficiais e detalhes, consulte a &lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/install" rel="noopener noreferrer"&gt;documentação&lt;/a&gt; do WSL. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Opção com interface gráfica: Docker Desktop com integração WSL 2&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Baixe e instale o Docker &lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Desktop para Windows&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Em Settings &amp;gt; General ative Use the WSL 2 based engine.&lt;/li&gt;
&lt;li&gt;Em Resources &amp;gt; WSL Integration habilite a distro que você usa.&lt;/li&gt;
&lt;li&gt;Abra o terminal dentro do WSL: os comandos docker e docker compose estarão disponíveis.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Essa abordagem reduz conflitos e facilita para quem não tem familiaridade com CLI (interface de linha de comando). Para mais detalhes, acesse a &lt;a href="https://docs.docker.com/desktop/features/wsl" rel="noopener noreferrer"&gt;documentação&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternativa: instalar Docker Engine dentro do Ubuntu (WSL 2)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se não desejar usar Docker Desktop, siga dentro do Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y ca-certificates curl gnupg lsb-release
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y docker-ce docker-ce-cli containerd.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod -aG docker $USER
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois faça no PowerShell e reabra a distro:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wsl --shutdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Teste com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --rm hello-world
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Consulte o guia &lt;a href="https://docs.docker.com/engine/install/ubuntu/?utm_source" rel="noopener noreferrer"&gt;oficial&lt;/a&gt; de instalação do Docker Engine para Ubuntu.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &lt;a href="https://docs.docker.com/compose/install/linux/?utm_source" rel="noopener noreferrer"&gt;Docker Compose&lt;/a&gt; é distribuído como plugin (v2+). Em Linux instale docker-compose-plugin pelo repositório Docker ou siga a página oficial de instalação do Compose. Se usar Docker Desktop, o Compose já vem integrado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Exemplos práticos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rodar um Nginx simples:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run --name exemplo-nginx -p 8080:80 -d nginx:stable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Acesse no host: &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;docker-compose.yml mínimo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;services:
  web:
    image: nginx:stable
    ports:
      - "8080:80"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Subir:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose logs -f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Referências e links úteis&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Microsoft - &lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/install" rel="noopener noreferrer"&gt;Como instalar o WSL (pt-BR)&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Microsoft - &lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/wsl-config" rel="noopener noreferrer"&gt;WSL config (wsl.conf) / systemd&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Docker - &lt;a href="https://docs.docker.com/desktop/features/wsl/" rel="noopener noreferrer"&gt;Docker Desktop: WSL 2 backend / integração&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Docker - &lt;a href="https://docs.docker.com/engine/install/ubuntu/" rel="noopener noreferrer"&gt;Instalar Docker Engine no Ubuntu&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Docker - &lt;a href="https://docs.docker.com/compose/install/linux/" rel="noopener noreferrer"&gt;Instalar o plugin Docker Compose&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Docker - &lt;a href="https://docs.docker.com/compose/" rel="noopener noreferrer"&gt;Documentação geral do Compose&lt;/a&gt; &lt;/p&gt;

</description>
      <category>linux</category>
      <category>microsoft</category>
      <category>docker</category>
    </item>
    <item>
      <title>O que é GEMBA?</title>
      <dc:creator>Luis Cruz</dc:creator>
      <pubDate>Fri, 24 Oct 2025 19:13:53 +0000</pubDate>
      <link>https://dev.to/luiscruzcwb/o-que-e-gemba-211d</link>
      <guid>https://dev.to/luiscruzcwb/o-que-e-gemba-211d</guid>
      <description>&lt;p&gt;Gemba (現場) é um termo de origem japonesa que significa, literalmente, “&lt;strong&gt;o lugar real&lt;/strong&gt;” ou “o local onde as coisas acontecem”. &lt;/p&gt;

&lt;p&gt;No contexto empresarial, especialmente em Lean Manufacturing, Lean Management e Kaizen, Gemba refere-se ao local onde o valor é criado — por exemplo:&lt;/p&gt;

&lt;p&gt;Em uma fábrica, é o chão de produção.&lt;br&gt;
Em uma empresa de software, é onde os desenvolvedores codificam.&lt;br&gt;
Em uma loja de varejo, é o piso de atendimento ao cliente.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O Lean (também conhecido como Lean Thinking ou Mentalidade Enxuta) é uma filosofia de gestão originada no sistema de produção da Toyota (Toyota Production System - TPS), cujo objetivo central é maximizar valor para o cliente eliminando desperdícios nos processos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conceito de “Gemba” no Lean
&lt;/h2&gt;

&lt;p&gt;A filosofia do Gemba incentiva líderes, gestores e profissionais a irem até o local real, para:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Observar diretamente os processos.&lt;/li&gt;
&lt;li&gt;Identificar problemas reais, não apenas dados em relatórios.&lt;/li&gt;
&lt;li&gt;Ouvir os colaboradores que estão na linha de frente.&lt;/li&gt;
&lt;li&gt;Tomar decisões baseadas em fatos, e não em suposições.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Gemba Walk
&lt;/h2&gt;

&lt;p&gt;Um conceito associado é o Gemba Walk (“Caminhada no Gemba”), que consiste em visitas regulares ao local onde o trabalho acontece, com o objetivo de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entender o fluxo de trabalho;&lt;/li&gt;
&lt;li&gt;Detectar desperdícios ou ineficiências;&lt;/li&gt;
&lt;li&gt;Promover a melhoria contínua (Kaizen);&lt;/li&gt;
&lt;li&gt;Fortalecer o relacionamento entre gestão e operação.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Importante: o Gemba Walk não é uma auditoria ou fiscalização, mas sim uma oportunidade de aprendizado e colaboração.&lt;/p&gt;

&lt;h2&gt;
  
  
  Princípios de uma boa prática de Gemba
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ir ao Gemba – Visite o local real com frequência.&lt;/li&gt;
&lt;li&gt;Observar com propósito – Veja como o trabalho realmente é feito.&lt;/li&gt;
&lt;li&gt;Fazer perguntas – Entenda os “porquês” por trás dos processos.&lt;/li&gt;
&lt;li&gt;Ouvir os colaboradores – Eles conhecem os desafios diários.&lt;/li&gt;
&lt;li&gt;Agir com respeito – A ideia é aprender, não julgar.&lt;/li&gt;
&lt;li&gt;Promover melhorias – Use os insights para implementar melhorias sustentáveis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Benefícios do Gemba
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Aumento da eficiência operacional.&lt;/li&gt;
&lt;li&gt;Redução de desperdícios.&lt;/li&gt;
&lt;li&gt;Maior engajamento da equipe.&lt;/li&gt;
&lt;li&gt;Tomada de decisão mais assertiva e baseada em fatos.&lt;/li&gt;
&lt;li&gt;Fomento à cultura de melhoria contínua.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ok, mas como aplicar GEMBA e LEAN hoje com o trabalho remoto e equipes espalhadas em diversos lugares?
&lt;/h2&gt;

&lt;p&gt;Aplicar os princípios de Gemba e Lean em um cenário de trabalho remoto ou distribuído é totalmente possível, mas exige adaptação. A essência continua sendo ir até onde o valor é criado, observar, ouvir e eliminar desperdícios, mesmo que esse "lugar real" agora esteja no ambiente digital.&lt;/p&gt;

&lt;h2&gt;
  
  
  Redefinindo o “Gemba” no remoto
&lt;/h2&gt;

&lt;p&gt;No ambiente remoto, o Gemba deixa de ser físico e passa a ser o espaço digital onde o trabalho ocorre, como:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Repositórios de código (GitHub, GitLab)&lt;/li&gt;
&lt;li&gt;Sistemas de tickets (Jira, ServiceNow, etc.)&lt;/li&gt;
&lt;li&gt;Dashboards de observabilidade e monitoramento&lt;/li&gt;
&lt;li&gt;Ferramentas de colaboração (Slack, Teams, Confluence)&lt;/li&gt;
&lt;li&gt;Sistemas de CI/CD, nuvem e infraestrutura&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Fazendo Gemba Walks digitais
&lt;/h2&gt;

&lt;p&gt;Adapte a prática da Gemba Walk para o remoto com:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ação&lt;/th&gt;
&lt;th&gt;Como adaptar&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Observar o trabalho em tempo real&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Compartilhamento de tela, gravações de sessões, revisões de código, dashboards&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fazer perguntas abertas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sessões de check-in por vídeo ou chat com times operacionais&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Identificar desperdícios&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Análise de fluxos digitais: tempo de espera em tickets, rework, incidentes repetitivos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Documentar aprendizados&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Criar logs de Gemba Walks no Confluence/Notion/Trello&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Ferramenta útil:&lt;/em&gt;&lt;/strong&gt; Use gravações de sessões (ex: Loom, Zoom) como apoio visual e técnico para revisitar o Gemba digitalmente.&lt;/p&gt;

&lt;h2&gt;
  
  
  Aplicando princípios Lean no remoto
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Mapeie o fluxo de valor digital (Value Stream Mapping)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Entenda todas as etapas entre a demanda do cliente e a entrega&lt;/li&gt;
&lt;li&gt;Ex: Solicitação de infraestrutura → Provisão com Terraform → Validação → Deploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Identifique desperdícios remotos&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Espera por aprovações&lt;/li&gt;
&lt;li&gt;Retrabalho por falta de definição&lt;/li&gt;
&lt;li&gt;Sobrecarga por excesso de reuniões&lt;/li&gt;
&lt;li&gt;Falta de visibilidade de progresso&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Estimule o Kaizen remoto&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faça retrospectivas Lean (curtas e frequentes)&lt;/li&gt;
&lt;li&gt;Capture ideias de melhoria via mural colaborativo (ex: Miro, Jamboard, FigJam)&lt;/li&gt;
&lt;li&gt;Implemente pequenas melhorias rápidas e meça resultados&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ferramentas digitais para suportar Lean + Gemba
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Categoria&lt;/th&gt;
&lt;th&gt;Ferramentas&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gestão visual (Kanban)&lt;/td&gt;
&lt;td&gt;Trello, Jira, Asana&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automação e fluxo&lt;/td&gt;
&lt;td&gt;GitHub Actions, GitLab CI/CD, Jenkins&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observabilidade&lt;/td&gt;
&lt;td&gt;Grafana, Prometheus, New Relic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Colaboração&lt;/td&gt;
&lt;td&gt;Slack, Zoom, Teams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documentação de Gemba Walks&lt;/td&gt;
&lt;td&gt;Confluence, Notion&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Engajamento e Cultura Remota
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Crie rituais de escuta ativa com o time técnico&lt;/li&gt;
&lt;li&gt;Promova a cultura do “ir ver, não apenas supor”&lt;/li&gt;
&lt;li&gt;Incentive todos a trazer insights do Gemba digital para os encontros&lt;/li&gt;
&lt;li&gt;Pratique o respeito e empatia, peça feedback sem julgamento.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exemplo prático: Gemba + Lean em uma equipe de DevOps remota
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problema&lt;/th&gt;
&lt;th&gt;Gemba Walk digital&lt;/th&gt;
&lt;th&gt;Ação Lean&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Demora no provisionamento de VMs&lt;/td&gt;
&lt;td&gt;Acompanhar fluxo no Terraform/GitLab&lt;/td&gt;
&lt;td&gt;Automatizar aprovações&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incidentes frequentes em uma aplicação&lt;/td&gt;
&lt;td&gt;Analisar logs no Grafana e entrevistas com Devs&lt;/td&gt;
&lt;td&gt;Adotar testes de caos ou revisão de deploy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Falta de clareza no backlog&lt;/td&gt;
&lt;td&gt;Visitar o Jira com a equipe&lt;/td&gt;
&lt;td&gt;Aplicar Kanban + Definition of Ready&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Fontes e Recomendações
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemba e Lean em inglês:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kaizen.com/insights/gemba-meaning-lean-management/" rel="noopener noreferrer"&gt;Gemba and Its Meaning – The Heart of Lean Management (Kaizen Institute)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.manufacturing.net/home/article/13193437/the-principles-of-lean-manufacturing" rel="noopener noreferrer"&gt;The Principles of Lean Manufacturing (Manufacturing.net)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.processexcellencenetwork.com/lean-six-sigma-business-performance/articles/what-is-lean" rel="noopener noreferrer"&gt;What is Lean? (Process Excellence Network)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://leanconstruction.org/lean-topics/gemba-walk/" rel="noopener noreferrer"&gt;Gemba Walks in Lean Construction (LeanConstruction.org)&lt;/a&gt;
&lt;a href="https://journals.sagepub.com/doi/full/10.1177/21582440221088837" rel="noopener noreferrer"&gt;- The Influence of Lean Practices on Process Performance (SAGE Journals)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gemba e Lean em português:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://voitto.com.br/blog/artigo/o-que-e-gemba" rel="noopener noreferrer"&gt;Gemba: entenda o conceito que faz parte do Lean (Voitto)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.sydle.com/br/blog/lean-ti-67af8898b8b3a814481aa733" rel="noopener noreferrer"&gt;Lean TI: como otimizar processos de TI (Sydle)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.manageengine.com/br/blog/general/metodologia-lean-entenda-seus-principios-e-aplicacoes-dentro-da-ti.html" rel="noopener noreferrer"&gt;Metodologia Lean aplicada à TI (ManageEngine Brasil)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Curtiu a ideia de aplicar Lean + Gemba no remoto?&lt;/p&gt;

</description>
      <category>devops</category>
      <category>lean</category>
    </item>
    <item>
      <title>Instalando o Terraform</title>
      <dc:creator>Luis Cruz</dc:creator>
      <pubDate>Tue, 27 Feb 2024 00:34:15 +0000</pubDate>
      <link>https://dev.to/luiscruzcwb/instalando-o-terraform-no-debian-12-bookworm-2edl</link>
      <guid>https://dev.to/luiscruzcwb/instalando-o-terraform-no-debian-12-bookworm-2edl</guid>
      <description>&lt;p&gt;O Terraform é uma ferramenta de infraestrutura como código (IaC) desenvolvida pela HashiCorp. Ele permite descrever, provisionar e gerenciar recursos de infraestrutura de forma declarativa e versionada, facilitando automação, padronização e colaboração entre times de desenvolvimento e operações. Nesta série de artigos iremos demonstrar usos em ambientes cloud e on-premise; este primeiro post descreve a instalação do Terraform em Debian 12 "bookworm" e um exemplo prático usando o provider Docker para subir um contêiner NGINX.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Observação de segurança: siga as etapas de verificação da chave GPG e compare fingerprints com as fontes oficiais antes de confiar em repositórios externos. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Para mais informações, ou dúvidas consulte a &lt;a href="https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli" rel="noopener noreferrer"&gt;documentação oficial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pré-requisitos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Execute os comandos abaixo para garantir que pacotes essenciais estejam instalados:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y gnupg ca-certificates lsb-release wget curl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;gnupg e ca-certificates são necessários para verificar assinaturas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;lsb-release fornece o codinome da distribuição de forma robusta.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Instalação da chave GPG e adição do repositório oficial HashiCorp&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Baixe e grave a chave em um keyring dedicado com o formato correto:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este método grava a chave no formato esperado pelo APT.&lt;/p&gt;

&lt;p&gt;Obtenha o codinome da release e a arquitetura de forma segura e adicione o repositório:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CODENAME=$(lsb_release -cs 2&amp;gt;/dev/null || grep -oP '(?&amp;lt;=VERSION_CODENAME=).*' /etc/os-release)
ARCH=$(dpkg --print-architecture)
echo "deb [arch=${ARCH} signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com ${CODENAME} main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse procedimento usa lsb_release como principal fonte e faz um fallback quando necessário.&lt;/p&gt;

&lt;p&gt;Atualize o cache APT:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Instalação do Terraform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Após adicionar o repositório HashiCorp:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y terraform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifique a versão instalada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform -version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se preferir uma versão específica, considere baixar o binário oficial ou usar o repositório de releases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verificação da impressão digital da chave (fingerprint)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Confirme a impressão digital do keyring recém-criado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gpg --no-default-keyring --keyring /usr/share/keyrings/hashicorp-archive-keyring.gpg --fingerprint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compare o valor retornado com o fingerprint publicado pela HashiCorp nas páginas oficiais de empacotamento / repositório antes de prosseguir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exemplo prático: Terraform + Docker + NGINX&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pré-requisitos do exemplo&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker instalado e funcionando no host.&lt;/li&gt;
&lt;li&gt;Usuário com permissão para acessar o socket do Docker (ex.: membro do grupo docker) ou configuração de host remoto.&lt;/li&gt;
&lt;li&gt;Observe que o provider Docker do Terraform comunica-se com o daemon Docker via socket unix ou TCP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Estrutura do projeto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Crie o diretório de trabalho e o arquivo 'main.tf':&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p ~/learn-terraform-docker-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ~/learn-terraform-docker-container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Arquivo main.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nano/vim main.tf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform {
  required_version = "&amp;gt;= 1.5.0"
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~&amp;gt; 3.6.0"   # ajuste conforme versão estável disponível no Registry
    }
  }
}

provider "docker" {
  host = "unix:///var/run/docker.sock"
}

resource "docker_image" "nginx" {
  name         = "nginx:latest"
  keep_locally = false
}

resource "docker_container" "nginx" {
  image = docker_image.nginx.image_id
  name  = "tutorial-nginx"

  ports {
    internal = 80
    external = 8000
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Inicializar e aplicar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Siga a sequência recomendada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform fmt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform validate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform plan -out=tfplan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply tfplan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;confirme digitando "yes" quando solicitado.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;terraform init baixa providers e cria o arquivo terraform.lock.hcl. Recomenda-se commitar esse lockfile para reprodutibilidade em equipe e CI.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Verificação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Acesse &lt;a href="http://localhost:8000" rel="noopener noreferrer"&gt;http://localhost:8000&lt;/a&gt; no navegador para verificar o NGINX (ou use curl).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa748kg826rh2xg9sk8vh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa748kg826rh2xg9sk8vh.png" alt="nginx_localhost" width="800" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Liste containers Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps -a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Destruir recursos&lt;/p&gt;

&lt;p&gt;Para remover o contêiner:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;terraform destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;confirme com "yes" quando solicitado.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Em scripts automatizados, -auto-approve pode ser usado com cautela.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Fluxo recomendado e comandos úteis&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform init&lt;/strong&gt; - preparar o diretório e baixar providers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform fmt&lt;/strong&gt; - formata o HCL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform validate&lt;/strong&gt; - valida a sintaxe e configurações.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform plan&lt;/strong&gt; - mostra mudanças previstas; grave o plano em CI com -out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform apply&lt;/strong&gt; - aplica mudanças.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;terraform destroy&lt;/strong&gt; - destrói recursos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Boas práticas de versionamento, segurança e CI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Trave versões: use required_version e version nos required_providers. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit do terraform.lock.hcl para reprodutibilidade.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Evite inserir segredos em arquivos .tf. Use variáveis, Vault, ou mecanismos seguros de CI para secrets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em pipelines CI, evite -auto-approve em ambientes de produção sem controles adicionais.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Audite fingerprints de chaves GPG ao adicionar repositórios.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Referências&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hashicorp.com/en/official-packaging-guide" rel="noopener noreferrer"&gt;Guia oficial&lt;/a&gt; de empacotamento e instalação HashiCorp (instruções apt, GPG).&lt;br&gt;
&lt;a href="https://developer.hashicorp.com/terraform/install" rel="noopener noreferrer"&gt;Documentação &lt;/a&gt;de instalação do Terraform (Downloads e instruções).&lt;br&gt;
&lt;a href="https://developer.hashicorp.com/terraform/tutorials/docker-get-started/docker-build" rel="noopener noreferrer"&gt;Tutorial &lt;/a&gt;oficial Terraform com Docker - exemplos de provider.&lt;br&gt;
&lt;a href="https://registry.terraform.io/providers/kreuzwerker/docker/latest" rel="noopener noreferrer"&gt;Registry Terraform&lt;/a&gt; - provider kreuzwerker/docker (verificar versão mais recente). &lt;br&gt;
&lt;a href="https://github.com/kreuzwerker/terraform-provider-docker" rel="noopener noreferrer"&gt;Repositório &lt;/a&gt;GitHub do provider Docker (código, releases e changelog).&lt;/p&gt;




</description>
      <category>terraform</category>
      <category>docker</category>
      <category>linux</category>
      <category>infrastructureascode</category>
    </item>
    <item>
      <title>Monitoramento Eficiente do Windows com Prometheus e Windows Exporter</title>
      <dc:creator>Luis Cruz</dc:creator>
      <pubDate>Tue, 11 Jul 2023 01:25:41 +0000</pubDate>
      <link>https://dev.to/luiscruzcwb/monitorando-os-windows-com-o-prometheus-e-windows-exporter-b5m</link>
      <guid>https://dev.to/luiscruzcwb/monitorando-os-windows-com-o-prometheus-e-windows-exporter-b5m</guid>
      <description>&lt;p&gt;O monitoramento de sistemas Windows com o Prometheus permite coletar métricas e dados do sistema operacional de forma eficiente e rápida. Com o Prometheus, é possível acompanhar o desempenho, identificar problemas e tomar medidas proativas para garantir a estabilidade e a segurança dos servidores Windows.&lt;/p&gt;

&lt;p&gt;O monitoramento contínuo proporciona uma visão detalhada do ambiente, permitindo uma rápida detecção e solução de problemas, além de otimizar o desempenho geral do sistema.&lt;/p&gt;

&lt;p&gt;No artigo, são explicados os passos para instalar o Prometheus e configurar o Windows Exporter para a coleta de métricas.&lt;/p&gt;

&lt;h4&gt;
  
  
  Clone o repositório:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;git clone https://github.com/luiscruzcwb/prometheus-windows-exporter
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Navegue até a pasta &lt;em&gt;&lt;strong&gt;prometheus-windows-exporter&lt;/strong&gt;&lt;/em&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;cd /prometheus-windows-exporter
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configurando o Host
&lt;/h2&gt;

&lt;p&gt;Navegue até a pasta &lt;em&gt;&lt;strong&gt;prometheus&lt;/strong&gt;&lt;/em&gt; e edite o arquivo &lt;em&gt;&lt;strong&gt;prometheus.yml&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O arquivo &lt;code&gt;prometheus.yml&lt;/code&gt; é o arquivo de configuração principal do Prometheus, sendo usado para definir as configurações relacionadas ao comportamento do Prometheus, como os alvos de coleta de dados, regras de gravação e alertas. &lt;/p&gt;

&lt;p&gt;Tome muito cuidado com a indentação (ou endentação) do arquivo &lt;em&gt;&lt;strong&gt;prometheus.yml&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Inclua na sessão &lt;strong&gt;&lt;em&gt;## Hosts OS Windows / Windows Servers&lt;/em&gt;&lt;/strong&gt; os seus Hosts de coleta, como exemplo abaixo: &lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - job_name: 'hostname'
    scrape_interval: 10s
    static_configs:
      - targets: ['IP-Host:9182']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Recomendo criar uma entrada para cada Host, caso contrario, basta separa os hosts dessa forma: ['IP-Host1:9182'],['IP-Host2:9182']&lt;/p&gt;

&lt;h2&gt;
  
  
  Host - Downloading Windows Exporter
&lt;/h2&gt;

&lt;p&gt;Para baixar o Prometheus Windows Exporter, acesse a página do &lt;a href="https://github.com/prometheus-community/windows_exporter" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; da comunidade.&lt;/p&gt;

&lt;p&gt;Faça o download da versão mais recente (v0.22.0) do Windows Exporter na seção "Releases".&lt;/p&gt;

&lt;p&gt;Se estiver usando uma &lt;strong&gt;versão de 32 bits&lt;/strong&gt; do sistema operacional Windows, clique no link &lt;strong&gt;&lt;em&gt;windows_exporter-*-386.msi.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Se estiver usando uma &lt;strong&gt;versão de 64 bits&lt;/strong&gt; do sistema operacional Windows, clique no link &lt;strong&gt;&lt;em&gt;windows_exporter-*-amd64.msi.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Host - Instalando Windows Exporter
&lt;/h2&gt;

&lt;p&gt;O Prometheus Windows Exporter possui vários coletores, cada um responsável por exportar informações específicas. Alguns coletores estarão desativados por padrão, para obter uma lista dos coletores compatíveis, ativos e desativados, visite a seção "Collectors" na página do &lt;a href="https://github.com/prometheus-community/windows_exporter" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Após o download, em seu Windows OS, navegue via terminal como administrador até a pasta que se encontra o arquivo, e execute o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;msiexec /i ./windows_exporter-0.22.0-amd64.msi
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O Windows Exporter estará em execução na porta 9182 do seu computador com Windows, para verificar abra o navegador e acesse o endereço: &lt;a href="http://localhost:9182/metrics" rel="noopener noreferrer"&gt;http://localhost:9182/metrics&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Se você visualizar a saída abaixo, significa que o Windows Exporter está em funcionamento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffe38rp9464cmi1mvm5zw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffe38rp9464cmi1mvm5zw.png" alt="windows_exporter" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Subindo o ambiente e Visualizando os dados no Grafana
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Execute o arquivo &lt;strong&gt;&lt;em&gt;docker-compose&lt;/em&gt;&lt;/strong&gt;.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;docker-compose up -d
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Em seu navegador, acesse o endereço: &lt;a href="http://localhost:3000/" rel="noopener noreferrer"&gt;http://localhost:3000/&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Usuário: Admin
Senha: grafana 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;Esses dados de acesso podem ser alterados nas configurações do Grafana, alterando o arquivo &lt;strong&gt;config.monitoring&lt;/strong&gt; em &lt;strong&gt;/grafana/config.monitoring&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No menu Dashboard, acessando o gráfico &lt;strong&gt;&lt;em&gt;Windows exporter for Prometheus&lt;/em&gt;&lt;/strong&gt;, os seus dados já estarão sendo apresentados. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4st2bjk9un7peji4dd0o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4st2bjk9un7peji4dd0o.png" alt="grafana_dashboard" width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Para mais informações acesse:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://grafana.com/docs/grafana/latest/administration/provisioning/" rel="noopener noreferrer"&gt;https://grafana.com/docs/grafana/latest/administration/provisioning/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://samber.github.io/awesome-prometheus-alerts/rules#windows-server" rel="noopener noreferrer"&gt;https://samber.github.io/awesome-prometheus-alerts/rules#windows-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docker-curriculum.com/" rel="noopener noreferrer"&gt;https://docker-curriculum.com/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prometheus.io/docs/introduction/overview/" rel="noopener noreferrer"&gt;https://prometheus.io/docs/introduction/overview/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dnanexus/docker-promtool/tree/master" rel="noopener noreferrer"&gt;https://github.com/dnanexus/docker-promtool/tree/master&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  See you later 🤘🏻
&lt;/h4&gt;

</description>
      <category>devops</category>
      <category>docker</category>
      <category>tutorial</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
