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 ficheiros de configuração, pipelines CI/CD e infraestrutura como código. Se trabalha com Docker Compose, Kubernetes, GitHub Actions ou Ansible, já utiliza YAML diariamente. Este tutorial abrange tudo o que precisa para escrever YAML com confiança.

Porquê 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

O YAML alcança a mesma estrutura com menos pontuação. Sem chavetas, sem parênteses retos para casos simples, sem aspas obrigatórias. Isto torna os ficheiros de configuração mais fáceis de ler e editar manualmente.

Tipos de Dados Básicos

Escalares

O YAML infere automaticamente os tipos a partir dos valores:

string: hello world          # String (sem aspas necessárias)
quoted: "hello world"        # String explícita
integer: 42                  # Inteiro
float: 3.14                  # Float
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 pretende a string "yes", coloque-a entre aspas: "yes".

Strings e Aspas

As strings raramente precisam de aspas, mas alguns casos exigem-nas:

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 Multilinha

O YAML tem dois estilos multilinha:

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 (>) — junta linhas com espaços:

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

Adicione - para remover novas linhas finais (|-, >-) ou + para as manter (|+, >+).

Coleções

Listas (Sequências)

# Estilo block
fruits:
  - apple
  - banana
  - cherry

# Estilo flow (em linha)
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

As âncoras (&) e aliases (*) permitem-lhe reutilizar valores:

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

development:
  database: dev_db
  <<: *defaults

production:
  database: prod_db
  <<: *defaults
  host: db.example.com  # Sobrepõe o predefinido

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

Múltiplos Documentos

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

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

Isto é comummente utilizado em manifestos do Kubernetes.

Armadilhas Comuns

1. Erros de Indentação

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

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

# CORRETO
server:
  host: localhost
  port: 8080

Utilize o 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, cardinal e parênteses retos em valores precisam de aspas:

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

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

4. Armadilha dos Números de Versão

Números de versão como 1.0 são analisados como floats:

# ERRADO
version: 1.0  # Torna-se 1 (float)

# CORRETO
version: "1.0"  # String

Validar YAML

Valide sempre o seu YAML antes de implementar. Erros de sintaxe em YAML podem causar falhas crípticas em aplicações. O nosso Validador YAML verifica a sintaxe instantaneamente, destacando a linha e coluna exatas de quaisquer erros.

Para um aprofundamento das diferenças entre YAML e JSON, consulte a nossa comparação YAML vs JSON.

FAQ

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

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

O YAML suporta comentários?

Sim, o YAML suporta comentários de linha única com #. Não existe sintaxe para comentários multilinha. Os comentários são removidos durante a análise 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