alltools.one
YAML
2025-07-06
8 min
alltools.one Team
YAMLSyntaxConfigurationDevOps

Tutorial de Sintaxe YAML: Uma Introdução Prática

YAML (YAML Ain't Markup Language) é um formato de serialização de dados legível por humanos, amplamente utilizado em arquivos de configuração, pipelines CI/CD e infraestrutura como código. Se você trabalha com Docker Compose, Kubernetes, GitHub Actions ou Ansible, já está usando YAML diariamente. Este tutorial cobre tudo o que você precisa para escrever YAML com confiança.

Por Que YAML?

A principal vantagem do YAML é a legibilidade. Compare os mesmos dados em JSON e YAML:

JSON:

{
  "server": {
    "host": "localhost",
    "port": 8080,
    "debug": true,
    "allowed_origins": ["http://localhost:3000", "https://example.com"]
  }
}

YAML:

server:
  host: localhost
  port: 8080
  debug: true
  allowed_origins:
    - http://localhost:3000
    - https://example.com

YAML alcança a mesma estrutura com menos pontuação. Sem chaves, sem colchetes para casos simples, sem aspas obrigatórias. Isso torna os arquivos de configuração mais fáceis de ler e editar manualmente.

Tipos de Dados Básicos

Escalares

O YAML infere tipos automaticamente a partir dos valores:

string: hello world          # String (sem necessidade de aspas)
quoted: "hello world"        # String explícita
integer: 42                  # Inteiro
float: 3.14                  # Ponto flutuante
boolean: true                # Booleano (true/false, yes/no, on/off)
null_value: null             # Nulo (também ~ ou vazio)
date: 2025-01-15             # Data (ISO 8601)

Armadilha comum: Valores como yes, no, on, off são interpretados como booleanos. Se você quer a string "yes", use aspas: "yes".

Strings e Aspas

Strings raramente precisam de aspas, mas alguns casos exigem:

plain: This is a plain string
single: 'Preserves \n as literal backslash-n'
double: "Interprets \n as newline"
colon: "value: with colon needs quotes"
hash: "value # with hash needs quotes"

Strings Multilinhas

O YAML tem dois estilos multilinhas:

Bloco literal (|) — preserva quebras de linha:

description: |
  Esta é a linha um.
  Esta é a linha dois.
  
  Esta é a linha quatro (após linha em branco).

Bloco dobrado (>) — une linhas com espaços:

description: >
  Este é um parágrafo longo
  que será dobrado em
  uma única linha.

Adicione - para remover newlines finais (|-, >-) ou + para mantê-los (|+, >+).

Coleções

Listas (Sequências)

# Estilo block
fruits:
  - apple
  - banana
  - cherry

# Estilo flow (inline)
fruits: [apple, banana, cherry]

Mapas (Mapeamentos)

# Estilo block
person:
  name: Alice
  age: 30
  city: London

# Estilo flow
person: {name: Alice, age: 30, city: London}

Estruturas Aninhadas

departments:
  - name: Engineering
    lead: Alice
    members:
      - Bob
      - Charlie
  - name: Design
    lead: Diana
    members:
      - Eve

Âncoras e Aliases

Âncoras (&) e aliases (*) permitem reutilizar valores:

defaults: &defaults
  adapter: postgres
  host: localhost
  port: 5432

development:
  database: dev_db
  <<: *defaults

production:
  database: prod_db
  <<: *defaults
  host: db.example.com  # Sobrescreve o padrão

A chave de merge << incorpora todas as propriedades da âncora. Propriedades definidas após o merge sobrescrevem os valores ancorados. Leia mais sobre padrões avançados de âncoras em nosso guia de âncoras e aliases YAML.

Múltiplos Documentos

Um único arquivo YAML pode conter múltiplos documentos separados por ---:

---
# Documento 1: Config
apiVersion: v1
kind: ConfigMap
---
# Documento 2: Service
apiVersion: v1
kind: Service

Isso é comumente usado em manifestos Kubernetes.

Armadilhas Comuns

1. Erros de Indentação

YAML usa espaços, nunca tabs. Indentação inconsistente é o erro mais comum:

# ERRADO - indentação mista
server:
  host: localhost
    port: 8080  # Erro: indentação inesperada

# CORRETO
server:
  host: localhost
  port: 8080

Use nosso Formatador YAML para corrigir automaticamente problemas de indentação.

2. O Problema da Noruega

Códigos de país como NO (Noruega) são interpretados como booleano false:

# ERRADO
countries:
  - NO  # Interpretado como false!
  - SE
  - DK

# CORRETO
countries:
  - "NO"
  - SE
  - DK

3. Caracteres Especiais Sem Aspas

Dois-pontos, cerquilhas e colchetes em valores precisam de aspas:

# ERRADO
message: Error: file not found
url: http://example.com  # Pode quebrar

# CORRETO
message: "Error: file not found"
url: "http://example.com"

4. Problema com Números de Versão

Números de versão como 1.0 são interpretados como ponto flutuante:

# ERRADO
version: 1.0  # Vira 1 (float)

# CORRETO
version: "1.0"  # String

Validando YAML

Sempre valide seu YAML antes de fazer deploy. Erros de sintaxe em YAML podem causar falhas obscuras em aplicações. Nosso Validador YAML verifica a sintaxe instantaneamente, destacando a linha e coluna exatas de quaisquer erros.

Para um aprofundamento nas diferenças entre YAML e JSON, veja nossa comparação YAML vs JSON.

FAQ

Quantos espaços devo usar para indentação YAML?

Dois espaços é a convenção mais comum, usada pelo Kubernetes, Docker Compose, GitHub Actions e a maioria das ferramentas DevOps. Alguns projetos usam quatro espaços. A regra principal é consistência dentro do arquivo — nunca misture níveis de indentação.

YAML suporta comentários?

Sim, YAML suporta comentários de linha única com #. Não existe sintaxe para comentários multilinhas. Comentários são removidos durante o parsing e não ficam disponíveis na estrutura de dados carregada.

Recursos Relacionados

Published on 2025-07-06
YAML Syntax Tutorial: A Practical Introduction | alltools.one