ANÚNCIO

~/questoes/devops

Como o Pulumi organiza ambientes diferentes como desenvolvimento, staging e produção?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Deploy de aplicações Node.js na AWS com IaC e Pulumi
Para fixar

Organizando Ambientes com Stacks no Pulumi

Conceito central

Pulumi usa stacks para separar e gerenciar ambientes diferentes (desenvolvimento, staging, produção) de forma automática e versionada. Cada stack tem sua própria configuração, recursos e estado, permitindo que ambientes coexistam sem interferência e com customizações específicas.

Por que essa resposta faz sentido

Stacks no Pulumi são abstrações que representam ambientes isolados. Cada stack mantém seu próprio conjunto de recursos, configurações e valores, permitindo que você execute o mesmo código Pulumi em múltiplos ambientes com comportamentos e custos diferentes sem modificações manuais ou duplicação de código.

Armadilhas comuns

  • Confundir stacks com branches do Git — stacks são abstrações Pulumi que coexistem no mesmo repositório, não branches separados
  • Achar que precisa duplicar todo o código para cada ambiente — o mesmo código Pulumi roda em múltiplos stacks com configurações diferentes
  • Tentar gerenciar ambientes por folders ou pastas — isso quebra o princípio DRY (Don't Repeat Yourself) que Pulumi garante com stacks

Entenda as alternativas

A

Máquinas virtuais diferentes sem automação é a abordagem manual e obsoleta. Pulumi elimina justamente esse trabalho repetitivo automatizando a provisão de recursos através de código versionado.

B

Modificar arquivos manualmente no servidor é propenso a erros, difícil de rastrear e não segue os princípios de IaC. Pulumi padroniza e automatiza essas mudanças através de código e stacks.

C

Stacks são o mecanismo correto. Cada stack (dev, staging, prod) é uma instância independente do seu código Pulumi com suas próprias configurações, permitindo recursos customizados por ambiente sem duplicação.

D

Separar em folders do GitHub e copiar manualmente é impraticável, não deixa auditoria clara e introduz inconsistências. Stacks Pulumi fazem isso automaticamente através de código.

Dica prática: Para criar um novo stack, use `pulumi stack init ` (ex: `pulumi stack init produção`). Depois configure valores específicos com `pulumi config set chave valor` em cada stack. O mesmo código `pulumi up` faz deploy diferente dependendo do stack ativo.

Revise pensando: Se você tem um código Pulumi que cria um servidor EC2, como faria para que desenvolvimento use uma instância t2.micro e produção use t2.large sem duplicar o código?