Firstlume Docs firstlume.io PTEN EN Fale com a gente

Seu primeiro run

Este é o fluxo pela API num Firstlume já instalado: uma pasta, variáveis herdadas, um stack e um apply que você revisa e aprova. Tudo aqui também pode ser feito pela UI.

O que você precisa

Um repositório Git com uma pasta que tenha .firstlume/config.yaml. O Firstlume roda o código a partir dessa pasta:

examples/hello/
├── .firstlume/config.yaml
└── main.tf
# .firstlume/config.yaml
version: 1
engine: terraform
engine_version: 1.15.6
# main.tf
terraform {
  backend "http" {}
}

variable "greeting" {
  type    = string
  default = "hello"
}

resource "terraform_data" "hello" {
  input = var.greeting
}

O bloco vazio backend "http" é obrigatório: é ele que deixa o state no Firstlume. Veja Backend de state.

Prepare o terminal

Pegue o token admin no Secret da release. A organização default é criada na subida, e o agent instalado pelo chart pertence a ela.

export FIRSTLUME_ADMIN_TOKEN=$(kubectl -n firstlume get secret firstlume-control-plane \
  -o jsonpath='{.data.admin-token}' | base64 -d)
H="Authorization: Bearer $FIRSTLUME_ADMIN_TOKEN"
O=https://firstlume.example.com/api/v1/orgs/default

1. Crie uma pasta

Pastas são opcionais: stacks também podem ficar na raiz da organização.

F=$(curl -s -H "$H" $O/folders -d '{"name": "infra"}' | jq -r .id)

2. Defina variáveis e segredos

Os stacks abaixo dessa pasta herdam tudo.

curl -s -X PUT -H "$H" $O/folders/$F/settings -d '{
  "require_approval": true,
  "variables": [
    {"key": "greeting", "category": "terraform", "value": "olá"},
    {"key": "AWS_SECRET_ACCESS_KEY", "category": "env", "sensitive": true, "value": "..."}
  ]
}'

Variáveis terraform viram TF_VAR_greeting. Variáveis env viram variáveis de ambiente. Valores sensíveis são cifrados, mascarados nos logs e nunca são devolvidos pela API.

3. Crie o stack

path é a pasta do repositório que contém .firstlume/config.yaml.

ST=$(curl -s -H "$H" $O/stacks -d "{
  \"folder_id\": \"$F\", \"name\": \"hello\",
  \"repository\": \"https://github.com/sua-org/infra.git\", \"path\": \"examples/hello\"
}" | jq -r .id)

Para um repositório privado, mande também git_token. Com uma conexão Git, você escolhe os repositórios da conta em vez de digitar URLs.

4. Dispare um apply e acompanhe os logs

Os logs chegam ao vivo, por SSE. O stream termina quando o run para na aprovação.

RUN=$(curl -s -H "$H" $O/stacks/$ST/runs -d '{"type": "apply"}' | jq -r .id)
curl -N -H "$H" "$O/runs/$RUN/logs?follow=true"

5. Revise e aprove

Veja o que muda, recurso por recurso, e aprove:

curl -s -H "$H" $O/runs/$RUN/changes | jq .
curl -s -X POST -H "$H" $O/runs/$RUN/approve -d '{"acknowledged": []}'

acknowledged lista os endereços que você confirma quando o stack exige confirmar cada exclusão ou recriação. Aqui fica vazio.

O apply roda então num novo Job e grava a primeira versão do state. Um novo plan não mostra mudanças.

Na UI

Abra https://firstlume.example.com e escolha "Usar token admin". A pasta e o stack estão na árvore, e a página do run mostra os passos, as mudanças e os logs.

Próximos passos