Jump to section

O que é YAML?

Copiar URL

O YAML é uma linguagem legível de serialização de dados muito usada na escrita de arquivos de configuração. Dependendo, a sigla YAML pode significar em inglês yet another markup language (mais uma linguagem de marcação) ou YAML ain’t markup language (YAML não é linguagem de marcação) [acrônimo recorrente]. Ambos destacam que o YAML é voltado para os dados, e não documentos. 

O YAML é uma linguagem de programação famosa porque foi concebido para ser fácil de ler e entender. Ele também pode ser utilizado com outras linguagens de programação. Graças a sua flexibilidade e acessibilidade, o Ansible® utiliza a linguagem YAML para criar processos de automação no formato de Ansible playbooks.

Os arquivos em YAML têm extensão .yml ou .yaml e seguem regras específicas de sintaxe.

O YAML inclui funcionalidades que vêm do Perl, C, XML, HTML e outras linguagens de programação. E como também é um superconjunto do JSON, ele aceita arquivos nesse formato.

Não há símbolos de formato comuns, como chaves, colchetes, tags de fechamento ou aspas. E é bastante simples ler arquivos YAML porque eles usam recuo no estilo Python para determinar a estrutura e indicar o aninhamento. Por padrão, caracteres de tabulação não são permitidos para manter a portabilidade entre diferentes sistemas. Por isso, é necessário usar caracteres de espaço em branco.

Os comentários são identificados pelo símbolo de hash ou jogo da velha (#). É uma prática recomendada usar comentários que descrevam a intenção do código. O YAML não aceita comentários em várias linhas. Isso significa que cada linha de comentário deve ser iniciada pelo caractere de hash.

Uma dúvida comum das pessoas que ainda são iniciantes em YAML é o que significa os três traços consecutivos (---). Eles sinalizam o início de um documento. Já o final do documento é marcado por três pontos (…).  

A seguir temos um exemplo muito básico de um arquivo YAML:

 #Comment: This is a supermarket list using YAML #Note that - character represents the list --- food: - vegetables: tomatoes #first list item - fruits: #second list item citrics: oranges tropical: bananas nuts: peanuts sweets: raisins 

Observe que a estrutura do arquivo YAML é um mapa ou uma lista que segue uma hierarquia, dependendo do recuo e de como foram definidos os pares de chave-valor. Com os mapas, é possível associar pares de chave-valor. Cada chave precisa ser única, e qualquer ordem é aceita. É como um dicionário Python ou uma atribuição de variável em um script bash.

É necessário que o mapa em YAML seja resolvido antes de encerrado e, assim, poder criar um novo. Para criar um novo mapa, você aumenta o nível de recuo ou resolve o mapa anterior e inicia um adjacente.

As listas incluem valores em uma ordem específica e podem conter qualquer quantidade de itens. A sequência de uma lista começa com um traço (-) e um espaço. Ela é separada da sequência-mãe pelo recuo. Uma sequência é como uma lista Python ou uma matriz em bash ou do Perl. É possível incorporar uma lista a um mapa.

No exemplo acima, "hortaliças" e "frutas" representam itens que fazem parte da lista chamada "alimentos".

O YAML também inclui escalares, que são dados arbitrários codificados em Unicode. Eles podem ser usados como valores, incluindo strings, números inteiros, datas, números ou booleanos.

Ao criar um arquivo YAML, você precisa seguir essas regras de sintaxe e verificar se o arquivo é válido. Para isso, você pode usar o linter, uma aplicação que verifica a sintaxe de arquivos. Com o comando “yamllint”, você assegura que o arquivo YAML criado é válido antes de transmiti-lo para uma aplicação.

Abaixo temos mais um exemplo de arquivo YAML simples do registro de estudante para demonstrar as regras de sintaxe:

 #Comment: Student record #Describes some characteristics and preferences --- name: Martin D'vloper #key-value age: 26 hobbies: - painting #first list item - playing_music #second list item - cooking #third list item programming_languages: java: Intermediate python: Advanced javascript: Beginner favorite_food: - vegetables: tomatoes - fruits: citrics: oranges tropical: bananas nuts: peanuts sweets: raisins 

Ao traduzir o arquivo para Python usando a biblioteca PyYAML, obtemos a seguinte estrutura de dados:

 [ { "name": "Martin D'vloper", "age": 26, "hobbies": ["painting", "playing_music", "cooking"], "programming_languages": { "java": "Intermediate", "python": "Advanced", "javascript": "Beginner", }, "favorite_food": [ {"vegetables": "tomatoes"}, { "fruits": { "citrics": "oranges", "tropical": "bananas", "nuts": "peanuts", "sweets": "raisins", } }, ], } ]

Um dos casos de uso mais comuns do YAML é a criação de arquivos de configuração. A recomendação é que os arquivos de configuração sejam escritos em YAML, em vez do JSON. Ainda assim, esses formatos podem ser usados de maneira intercambiável na maioria dos casos, porque o YAML é mais fácil de ler e usar.

Além de ser usado no Ansible, o YAML também está nas implantações e recursos do Kubernetes.

Um benefício dessa linguagem é que os arquivos YAML podem ser adicionados a controladores de origem, como o Github, para viabilizar o rastreamento e auditoria das alterações.

Qual a diferença entre o Ansible e o Red Hat Ansible Automation Platform?

YAML no Ansible

Os Ansible Playbooks são usados para orquestrar processos de TI. Um playbook é um arquivo YAML contendo uma ou mais plays. Ele é usado para definir o estado desejado de um sistema.

Cada play pode executar uma ou mais tarefas que invocam um módulo do Ansible. Os módulos são usados para realizar tarefas de automação no Ansible. Os módulos do Ansible podem ser escritos em qualquer linguagem que retorne JSON, como Ruby, Python ou bash.

Ansible playbooks são compostos por mapas e listas. Para criar um playbook, comece com uma lista YAML que dê um nome ao play e classifique as tarefas formando uma sequência. Lembre-se de que o recuo não indica herança de lógica. É como se cada linha fosse um tipo de dados YAML (lista ou mapa).

Com os templates do YAML, os usuários do Ansible conseguem programar a automação de tarefas repetitivas sem precisar aprender uma linguagem de programação avançada. Para que não ocorram erros durante estágios críticos da operação, os desenvolvedores também podem usar o comando ansible-lint, um validador YAML para Ansible Playbooks, para identificar possíveis erros.

Com a introdução do Ansible Lightspeed with IBM Watson Code Assistant, um serviço de IA generativa, desenvolvedores podem criar conteúdo de automação para o Ansible com mais eficiência. Os usuários podem fazer uma solicitação de tarefa em inglês e obter recomendações de código YAML limpas e compatíveis para tarefas de automação que são usadas para criar Ansible Playbooks.

YAML para Kubernetes

O funcionamento do Kubernetes é baseado no estado real e no estado definido. Os objetos representam o estado de um cluster e informam ao Kubernetes como será a carga de trabalho. É possível criar recursos do Kubernetes como pods, objetos e implantações usando arquivos YAML.

Ao criar um objeto do Kubernetes, você precisa incluir especificações para definir o estado pretendido para ele. O objeto pode ser criado por meio da API do Kubernetes. A solicitação para a API precisa incluir as especificações do objeto em JSON. No entanto, é mais comum que você ofereça as informações necessárias ao kubectl como um arquivo YAML. O kubectl converte o arquivo em YAML quando faz a solicitação para à API.

Depois que você cria e define um objeto, o Kubernetes trabalha para assegurar que ele sempre exista.

Para especificar o estado desejado, os desenvolvedores ou administradores de sistemas usam arquivos YAML ou JSON enviados à API do Kubernetes. O controlador é utilizado pelo Kubernetes para analisar a diferença entre os estados definido e real no cluster.

 

Com a linguagem de automação YAML legível do

Red Hat Ansible Automation Platform, os usuários de uma organização podem compartilhar, examinar e gerenciar conteúdo de automação. A solução oferece todas as ferramentas necessárias para implementar a automação em toda a empresa, incluindo playbooks e análise de dados. Os usuários centralizam e controlam a infraestrutura de TI por meio de um painel gráfico, controle de acesso baseado em função e muito mais para reduzir a complexidade operacional.

Com uma subscrição da Red Hat, você obtém conteúdo certificado, um ecossistema de parceiros robusto, acesso a serviços de gerenciamento hospedados e suporte técnico durante todo o ciclo de vida para que suas equipes criem, gerenciem e escalem a automação por toda a empresa. Além disso, você obterá conhecimento especializado adquirido com o nosso sucesso entre milhares de clientes.

O Red Hat OpenShift é uma solução Kubernetes para empresas. Ele oferece todos os elementos adicionais que tornam o Kubernetes potente e viável para as empresas, incluindo componentes de registro, rede, telemetria, segurança, automação e serviços.

Com o Red Hat OpenShift, os desenvolvedores podem criar novas aplicações em containers para hospedá-las e implantá-las na nuvem. Tudo isso com a escalabilidade, o controle e a orquestração necessários para transformar boas ideias em negócios valiosos, de forma rápida e fácil.

Quanto tempo você pode economizar com a automação?

Responda a algumas perguntas e descubra quanto tempo você pode economizar com o uso do Ansible Automation Platform.

Leia mais

Artigo

Noções básicas do Ansible

O Ansible automatiza processos de TI como provisionamento e gerenciamento de configuração. Conheça as noções básicas do Ansible com esta introdução aos principais conceitos.

Artigo

O que é gerenciamento de processos de negócios?

Gerenciamento de processos de negócios (BPM) é a prática de modelar, analisar e otimizar processos de ponta a ponta para alcançar os objetivos estratégicos.

Artigo

Por que escolher a Red Hat para a automação?

O Red Hat Ansible Automation Platform oferece todas as ferramentas necessárias para compartilhar a automação entre as equipes e implementá-la por toda a empresa.

Leia mais sobre automação

Soluções Red Hat

Os consultores estratégicos da Red Hat fornecem uma visão geral da sua organização, analisam os desafios e ajudam a superá-los com soluções abrangentes e econômicas.

Uma plataforma com suporte completo para implementar a automação em escala, de ponta a ponta.

Conteúdo adicional

Treinamentos Red Hat

Treinamento gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Treinamento gratuito

Red Hat Ansible Automation for SAP