Visão geral
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.
Sintaxe do YAML
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.
Exemplo de sintaxe do YAML
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", } }, ], } ]
Casos de uso do YAML
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.
Por que escolher a Red Hat?
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.