Jump to section

O que é YAML?

Copiar URL

Red Hat Ansible Automation Platform: Guia Prático

A automação ajuda empresas a operar com mais eficiência e rapidez desde os tempos da Revolução Industrial. Dê início ou prosseguimento à jornada de automação com este guia prático da Red Hat.

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. 

YAML é uma linguagem de programação famosa porque foi desenvolvida 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 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 do 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 jogo da velha.

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 (...).  

Este é um exemplo bem básico de um arquivo em 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 resolver um mapa no YAML antes de encerrá-lo e 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, "vegetais" e "frutas" representam itens que são 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 estas regras de sintaxe e ter um 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.

Veja um exemplo de arquivo YAML simples de registro de um aluno que demonstra 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.

Os 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 no 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. E isso permite que os usuários centralizem e controlem a infraestrutura de TI por meio de um dashboard 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ê tem acesso a conteúdo certificado, um ecossistema de parceiros robusto, 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. Tudo isso com o conhecimento especializado que acumulamos ao trabalhar com sucesso junto a 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 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

Red Hat Ansible Automation Platform: Guia Prático

A automação ajuda empresas a operar com mais eficiência e rapidez desde os tempos da Revolução Industrial. Dê início ou prosseguimento à jornada de automação com este guia prático da Red Hat.

Ebook

A empresa automatizada: unifique pessoas e processos

VÍDEO - THE SOURCE TV

Automação

A automação é fundamental para acelerar a entrega de serviços e minimizar o risco de erro humano

Casos de sucesso de cliente

Nossos clientes transformam o mundo com as tecnologias open source. Conheça suas histórias. 

Treinamentos Red Hat

Treinamento gratuito

Ansible Essentials: Simplicity in Automation Technical Overview

Treinamento gratuito

Red Hat Ansible Automation for SAP

Hub de aprendizagem

Material especializado e ferramentas para ajudar você a usar o Red Hat Ansible Automation Platform.

Labs

Aprenda a usar o Red Hat Ansible Automation Platform na prática com esses laboratórios individualizados.

TREINAMENTO

Red Hat Enterprise Linux Automation with Ansible | RH294