Configuração YAML (.yaml)
Especificação PadrãoYAML Ain't Markup Language (YAML) é o formato de serialização de dados dominante para DevOps modernos, infraestrutura em nuvem (Kubernetes, Docker Compose) e automação de CI/CD, enfatizando a facilidade de leitura por meio de indentação limpa de espaços em branco.
Converter YAML para JSON
Conversor gratuito de YAML para JSON no navegador. Converta arquivos instantaneamente no seu dispositivo.
Inspeção e metadados
Sistemas operacionais e analisadores de arquivos identificam arquivos YAML pela sequência inicial de bytes:
Assinatura do arquivo em bytes (magic bytes)
Sistemas operacionais e analisadores de arquivos identificam arquivos YAML pela sequência inicial de bytes:
ASSINATURA HEXADECIMAL (DESLOCAMENTO 0):
2D 2D 2D 0AREPRESENTAÇÃO ASCII: ---\n
Padronização: Especificação YAML 1.2.2
Especificações técnicas
| Estrutura do contêiner | Formato de serialização de dados baseado em indentação, fácil de ler e com suporte a âncoras e aliases; é um superconjunto de JSON |
| Compressão | Fluxo de texto não compactado |
| Ordem dos bytes (endianness) | Fluxo de texto UTF-8 / Unicode |
| Espaços de cor | Não se aplica (serialização de dados) |
| Canais e Estrutura | Mapeamentos (dicionários chave-valor), sequências (listas), tipos escalares (strings, números, booleanos) e âncoras (&ref/*ref) |
| Dimensões Máximas | Tamanho de documento ilimitado (suporta fluxos de vários documentos separados por '---') |
| Transparência | Nenhum |
| Streaming e Progressivo | Fluxos com vários documentos permitem processá-los sequencialmente |
Matriz de comparação técnica: YAML e formatos concorrentes
| Atributo técnico | YAML (Atual) | JSON | TOML | XML |
|---|---|---|---|---|
| Estilo de Sintaxe | Hierarquia de espaços em branco de indentação | Colchetes e aspas estritos | Tabelas e pares chave=valor | Tags de abertura/fechamento prolixas |
| Suporte a Comentários | Nativo (comentários com #) | Nenhum comentário permitido | Nativo (comentários com #) | <!-- comentários --> |
| Adoção em DevOps | O suporte varia conforme o programa. | O suporte varia conforme o programa. | Configuração de pacotes Rust/Python | Configuração herdada corporativa |
| Reutilização de Dados | Âncoras nativas (&) e Apelidos (*) | Nenhum (duplicação manual) | Nenhum (duplicação manual) | Entidades XML |
Modos comuns de corrupção e guia de recuperação com editor hexadecimal
Erro do analisador: 'mapping values are not allowed here' ou erro de indentação.
Causa principal: Mistura de tabulações com espaços ou níveis de indentação desalinhados.
Recuperação: Converta tabulações em espaços e valide a sintaxe usando o Formatador YAML do File2File.app.
Análise de segurança e vetores de ataque a analisadores
Analisadores YAML que suportam tags de tipo personalizadas (como 'yaml.load()' do PyYAML) historicamente permitiam a execução remota de código por meio de instanciação arbitrária de objetos.
Vetores de ataque conhecidos
- Execução arbitrária de código por meio de tags de desserialização de objetos inseguras (por exemplo, '!!python/object/apply').
- Bombas de expansão de entidades (equivalente ao ataque “bilhão de risadas” usando âncoras e apelidos YAML).
- Vulnerabilidades de confusão de tipo devido à análise implícita de booleanos e carimbos de data/hora.
Melhores práticas defensivas: Sempre use analisadores YAML seguros ('yaml.safe_load()' em Python) e imponha limites de profundidade de expansão de âncoras.
Origens históricas e marcos
Principais vantagens
- YAML é comum em ferramentas de infraestrutura, mas o suporte e o comportamento variam conforme a implementação.
- Sintaxe limpa e legível: elimina a desordem de chaves, colchetes e aspas por meio de indentação intuitiva.
- Suporta referências e âncoras (&anchor / *anchor) para reutilizar blocos de configuração repetidos sem duplicação.
Limitações técnicas e desvantagens
- Sensível a espaços em branco: uma tabulação acidental ou um único espaço extra pode corromper a hierarquia do documento ou causar erros de análise.
- Notórios bugs de coerção de tipo: palavras sem aspas como 'no', 'on', 'yes' ou códigos de país ('NO' para a Noruega) podem se tornar booleanos sem aviso.
- Velocidade de análise significativamente mais lenta em comparação com formatos binários ou JSON estrito.
Curiosidades técnicas
- YAML originalmente significava 'Yet Another Markup Language', mas foi renomeado de forma humorística para o acrônimo recursivo 'YAML Ain't Markup Language' para enfatizar a serialização de dados.
- O 'Problema da Noruega' é um famoso bug de programação em que o código do país 'NO' em um arquivo YAML foi analisado como o booleano 'false'.
- Todo arquivo JSON válido no mundo é também simultaneamente um arquivo YAML 100% válido.
Perguntas técnicas frequentes
Para que o YAML é usado?
O YAML é a principal linguagem de configuração para computação em nuvem, implantação de clusters Kubernetes, arquivos Docker Compose, fluxos de trabalho do GitHub Actions e configurações de software.
Posso usar tabulações em arquivos YAML?
Não. A especificação oficial do YAML proíbe estritamente o uso de caracteres de tabulação para indentação; você deve sempre usar espaços (geralmente 2 espaços por nível).
Como posso converter YAML para JSON?
Você pode converter arquivos YAML em JSON limpo e validado com um clique usando o File2File.app diretamente no seu navegador com total privacidade.
Conversões de YAML relacionadas
A conversão de arquivos de configuração YAML para o formato JSON traduz estruturas de texto indentadas e legíveis por humanos em objetos de análise rigorosa por máquina para aplicações web.
A conversão de arquivos de configuração JSON para o formato YAML transforma estruturas de dados programáticas rígidas em documentos limpos e legíveis por humanos, muito mais fáceis de editar pelos administradores de sistemas.