Referência de formatos de arquivo de configuração: INI, ENV, PLIST, HCL e mais
No desenvolvimento de software e administração de sistemas modernos, lidamos com dezenas de diferentes formatos de arquivo de configuração. Embora JSON, YAML e TOML sejam os favoritos atuais da indústria, muitas outras extensões persistem em ecossistemas específicos, como sistemas Linux, registro do Windows, Apple macOS, Java e Infraestrutura como Código (IaC).
Este guia de referência cobre as extensões de arquivo de configuração "legadas" e especializadas mais comuns que você encontrará.
Tabela de referência rápida: Formatos de arquivo de configuração
| Extensão | Nome completo | Ecossistema | Tipo de sintaxe |
|---|---|---|---|
.ini, .conf, .cfg |
Inicialização / Configuração | Linux, Windows, PHP, Python | Chave-Valor / Seções |
.env |
Variáveis de ambiente | Dev Web (Node.js, Docker, Python) | Chave=Valor |
.properties |
Propriedades Java | Java, Spring, Android | Chave=Valor (ou XML) |
.plist |
Lista de propriedades | macOS, iOS, Apple | XML ou Binário |
.hcl, .tf, .tfvars |
HashiCorp Configuration Language | Terraform, Nomad, Consul | Linguagem de Domínio Específico (DSL) |
.ovpn, .wg |
Configuração OpenVPN / WireGuard | Redes, VPN | Baseado em diretivas |
1. Configuração do sistema e legada (.ini, .conf, .cfg)
Estes são os "avôs" dos arquivos de configuração. Eles são simples, baseados em texto e legíveis por humanos.
- Arquivos INI: Frequentemente usados no Windows e em softwares mais antigos. Eles usam
[Seções]para agrupar pares chave-valor.[database] host = 127.0.0.1 port = 5432 - CONF / CFG: Usados principalmente em diretórios
/etc/do Linux (ex:nginx.conf,redis.conf). A sintaxe varia — alguns usam Chave-Valor simples, enquanto outros usam chaves ou diretivas personalizadas.
2. Variáveis de ambiente (.env)
O arquivo .env é um padrão no desenvolvimento web moderno para armazenar "segredos" e configurações específicas de ambiente (como URLs de banco de dados ou chaves de API) que não devem ser commitados no Git.
- Sintaxe: Formato
CHAVE=VALORextremamente simples. - Melhor prática: Nunca commite o arquivo
.envno controle de origem. Use um arquivo.env.exampleem seu lugar para mostrar as variáveis necessárias.
3. Enterprise e Java (.properties)
Usado pela Máquina Virtual Java (JVM) há décadas. É semelhante a um arquivo .env, mas suporta escapes mais complexos e pode até ser formatado como XML.
- Uso comum:
application.propertiesem aplicações Spring Boot. - Sintaxis:
database.url=jdbc:mysql://localhost:3306/db
4. O ecossistema Apple (.plist)
As Listas de Propriedades (Property Lists) são o padrão para aplicativos macOS e iOS. Elas armazenam preferências do usuário e metadados do aplicativo (como Info.plist).
- Formatos: Podem ser armazenados como XML legível por humanos ou como arquivos Binários otimizados.
- Como visualizar: Use o "Editor de Lista de Propriedades" no macOS ou converta-os para JSON usando a ferramenta de linha de comando
plutil.
5. Infraestrutura como Código (.hcl, .tf, .tfvars)
O HCL foi criado pela HashiCorp para preencher a lacuna entre o YAML legível por humanos e o JSON legível por máquinas. É a linguagem principal do Terraform.
- HCL: Altamente expressivo, suportando comentários, variáveis e funções.
- TF: Especificamente para definições de recursos do Terraform.
- TFVARS: Usado para passar valores de variáveis para planos do Terraform.
6. Redes e VPN (.ovpn, .wg)
Se você já configurou uma conexão segura, já viu estes:
- OVPN: Um arquivo complexo semelhante a um script contendo endereços de servidor OpenVPN, informações de porta e, frequentemente, certificados incorporados (
<ca>,<cert>,<key>). - WG: A configuração mais simples do WireGuard. Usa um formato limpo no estilo INI para definir
[Interface]e[Peer].
Ferramentas para trabalhar com arquivos de configuração
- Editores: VS Code, Sublime Text e IDEs da JetBrains possuem plugins para quase todos os formatos listados acima para fornecer destaque de sintaxe e validação.
- Conversores CLI:
yq: Um processador de linha de comando portátil para YAML, JSON, XML, CSV e TOML (semelhante aojq).plutil: Integrado ao macOS para converter arquivos.plist.terraform fmt: Para formatar arquivos.tfe.hcl.
Perguntas comuns (FAQ)
P: Posso usar comentários em um arquivo .env?
R: A maioria dos analisadores de .env (como dotenv no Node.js) suporta comentários começando com #. No entanto, é mais seguro colocar os comentários em suas próprias linhas em vez de na mesma linha.
P: Como faço para converter um .plist binário para XML?
R: No macOS, você pode executar: plutil -convert xml1 filename.plist.
P: Por que meu arquivo .ini tem [colchetes]?
R: Colchetes denotam uma Seção. Eles permitem agrupar configurações relacionadas, evitando colisões de nomes (ex: ter uma port em [http] e uma port diferente em [ssh]).
P: O .hcl é compatível com JSON?
R: Sim! O HCL foi projetado para ser totalmente compatível com JSON. Você pode escrever seus arquivos do Terraform em .tf.json se preferir (embora seja menos legível para humanos).
Ferramentas relacionadas no Tool3M
- Formatador JSON: Formate e valide seus arquivos de configuração JSON.
- Conversor YAML para JSON: Saiba mais sobre a relação entre formatos de dados comuns.