Pulumi é uma ferramenta de infraestrutura como código open source que une o melhor do gerenciamento de infraestrutura de forma declarativa com as principais linguagens de programação de mercado, como Python, Node, .NET, entre outras. Essa ferramenta suporta diversos tipos de nuvens, infraestrutura nativa de nuvem, fornecedores de SaaS como Datadog ou TravisCI , e até mesmo nuvens privadas e híbridas.
Cuidados Iniciais!
Como funciona o Pulumi?
Como fica a estrutura de um projeto Pulumi ?
Dentro de um projeto, o Pulumi se divide em Projeto e Stack. O projeto é a pasta onde você armazenará todas as configurações que você irá implementar em conjunto com o arquivo Pulumi.yaml. Esse arquivo é responsável por representar as informações básicas do projeto e em qual linguagem iremos trabalhar
name: my-project
runtime:
name: nodejs
options:
typescript: false
Outro ponto interessante é que o Pulumi tem nativamente o controle de Projetos e “ambientes” que chamamos de Stack. Diferentemente do Terraform, que é necessário o uso do Terragrunt para gerenciar complexidades de ambientes, o Pulumi vem com a solução nativa. Esses ambientes são chamados de “stack” e isolam completamente a sua execução para diferentes ambientes.
Comandos básicos para usar o Pulumi
Os comandos básicos que você utilizará no dia a dia serão os seguintes:
- pulumi new: Cria um novo projeto pulumi
- pulumi stack: Administra as stacks
- pulumi config: Configuração de variáveis e chaves e qualquer outro atributo nesse sentido.
- pulumi up: Faz o deploy das configurações solicitadas
- pulumi preview: Apresenta o que será publicado antes de ser aplicado
- pulumi destroy: Destrói toda infra estrutura solicitada
Para aprofundar na lista de comandos do Pulumi, acesse a lista de comandos oficiais: https://www.pulumi.com/docs/cli/
Bora testar na prática?
Todo exemplo utilizado está localizado aqui. Nele vamos criar uma instância de Cloud Run na GCP apontando para uma imagem Docker previamente publicada.
Primeiro, ao executar o comando pulumi new, nosso terminal irá apresentar alguns questionamentos sobre nome do projeto, descrição e o nome da stack que usaremos para criar esse recurso dentro do projeto.
No final da execução, teremos a estrutura de pastas seguindo essa lógica.No arquivo index.js, colocamos todo o código responsável por executar a criação de uma cloud-run.
const pulumi = require("@pulumi/pulumi");
const gcp = require("@pulumi/gcp");
const _default = new gcp.cloudrun.Service("default", {
name: "cloudrun-srv",
location: "us-central1",
template: {
spec: {
containers: [{
image: "gcr.io/toolbox-sandbox-388523/flask-app:latest",
}],
},
},
});
const noauth = gcp.organizations.getIAMPolicy({
bindings: [{
role: "roles/run.invoker",
members: ["allUsers"],
}],
});
const noauthIamPolicy = new gcp.cloudrun.IamPolicy("noauth", {
location: _default.location,
project: _default.project,
service: _default.name,
policyData: noauth.then(noauth => noauth.policyData),
});
// Export the status of the created Cloud Run service
exports.grun = _default.status;
E pronto! Nossa API está criada!
Se executarmos uma requisição HTTP, veremos o resultado:
Acelere a sua carreira
A Mentoria DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps.
Clique aqui para entrar na prioridade pela melhor oferta de lançamento
Conclusão
Pulumi pode se tornar uma ótima opção para desenvolvedores e testadores de software se aventurarem, essa ferramenta tenta abstrair as dificuldades do mundo Ops com o atrativo de usar sua linguagem de programação preferida, além de uma comunidade ativa e um repositório de códigos prontos para você praticar.