Pular para o conteúdo principal

O que é YAML? Entendendo os conceitos básicos, a sintaxe e os casos de uso

O YAML é um formato simples, porém avançado, para configurações, automação e serialização de dados. Saiba como ele funciona com exemplos reais!
Actualizado 17 de fev. de 2025  · 14 min de leitura

Ao longo dos anos, trabalhei com inúmeros arquivos de configuração, e o YAML se destacou por sua simplicidade e legibilidade. Seja na configuração de fluxos de trabalho no Kubernetes, na definição de serviços no Docker ou na estruturação de solicitações de API, o YAML torna as configurações complexas mais gerenciáveis. Sua estrutura limpa e baseada em indentação elimina a desordem de formatos como XML, mantendo-se flexível.

Neste guia, mostrarei a sintaxe, a estrutura, os recursos avançados e as práticas recomendadas do YAML para que você possa trabalhar com ele com confiança. 

O que é YAML?

YAML (Yet Another Markup Language / YAML Ain't Markup Language) é um formato de serialização de dados que prioriza a legibilidade e a facilidade de uso. Enquanto o XML usa uma mistura de tags aninhadas semelhantes às do HTML e o JSON usa colchetes e aspas, como os dicionários do Python, o YAML é mais conciso e usa recuo para definir a estrutura, o que o torna mais amigável para o ser humano.

O YAML oferece suporte a vários tipos de dados, incluindo escalares (strings, números, booleanos), sequências (listas) e mapeamentos (pares de valores-chave). Ele é amplamente usado em arquivos de configuração, automação de infraestrutura e troca de dados, especialmente em ferramentas como Kubernetes, Docker e Ansible.

Além disso, o YAML é um superconjunto do JSON, o que significa que os arquivos JSON válidos podem ser analisados como YAML. Normalmente, os arquivos YAML têm uma extensão .yaml ou .yml.

Você também pode saber mais sobre o YAML em seu site !

Sintaxe e estrutura YAML

Esta seção explorará os princípios fundamentais da sintaxe YAML, incluindo pares de valores-chave, listas, dados aninhados e comentários.

Regras básicas de sintaxe

Existem algumas regras sintáticas básicas para o YAML: 

  • O recuo de espaço denota estrutura, portanto, evite as tabulações! 
  • Os pares chave-valor seguem uma estrutura key: value, semelhante a outras linguagens. 
  • O uso de hífens no início das linhas denotará uma lista. 
  • Ao usar #, você criará linhas de comentário.
# Here is an example of YAML
name: John Doe
age: 30
skills:
  - Python
  - YAML

Pares de valores-chave

O YAML representa os dados como pares de valores-chave, semelhante aos dicionários em Python. Isso geralmente denota informações fornecidas a diferentes arquivos de configuração e definições. Não há necessidade de denotar cadeias de caracteres ou chaves com aspas; basta escrever a chave e os valores necessários:

location: New York
country: USA
security-level: user

Listas em YAML

As listas são representadas com hífens (-). Isso permitirá que você liste vários objetos em uma única chave. Isso geralmente é representado visualmente com marcadores quando lido por editores de marcação.

fruits:
  - Apple
  - Banana
  - Cherry

Dados aninhados

As estruturas aninhadas permitem a representação hierárquica de dados usando indentação. Pense neles como dicionários aninhados. Ao usar a indentação, você indica quais teclas são subconjuntos de outras.

person:
  name: Alice
  details:
    age: 25
    city: London

Comentários

Os comentários começam com # e são ignorados pelos analisadores YAML. Esses comentários são comentários de linha única.

# This is a comment
username: admin
password: secret

Recursos avançados de YAML

O YAML inclui recursos avançados como strings de várias linhas, tipos de dados e âncoras que tornam os documentos mais eficientes e estruturados. Nesta seção, exploraremos esses recursos com exemplos práticos.

Cadeias de caracteres de várias linhas

O YAML oferece suporte a strings de várias linhas usando | (bloco literal) ou > (bloco dobrado). 

  • | O bloco literal criará uma nova linha \n para cada quebra de linha. 
  • > O bloco dobrado só criará uma nova linha para quebras de linha consecutivas.
literal: |
  This is a
  multi-line string.

folded: >
  This is another
  multi-line string.

Você entenderá melhor o que foi dito acima se mostrar o resultado.

  • Para o site | (bloco literal):
This is a
multi-line string.
  • Para o > (bloco dobrado):
This is another multi-line string.

Tipos de dados em YAML

O YAML oferece suporte a vários tipos de dados, incluindo strings, números, booleanos e valores nulos. Ele detecta automaticamente os tipos com base na formatação, mas também permite definições explícitas de tipos.

O exemplo a seguir mostra o uso de tipos de dados básicos em YAML:

string_implicit: Hello, YAML!  # No quotes needed unless necessary
string_double_quoted: "Supports escape sequences like \n and \t"
string_single_quoted: 'Raw text, no escape sequences'

integer: 42  # Whole numbers
float: 3.14  # Numbers with decimals

boolean_true: true
boolean_false: false

null_value: null  # Null value
null_tilde: ~  # Another way to represent null

O YAML permite declarações de tipo explícitas usando !!type quando necessário:

explicit_string: !!str 123  # Forces 123 to be a string
explicit_integer: !!int "42"  # Forces "42" to be an integer
explicit_float: !!float "3.14"  # Forces "3.14" to be a float

Como o YAML é frequentemente usado para dados estruturados, ele é compatível:

  • Listas (sequências):
fruits:
  - Apple
  - Banana
  - Cherry
  • Dicionários (mapeamentos):
person:
  name: Alice
  age: 30
  is_student: false

Âncoras e aliases

O YAML permite que você defina valores reutilizáveis usando âncoras (&) e faça referência a eles posteriormente usando aliases (*). Isso ajuda a reduzir a redundância nos arquivos de configuração, tornando-os mais limpos e fáceis de manter.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  host: example.com
  retries: *default_settings  # Reuses the retries value from defaults

A sintaxe <<: permite mesclar pares de valores-chave de uma âncora em outro mapeamento. Se uma chave existir em ambos, o novo valor substituirá o original.

defaults: &default_settings
  retries: 3
  timeout: 30

server1:
  <<: *default_settings  # Merges all key-value pairs from default_settings
  host: example.com  # This key is added to the merged data

Essa é a estrutura final resolvida:

server1:
  retries: 3
  timeout: 30
  host: example.com

As âncoras e os aliases são especialmente úteis em arquivos de configuração grandes, nos quais a repetição manual de valores seria ineficiente. Eles ajudam a manter os arquivos YAML DRY (Don't Repeat Yourself) e facilitam as atualizações.

Casos de uso comuns para YAML

O YAML é amplamente usado no desenvolvimento de software, na automação de infraestrutura e no gerenciamento de APIs. Sua sintaxe legível por humanos o torna o formato preferido para arquivos de configuração, serialização de dados e Infraestrutura como Código (IaC). Vamos explorar seus aplicativos mais comuns.

Arquivos de configuração

O YAML é amplamente usado para configuração em aplicativoscomo Docker Compose, Kubernetes e pipelines de CI/CD. Sua facilidade de compreensão faz com que seja simples para qualquer pessoa pegar os arquivos de configuração YAML do Docker e entender o que está acontecendo.

version: '3'
services:
  web:
    image: nginx
    ports:
      - "80:80"
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80

A facilidade de leitura e o suporte a âncoras e aliases do YAML ajudam a reduzir a repetição, tornando-o mais fácil de manter do que o JSON ou o XML.

Saiba mais sobre o YAML e seu uso no Docker neste curso intermediário do Docker.

Serialização e transferência de dados

O YAML é usado para serializar dados para APIs e ferramentas de gerenciamento de configuração, convertendo estruturas de dados complexas em um formato legível por humanos e facilmente analisado por máquinas. 

Por exemplo, um corpo de solicitação de API formatado em YAML:

user:
  id: 123
  name: "John Doe"
  email: "johndoe@example.com"
  active: true

A estrutura baseada em indentação do YAML elimina a sintaxe desnecessária, tornando-o leve, legível e fácil de modificar em comparação com o JSON.

Infraestrutura como código (IaC)

As ferramentas de gerenciamento de configuração, como o Ansible e o Kubernetes, utilizam o YAML para definir os estados do sistema, automatizar processos e garantir a consistência entre os ambientes.

  • No Ansible, o YAML é usado para escrever playbooks que definem os estados, as tarefas e as dependências do sistema, garantindo que os componentes da infraestrutura sejam configurados de forma consistente. 
  • O Kubernetes utiliza manifestos YAML para definir recursos como pods, serviços e implantações, permitindo a orquestração automatizada de aplicativos em contêineres.

Aqui está um exemplo de uma configuração de Pod do Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
    - name: app-container
      image: my-app:latest
      ports:
        - containerPort: 8080

Saiba mais sobre como o YAML é usado no Kubernetesneste curso de Introdução ao Kubernetes .

Documentação da API

As especificações de API, como OpenAPI e Swagger, usam YAML para definir pontos de extremidade e estruturas de dados de maneira fácil de ler. O YAML é usado para delinear métodos de API, parâmetros de solicitação, formatos de resposta e métodos de autenticação.

Aqui está um exemplo de uma especificação de OpenAPI em YAML:

openapi: 3.0.0
info:
  title: User API
  version: "1.0"
paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        "200":
          description: Successful response

As especificações da OpenAPI, por exemplo, usam YAML para documentar APIs RESTful. Isso permite que eles forneçam um plano claro para gerar SDKs de clientes, documentação de API interativa e testes automatizados. Esse formato estruturado garante a consistência entre as implementações da API.

Trabalhando com arquivos YAML

O YAML é amplamente usado para arquivos de configuração, automação e serialização de dados, mas, como ele depende de indentação, a formatação adequada é fundamental. Veja como você pode ler, gravar, validar e editar YAML com eficiência.

Leitura e gravação de YAML em Python

A biblioteca PyYAML do Python pode analisar e gerar YAML.

Imagine que você tenha o seguinte arquivo YAML de configuração:

database:
  host: localhost
  port: 5432
  user: admin
  password: secret

Veja como você pode trabalhar com seu arquivo de configuração em Python:

import yaml

# Load YAML data
with open("config.yaml", "r") as file:
    data = yaml.safe_load(file)  # safe_load prevents arbitrary code execution

# Modify data (optional)
data["database"]["user"] = "new_user"

# Write YAML data
with open("output.yaml", "w") as file:
    yaml.dump(data, file, default_flow_style=False)

Se você estiver interessado em trabalhar com dados JSON em Python, confira o tutorialabrangente sobre Python JSON.

Validação de arquivos YAML

Para garantir a estrutura correta, você pode usar ferramentas para verificar se há tabulações no lugar de espaços ou problemas estranhos, como caracteres repetidos, problemas de sintaxe e espaços à direita.

Estes são alguns validadores YAML populares:

Editando YAML

Você pode escrever e editar YAML em qualquer editor de texto, mas as ferramentas de linting e o realce de sintaxe melhoram a legibilidade.

Alguns de meus editores favoritos:

  • Código VS (com plug-ins YAML)
  • PyCharm (suporte integrado)
  • Sublime Text (com realce de sintaxe YAML)

Erros comuns que você deve evitar em YAML

Apesar de sua simplicidade, você ainda pode ter problemas e erros de digitação ao trabalhar com YAML. Esta seção discute esses erros e fornece as práticas recomendadas para escrever arquivos limpos e corretos. É também por isso que recomendo que você use um linter ou um editor de texto!

Mistura de tabulações e espaços

O YAML depende de espaços para indentação - nunca misture espaços e tabulações. As guias simplesmente quebrarão seu script YAML. Na verdade, essa é uma decisão consciente, pois sistemas diferentes leem as guias de forma diferente e, portanto, para minimizar o impacto, os espaços são o uso preferido.

Recuo incorreto

Garanta uma indentação consistente para evitar erros de análise. Como os recuos são o único método do YAML para denotar hierarquia, a análise inadequada pode causar problemas no seu código. Você pode facilmente guardar um par de key: value no lugar errado, portanto, fique atento a essas reentrâncias!

Esquecimento de aspas para caracteres especiais

Use aspas para cadeias de caracteres que contenham caracteres especiais ou espaços. Coisas como barras invertidas, vírgulas, pontos de exclamação e assim por diante precisam de aspas para serem lidas como cadeias de caracteres.

path: "/home/user/documents"
message: "Hello, World!"

Usando a validação adequada, a edição estruturada e o PyYAML do Python, você pode trabalhar de forma eficiente com arquivos YAML e evitar armadilhas comuns.

Conclusão

O YAML é um formato avançado, porém simples, amplamente usado em configuração, serialização de dados e automação de infraestrutura. Você pode trabalhar de forma eficiente com o YAML em vários aplicativos compreendendo sua sintaxe, estrutura e práticas recomendadas.

Se você estiver interessado em aplicar o YAML em cenários do mundo real:

Torne-se um engenheiro de dados

Desenvolva habilidades em Python para se tornar um engenheiro de dados profissional.
Comece a usar gratuitamente

Perguntas frequentes

O YAML é universal?

Desde que a fonte de dados ou o destino possa ler YAML, esse é um método viável e útil de serialização e transporte de dados. Certifique-se de que você esteja enviando dados para um destino que possa processar YAML.

O YAML é seguro? Os arquivos YAML podem apresentar riscos de segurança?

O YAML em si é apenas um formato de dados, mas os riscos de segurança surgem quando você analisa arquivos YAML não confiáveis. O método padrão yaml.load() no PyYAML do Python pode executar código arbitrário incorporado no YAML, o que o torna arriscado. Em vez disso, sempre use o site yaml.safe_load() para evitar a execução não intencional de códigos maliciosos. Da mesma forma, ao usar YAML em aplicativos, garanta a validação rigorosa do esquema para evitar vulnerabilidades de segurança.

O YAML é compatível com variáveis de ambiente?

Sim! Embora o YAML em si não processe diretamente as variáveis de ambiente, muitas ferramentas (como o Docker Compose e o Kubernetes) permitem fazer referência a variáveis de ambiente em arquivos YAML.

Como você lida com comentários em YAML?

O YAML é compatível com comentários de uma única linha usando o símbolo #, mas não é compatível com comentários de várias linhas. Se você precisar de comentários com várias linhas, uma solução comum é usar uma tecla fictícia como _comment. No entanto, isso é apenas uma convenção e não será ignorado pelos analisadores YAML, a menos que seu aplicativo o filtre especificamente.


Tim Lu's photo
Author
Tim Lu
LinkedIn

Sou um cientista de dados com experiência em análise espacial, machine learning e pipelines de dados. Trabalhei com GCP, Hadoop, Hive, Snowflake, Airflow e outros processos de engenharia/ciência de dados.

Temas

Saiba mais sobre engenharia de dados com estes cursos!

programa

Data Engineer

40hrs hr
Gain in-demand skills to efficiently ingest, clean, manage data, and schedule and monitor pipelines, setting you apart in the data engineering field.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O que é o Alteryx? Um guia introdutório

Saiba tudo sobre o Alteryx e seus usos na preparação de dados e na visualização de fluxos de trabalho e automação de dados.
Austin Chia's photo

Austin Chia

9 min

blog

O que é o Data Wrangling? Um guia prático com exemplos

Aprenda os conceitos e as teorias fundamentais por trás da organização de dados, além de alguns exemplos práticos. Use essas habilidades em seu trabalho diário de ciência de dados para gerar dados limpos e úteis para seus modelos.
Tim Lu's photo

Tim Lu

12 min

blog

Explicação sobre a detecção de objetos YOLO

Entenda a detecção de objetos YOLO, seus benefícios, como ela evoluiu nos últimos anos e alguns aplicativos da vida real.
Zoumana Keita 's photo

Zoumana Keita

22 min

tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

tutorial

Entendendo a classificação de textos em Python

Descubra o que é a classificação de texto, como ela funciona e os casos de uso bem-sucedidos. Explore exemplos de ponta a ponta de como criar um pipeline de pré-processamento de texto seguido de um modelo de classificação de texto em Python.
Moez Ali's photo

Moez Ali

12 min

tutorial

O que é modelagem de tópicos? Uma introdução com exemplos

Obtenha insights de dados não estruturados com modelagem de tópicos. Explore os principais conceitos, técnicas como LSA e LDA, exemplos práticos e muito mais.
Kurtis Pykes 's photo

Kurtis Pykes

13 min

Ver maisVer mais