Pular para o conteúdo

Sistema de Ambiente

Gerencia variáveis de ambiente através de backends de armazenamento configuráveis.

O sistema de ambiente separa armazenamento de acesso:

  • Armazenamentos - Onde valores são armazenados (SO, arquivos, memória)
  • Variáveis - Referências nomeadas a valores em armazenamentos

Variáveis podem ser referenciadas por:

  • Nome público - O valor do campo variable (deve ser único no sistema)
  • ID de entrada - Referência completa namespace:name

Se você não quer que uma variável seja publicamente acessível pelo nome, omita o campo variable.

TipoDescrição
env.storage.memoryArmazenamento chave-valor em memória
env.storage.fileArmazenamento baseado em arquivo (formato .env)
env.storage.osAcesso somente leitura ao ambiente do SO
env.storage.staticArmazenamento estático somente leitura de chave-valor
env.storage.routerEncadeia múltiplos armazenamentos
env.variableVariável nomeada referenciando um armazenamento

Armazenamento volátil em memória.

- name: runtime_env
kind: env.storage.memory

Armazenamento persistente usando formato de arquivo .env (KEY=VALUE com comentários #).

- name: app_config
kind: env.storage.file
file_path: /etc/app/config.env
auto_create: true
file_mode: 0600
dir_mode: 0700
PropriedadeTipoPadrãoDescrição
file_pathstringobrigatórioCaminho para arquivo .env
auto_createbooleanfalseCria arquivo se ausente
file_modeinteger0644Permissões do arquivo
dir_modeinteger0755Permissões do diretório

Acesso somente leitura a variáveis de ambiente do sistema operacional.

- name: os_env
kind: env.storage.os

Sempre somente leitura. Operações de escrita retornam PERMISSION_DENIED.

Armazenamento somente leitura com valores definidos diretamente na configuração. Os valores são incorporados na entrada e não podem ser alterados em tempo de execução. Útil para constantes de configuração públicas que acompanham um módulo ou pacote.

- name: defaults
kind: env.storage.static
values:
PUBLIC_API_HOST: "https://api.example.com"
PUBLIC_WS_HOST: "wss://api.example.com/ws"
APP_ENV: "production"
PropriedadeTipoDescrição
valuesmapPares chave-valor (string para string)

Sempre somente leitura. Operações de escrita retornam PERMISSION_DENIED.

Encadeia múltiplos armazenamentos. Leituras buscam em ordem até encontrar. Escritas vão para o primeiro armazenamento apenas.

- name: config
kind: env.storage.router
storages:
- app.config:memory # Principal (escreve aqui)
- app.config:file # Fallback
- app.config:os # Fallback
PropriedadeTipoDescrição
storagesarrayLista ordenada de referências de armazenamento

Variáveis fornecem acesso nomeado a valores de armazenamento.

- name: DATABASE_URL
kind: env.variable
variable: DATABASE_URL
storage: app.config:file
default: postgres://localhost/app
read_only: false
PropriedadeTipoDescrição
variablestringNome público da variável (opcional, deve ser único)
storagestringReferência de armazenamento (namespace:name)
defaultstringValor padrão se não encontrado
read_onlybooleanPrevine modificações

Nomes de variáveis devem conter apenas: a-z, A-Z, 0-9, _

# Variável pública - acessível pelo nome "PORT"
- name: port_var
kind: env.variable
variable: PORT
storage: app.config:os
default: "8080"
# Variável privada - acessível apenas pelo ID "app.config:internal_key"
- name: internal_key
kind: env.variable
storage: app.config:secrets
CondiçãoTipoRetentável
Variável não encontradaerrors.NOT_FOUNDnão
Armazenamento não encontradoerrors.NOT_FOUNDnão
Variável é somente leituraerrors.PERMISSION_DENIEDnão
Armazenamento é somente leituraerrors.PERMISSION_DENIEDnão
Nome de variável inválidoerrors.INVALIDnão