O que é YAML?
Explore o IBM® Watsonx Code Assistant for Red Hat® Ansible® Lightspeed Agende uma demonstração em tempo real
Colegas de trabalho analisando código no monitor do computador

Publicado: 11 de dezembro de 2023
Colaboradores: Tasmiha Khan, Michael Goodwin

O que é YAML?

YAML é uma linguagem de serialização de dados versátil e legível por humanos, comumente utilizada para criar arquivos de configuração.

Ele oferece um formato padronizado para representar dados estruturados de uma forma facilmente compreensível para humanos e que pode ser interpretado por máquinas. "YAML" é um acrônimo que significa "YAML Ain't Markup Language" (YAML não é linguagem de formatação) ou "Yet Another Markup Language" (mais uma linguagem de formatação). O primeiro tem o objetivo de enfatizar que a linguagem é destinada a dados e não a documentos.

Em seu núcleo, o YAML foi projetado para oferecer simplicidade e legibilidade. Utiliza uma sintaxe limpa e minimalista, contando com endentação, pares de valores-chave e convenções intuitivas. Essa abordagem permite que desenvolvedores e usuários expressem estruturas de dados complexas em um formato semelhante à linguagem natural e é fácil de entender rapidamente.

A ênfase na legibilidade humana torna o YAML especialmente adequado para vários aplicativos, inclusive arquivos de configuração (config) e troca de dados entre diversos sistemas. Sua estrutura simples e intuitiva aumenta sua usabilidade em diversos domínios, permitindo que os usuários definam e organizem os dados de maneira clara e compreensível. O SAML é compatível com caracteres Unicode, permitindo a representação de uma ampla gama de caracteres e símbolos de diversos idiomas e conjuntos de caracteres. O YAML válido resulta em especificação sem erros de sintaxe.

A adaptabilidade do YAML faz dele uma escolha versátil em um amplo espectro de aplicações. Do gerenciamento de configuração à troca e automação de dados, a usabilidade do YAML abrange vários domínios, oferecendo um meio acessível e estruturado para representar e gerenciar dados.

Solicite uma demo

Agora é a hora de aprimorar sua automação com o poder da IA generativa. Agende uma demonstração personalizada de 30 minutos com um dos nossos especialistas para ver o IBM watsonx Code Assistant para Red Hat Ansible Lightspeed em ação.

Conteúdo relacionado

Assine a newsletter da IBM

Sintaxe e atributos do YAML

Há vários atributos e elementos chave na sintaxe do YAML. É fundamental entender a estrutura, os tipos de dados e as convenções utilizadas nos arquivos YAML para garantir a representação eficiente dos dados e a legibilidade.

Mapa (dicionário)

Em YAML, dicionários são representados como mapeamentos. São uma coleção de pares de valores-chave onde cada chave está associada a um valor. Essa estrutura de dados assemelha-se ao conceito de dicionários ou mapas encontrados em várias linguagens de programação. 

Endentação

A sintaxe do YAML depende muito da endentação e do número de espaços para representar a estrutura dos dados. Espaços em branco, e não caracteres de tabulação proibidos em YAML, são utilizados em YAML para indicar hierarquia e aninhamento. Como o YAML depende da endentação para criar estrutura, a uniformidade em todo o documento YAML é importante.

As quebras de linha representam o fim de uma linha no formato YAML, utilizado para separar elementos diferentes.

Aspas

Para a maioria dos escalares em YAML, não são necessárias aspas. No entanto, as aspas podem ser necessárias para evitar confusão em determinados cenários, como para delimitar uma sequência de caracteres contendo caracteres especiais que podem ser confundidos com a sintaxe do YAML. Ou se houver uma string contendo apenas "verdadeiro" que você não deseja converter para um booleano, por exemplo. Em casos como esses, podem ser utilizadas aspas simples ou duplas, dependendo dos dados e do que precisar ser expresso.

Pares chave-valor

O YAML emprega um formato de par chave-valor simples separado por dois pontos para a representação de associações de dados.  

Por exemplo:

profissão: professor

Sequências (arrays)

As sequências (matrizes ou listas em outras linguagens) permitem definir uma lista de itens em YAML. A endentação separa uma sequência da principal, e cada item da lista começa com um traço (-) seguido de um espaço. Todos os itens da sequência devem ter a mesma endentação.

Por exemplo:

frutas:
    - maçã
    - laranja
    - pera

As sequências também podem ser representadas em uma sequência de fluxo com colchetes e vírgulas.1

frutas: [maçã, laranja, pera]

Tipos de dados

O YAML é compatível com vários tipos de dados, como strings, números inteiros, números de ponto flutuante, booleanos e null. Esses tipos de dados oferecem flexibilidade na representação de diversos tipos de informações.

Comentários

O YAML aceita comentários denotados pelo símbolo #. Os comentários ajudam a adicionar explicações, anotações ou contexto dentro dos arquivos YAML.

Strings multilinhas

O YAML suporta strings com várias linhas, permitindo que o texto se estenda por várias linhas sem exigir quebras explícitas de linha. As strings com múltiplas linhas são úteis para incluir blocos de texto em documentos YAML.

Arquivos YAML

Os arquivos YAML geralmente utilizam extensões como .yaml ou .yml. As convenções de nomeação e estruturação de arquivos YAML garantem a uniformidade e a interpretação adequada dos dados. Arquivos YAML também podem ser lidos no Perl, no Ruby e no Python.

YAML, JSON e XML

YAML e JSON são semelhantes na representação de dados, no entanto, o YAML se destaca por sua legibilidade, expressividade e pela sua compatibilidade com estruturas de dados complexas. O YAML é um superconjunto de JSON, o que significa que contém todos os recursos do JSON além de recursos e comandos expandidos.

O JSON (JavaScript Object Notation) utiliza uma sintaxe mais explícita com chaves {}, colchetes [] e vírgulas. Embora concisa e amplamente utilizada, a sintaxe do JSON pode tornar-se menos legível, especialmente em conjuntos de dados maiores. A compatibilidade do JSON para estruturas de dados é comparativamente limitada, principalmente com matrizes, objetos e valores escalares.

O JSON costuma ser o preferido por sua compatibilidade cruzada para intercâmbio de dados em aplicativos da Web e APIs, enquanto o YAML é mais comumente utilizado em cenários em que a legibilidade humana e estruturas de dados mais complexas são necessárias, como arquivos de configuração e certos tipos de documentação e troca de dados.2

Se comparado com o XML, o YAML oferece uma alternativa mais concisa e fácil de usar, enfatizando a simplicidade e a facilidade de compreensão na representação e na troca de dados. YAML e XML têm diferenças fundamentais na sintaxe e propósito.

O XML é altamente estruturado, contando com tags explícitas de abertura e fechamento, tornando-o ligeiramente confuso. Por outro lado, o YAML emprega uma estrutura mais simples e natural semelhante à linguagem, concentrando-se na legibilidade por meio de recuo e pares chave-valor sem tags de fechamento explícitas.

Casos de uso do YAML

O YAML pode ser utilizado com todas as linguagens de programação e é frequentemente utilizado em arquivos de configuração, bem como em trocas de dados e documentação. Seu formato legível por humanos aumenta a clareza da documentação.

YAML e DevOps

O YAML desempenha um papel fundamental no DevOps e é fundamental no gerenciamento de automação, orquestração e configuração. Dentro das práticas de DevOps, os arquivos YAML servem como modelos para definir sequências de ações e configurações em um formato de fácil compreensão. Esses arquivos são utilizados para descrever precisamente as etapas e os procedimentos necessários para a automação, permitindo uma representação clara e concisa de fluxos de trabalho complexos.

Infraestrutura como código (IaC)

O YAML é utilizado para definir a infraestrutura como código, que é o uso de código, em vez de processos manuais para definir e gerenciar a infraestrutura de TI. O IaC permite uma configuração de infraestrutura de TI mais eficiente e uniforme. O YAML pode ser utilizado para definir a configuração desejada da infraestrutura, como máquinas virtuais, redes e armazenamento, e para descrever a relação entre os componentes da infraestrutura de TI.

Implementações

O YAML é utilizado para criar arquivos de implantação para aplicativos que especificam configurações de aplicativos, dependências, limites de recursos e outras informações importantes para a implementação e o desempenho eficientes do aplicativo. Os arquivos YAML ajudam a reduzir erros de implementação e aumentam a velocidade de entrega de aplicativos por meio de controle de versão e automação.

Configuração do pipeline de CI/CD

O YAML pode desempenhar um papel importante em pipelines de integração contínua e entrega contínua (CI/CD), um importante fluxo de trabalho ágil de DevOps. Semelhante à configuração e a implantações de infraestrutura, os arquivos YAML são utilizados para definir as etapas e os alvos do pipeline e, em última análise, ajudam a automatizar o processo de CI/CD.

YAML e ferramentas de DevOps

Muitas ferramentas e programas utilizados pelas equipes de DevOps utilizam YAML, incluindo:

Ansible

Ansible é um aplicativo de software de automação em código aberto que utiliza arquivos formatados em YAML, conhecidos como playbooks, para definir tarefas e procedimentos de automação. ​​Os modelos de YAML possibilitam que os usuários programem a automação de tarefas repetitivas sem o conhecimento de uma linguagem de programação avançada.3

Utilizando o IBM watsonx Code Assistant for Red Hat Ansible Lightspeed, os usuários podem escrever uma tarefa em inglês simples e receber recomendações de código YAML para tarefas de automação. Essas recomendações de código são utilizadas para criar Playbooks do Ansible.3

Kubernetes

O Kubernetes é uma plataforma de orquestração de contêineres de código aberto utilizada para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. O Kubernetes funciona com base em "estados", tentando alcançar um estado desejado a partir de um estado atual com base em instruções específicas. Os arquivos YAML podem ser utilizados para criar recursos do Kubernetes, como pods, objetos e implantações, bem como para especificar e comunicar o estado desejado dos objetos do Kubernetes.

GitHub

GitHub, uma plataforma baseada na web para controle de versão e colaboração no desenvolvimento de software, utiliza o YAML para definir fluxos de trabalho. As configurações baseadas em YAML nos repositórios do GitHub permitem a configuração de fluxos de trabalho automatizados para integração contínua e gerenciamento de projetos.

docker compose

Docker Compose é uma ferramenta para definir e executar aplicativos Docker de vários contêineres.4  Os arquivos YAML são utilizados no Docker Compose para configurar os serviços de um aplicativo.

Compartilhamento de dados entre diversas linguagens

O YAML é independente de linguagem, tornando-o ideal para o compartilhamento de dados entre diversas linguagens. Uma vez definido um arquivo YAML, ele pode ser executado em outras linguagens como Python ou Ruby.

Arquivos de registro

Os arquivos de registro são arquivos de dados textuais gerados por computador contendo informações sobre as operações e padrões dentro de aplicativos, sistemas, servidores e outros recursos ou dispositivos de TI. São utilizados para medir o desempenho dos recursos e desempenhar papel crucial na observabilidade do sistema. Devido à sua simplicidade, o YAML é utilizado para criar arquivos de histórico intuitivos e limpos.

Vantagens do YAML

O YAML tornou-se uma linguagem popular de serialização de dados por vários motivos, incluindo sua simplicidade, compatibilidade e utilidade na criação de arquivos de configuração.

Simplicidade

A sintaxe do YAML assemelha-se a estruturas de linguagem natural. Sua simplicidade e seu design minimalista facilitam o entendimento tanto para desenvolvedores quanto para usuários não técnicos, melhorando a compreensão e reduzindo erros.

Utilização em arquivos de configuração

O YAML é adequado para arquivos de configuração devido ao seu formato estruturado e legível. Ele simplifica o processo de definição de configurações utilizando recuo e pares chave-valor, tornando-o gerenciável e adaptável para vários aplicativos de software.

Compatibilidade

A natureza independente de plataforma do YAML garante compatibilidade entre diversos sistemas e diversas linguagens de programação, facilitando a troca contínua de dados e a interoperabilidade entre várias plataformas e ambientes variados.

Ferramentas para processamento de YAML

O PyYAML é uma biblioteca Python proeminente utilizada para analisar e trabalhar com arquivos YAML em aplicativos baseados em Python. Oferece métodos para carregar dados YAML em objetos do Python. O PyYAML permite a conversão de arquivos YAML em estruturas de dados práticas dentro de aplicativos Python e vice-versa.5

Ferramentas como PyYAML e outros analisadores e validadores YAML, como yamllint e YAML Validator, desempenham um papel importante na preservação da precisão, da validade e da integridade dos arquivos YAML. Sua função principal envolve a validação da sintaxe do YAML, a identificação de erros e a garantia da uniformidade dos documentos do YAML. 

Soluções relacionadas
IBM watsonx Code Assistant for Red Hat Ansible Lightspeed

O IBM watsonx Code Assistant for Red Hat Ansible Lightspeed desmistifica o processo de criação do Ansible Playbook por meio de recomendações de conteúdo impulsionadas por IA generativa. Desenvolvido especificamente para acelerar a automação de TI, o produto oferece recomendações de conteúdo de automação para uma experiência Ansible aprimorada.

Explore o watsonx Code Assistant for Red Hat Ansible Lightspeed Agende uma demonstração em tempo real

IBM watsonx Code Assistant

O IBM watsonx Code Assistant utiliza IA generativa para acelerar o desenvolvimento e manter os princípios de confiança, segurança e conformidade em seu núcleo. Desenvolvedores e operadores de TI podem acelerar os esforços de modernização de aplicações e gerar automação para expandir os ambientes de TI com rapidez.

Explore o IBM watsonx Code Assistant

Dê o próximo passo

Tudo pronto para aprimorar sua automação com tecnologia de IA generalizada? Veja o que o watsonx Code Assistant for Red Hat Ansible Lightspeed pode fazer agendando uma demonstração ao vivo ou conversando com um de nossos especialistas.

Explore o watsonx Code Assistant for Red Hat Ansible Lightspeed Agende uma demonstração em tempo real
Notas de rodapé

1 "Como representar matrizes em YAML" (link fora de ibm.com), Tarun Telang, Educative, Inc., 2023

2 "Qual é a diferença entre YAML e JSON" (link fora de ibm.com), " Amazon Web Services, 2023

"O que é YAML" (link reside fora de ibm.com), Redhat.com, 3 de março de 2023

4 "Visão geral do Docker Compose" (o link fora de ibm.com), Docker.com, 2023 

5 "Python YAML | Guia de tratamento de arquivos YAML" (link fora do site ibm.com), Gabriel Ramuglia, 11 de setembro de 2023