Variaveis de ambiente do `tatuzim-agent`

Variaveis lidas no inicio de cada comando. Em systemd vem de /etc/tatuzim-agent/env.

Conexao com o server

`TATUZIM_SERVER_URL` (obrigatorio)

URL HTTPS do enroll endpoint do server.

TATUZIM_SERVER_URL=https://tatuzim.dev.borlot.com.br

`TATUZIM_SERVER_MTLS_URL` (obrigatorio pra run, rotate)

URL HTTPS do mTLS endpoint do server (porta 8443).

TATUZIM_SERVER_MTLS_URL=https://tatuzim.dev.borlot.com.br:8443

`TATUZIM_SERVER_CA_PATH` (recomendado)

Caminho do root CA do step-ca pra trust do server. Sem isso, fallback pra identity/ca.pem (intermediate apenas — funciona mas confianca menor).

TATUZIM_SERVER_CA_PATH=/etc/tatuzim-agent/stepca-root.pem

Identidade do agent

`TATUZIM_AGENT_HOSTNAME` (obrigatorio em enroll)

Hostname logico do agent. Deve bater com o hostname do enrollment token.

  • Default: hostname retornado pelo SO (hostname command)
  • Obrigatorio explicito em enroll pra evitar surpresas
TATUZIM_AGENT_HOSTNAME=vps-mautic-01

`TATUZIM_AGENT_ROLE` (obrigatorio em enroll)

Role logico do agent. Deve bater com o role do enrollment token.

TATUZIM_AGENT_ROLE=mautic

`TATUZIM_ENROLL_TOKEN` (obrigatorio em enroll, transitorio)

Token plaintext recebido do admin (single-use).

TATUZIM_ENROLL_TOKEN=EXEMPLO_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Apos enroll bem-sucedido, remova esta variavel do env. O agent nao precisa mais dela.

Diretorios

`TATUZIM_AGENT_DATA_DIR`

Diretorio principal de dados.

  • Default: /var/lib/tatuzim-agent
  • Owner: tatuzim:tatuzim (criado pelo .deb postinst)
  • Perm: 0750

`TATUZIM_AGENT_OUT_DIR`

Onde escrever artefatos das cargas (cert, key, etc.).

  • Default: $DATA_DIR/out
  • Exemplo: /var/lib/tatuzim-agent/out/traefik-cert.crt
TATUZIM_AGENT_OUT_DIR=/etc/traefik/certs   # entregar direto onde Traefik le

`TATUZIM_AGENT_STATE_DIR`

Estado interno (idempotencia).

  • Default: $DATA_DIR/state
  • Conteudo: processed.json com lista de entrega_ids ja processadas

`TATUZIM_AGENT_HOOK_DIR`

Diretorio dos hooks executaveis.

  • Default: $DATA_DIR/hooks
  • Arquivos: post-csr-cert, post-selado (futuro), etc.
TATUZIM_AGENT_HOOK_DIR=/etc/tatuzim-agent/hooks

Loop run

`TATUZIM_AGENT_POLL_INTERVAL`

Intervalo de poll do manifest. Formato humantime.

  • Default: 30s
  • Range razoavel: 10s a 5m
TATUZIM_AGENT_POLL_INTERVAL=30s
TATUZIM_AGENT_POLL_INTERVAL=2m

Trade-off:

  • Curto = latencia menor pra novas cargas + mais trafego
  • Longo = menos carga + maior delay

`TATUZIM_AGENT_RENEWAL_THRESHOLD`

Renovar cert quando faltar menos que isso ate expirar.

  • Default: 6h
  • Recomendado: 1/4 do lifetime do cert (ex: cert 24h → threshold 6h)
TATUZIM_AGENT_RENEWAL_THRESHOLD=6h
TATUZIM_AGENT_RENEWAL_THRESHOLD=2h

Logs

`RUST_LOG`

Filtro de logs.

RUST_LOG=info                                 # default
RUST_LOG=debug                                # tudo em debug
RUST_LOG=tatuzim_agent=debug,warn             # agent em debug
RUST_LOG=tatuzim_agent::renewal=trace,info    # so renewal em trace

Modulos disponiveis:

  • tatuzim_agent::commands::enroll
  • tatuzim_agent::commands::run
  • tatuzim_agent::processor
  • tatuzim_agent::renewal
  • tatuzim_agent::hooks
  • tatuzim_agent::http_client
  • tatuzim_agent::update

Exemplo completo (`/etc/tatuzim-agent/env`)

# === Server ===
TATUZIM_SERVER_URL=https://tatuzim.dev.borlot.com.br
TATUZIM_SERVER_MTLS_URL=https://tatuzim.dev.borlot.com.br:8443
TATUZIM_SERVER_CA_PATH=/etc/tatuzim-agent/stepca-root.pem

# === Identidade ===
TATUZIM_AGENT_HOSTNAME=vps-mautic-01
TATUZIM_AGENT_ROLE=mautic

# === Diretorios ===
TATUZIM_AGENT_DATA_DIR=/var/lib/tatuzim-agent
# TATUZIM_AGENT_OUT_DIR=/etc/traefik/certs       # opcional — entregar direto
# TATUZIM_AGENT_HOOK_DIR=/etc/tatuzim-agent/hooks  # opcional

# === Loop ===
TATUZIM_AGENT_POLL_INTERVAL=30s
TATUZIM_AGENT_RENEWAL_THRESHOLD=6h

# === Logs ===
RUST_LOG=info

Compatibilidade com systemd

O EnvironmentFile=-/etc/tatuzim-agent/env da systemd unit le esse arquivo. Cada linha e KEY=value (sem export, sem comentarios inline).

Exemplo errado (vai falhar):

# NAO funciona:
export TATUZIM_AGENT_HOSTNAME=vps-01    # `export` ignorado por systemd
TATUZIM_AGENT_ROLE=mautic # com comentario # systemd interpreta o comentario como parte do valor

Correto:

TATUZIM_AGENT_HOSTNAME=vps-01
TATUZIM_AGENT_ROLE=mautic

Validacao

Boot bem-sucedido do run:

INFO tatuzim_agent::commands::run: agent running hostname=vps-mautic-01 mtls_url=https://... poll_interval=30s renewal_threshold=21600s
INFO tatuzim_agent::events: emit agent_started ✓
DEBUG tatuzim_agent::commands::run: manifest empty

Erros comuns:

Erro Causa Solucao
TATUZIM_SERVER_URL required env nao setado Adicionar ao env file
TATUZIM_ENROLL_TOKEN env var required enroll sem token Set TATUZIM_ENROLL_TOKEN (so na primeira vez)
TATUZIM_SERVER_MTLS_URL required for run run sem url mTLS Adicionar var
invalid TATUZIM_AGENT_POLL_INTERVAL '...' Formato invalido Usar humantime (30s, 1m, 1h)
read ca: .../stepca-root.pem: No such file Root CA do server nao copiado Copiar via scp
no identity at ... — run \tatuzim-agent enroll` first` Tentou run/identity/rotate sem enroll Fazer enroll primeiro

Mudancas que requerem restart

Toda mudanca no env requer:

sudo systemctl restart tatuzim-agent

Exceto: RUST_LOG requer restart, mas nao quebra fluxo.

By Borlot.com.br on 23/05/2026