| Bellacosa Mainframe apresenta o YAML |
☕ O Holocron do YAML
Como um Padawan COBOL Pode Aprender a Conversar com DevOps, Kubernetes e IA Sem Precisar Decorar um Novo JCL
Existe um momento na jornada de todo Padawan COBOL em que ele percebe uma estranha verdade do universo corporativo.
Durante décadas, aprendemos a falar linguagens sagradas.
COBOL.
JCL.
REXX.
CLIST.
DFSORT.
IDCAMS.
Parmlibs.
PROCs.
SYSIN.
Control Cards.
E então, certo dia, aparece um desenvolvedor de tênis colorido dizendo:
— Só coloca no YAML.
E o Padawan COBOL pergunta:
— No quê?
— YAML.
— É um utilitário da IBM?
— Não.
— É um APF Authorized?
— Não.
— É um membro do PARMLIB?
— Não.
— Então por que todo mundo está usando isso?
A resposta é simples.
Porque YAML se tornou um dos idiomas universais da automação moderna.
O que é YAML?
YAML significa:
YAML Ain't Markup Language
Antigamente significava:
Yet Another Markup Language
Mas os criadores perceberam uma pequena ironia.
YAML não é exatamente uma linguagem de marcação como XML.
Ela é uma linguagem de serialização de dados.
Seu objetivo principal é representar estruturas de dados de forma extremamente legível para humanos.
Imagine um SYSIN bonito.
Ou um membro PARMLIB que alguém resolveu deixar elegante.
Origem do YAML
YAML nasceu em 2001.
Criadores:
Clark Evans
Brian Ingerson
Oren Ben-Kiki
A inspiração veio de várias tecnologias.
XML
SGML
Python
Perl
Configurações INI
A ideia era simples:
Criar algo que fosse:
Menos verboso que XML
Mais organizado que INI
Mais amigável que JSON
Mais legível que arquivos proprietários
Eles conseguiram.
Evolução das versões
YAML 1.0
2001
Primeira implementação.
YAML 1.1
2005
Grande expansão.
Mais tipos de dados.
Booleanos flexíveis.
Exemplo:
yes
no
on
off
Todos eram interpretados como booleanos.
Isso gerou muitos problemas.
YAML 1.2
2009
Versão usada atualmente.
Maior compatibilidade com JSON.
Booleanos ficaram:
true
false
mais previsíveis.
O conceito principal
YAML é apenas dados.
Nada de lógica.
Nada de loops.
Nada de IF.
Ele descreve objetos.
Como um DSECT.
Como um Copybook.
Como um catálogo.
Como um PROC parametrizado.
Estrutura básica
Chave valor
nome: Bellacosa
idade: 52
profissao: Sysprog
Lista
animes:
- ReZero
- Konosuba
- Overlord
Objetos
usuario:
nome: Vagner
perfil: Champion
stack:
- COBOL
- CICS
- DB2
Exemplo equivalente em JSON
JSON:
{
"nome":"Bellacosa",
"idade":52
}
YAML
nome: Bellacosa
idade: 52
Muito mais agradável.
A regra mais importante
Espaços importam
Não existe:
BEGIN
END
Não existe:
PERFORM
END-PERFORM
Existe indentação.
Correto:
usuario:
nome: Bellacosa
idade:52
Errado
usuario:
nome: Bellacosa
O parser explode.
Padawan aprende isso em cinco minutos.
Veterano aprende isso durante uma madrugada inteira.
Comentários
# Ambiente produção
server:
host: z17.ibm.com
Strings
nome: COBOL
ou
nome: "COBOL"
Multilinhas
descricao: |
Curso Mainframe
COBOL
CICS
DB2
Resultado:
Texto preservado.
Dobrando linhas
descricao: >
Curso COBOL
Curso CICS
Curso DB2
Resultado:
Uma única linha.
Exemplo prático passo a passo
Laboratório 1
Criar arquivo.
config.yaml
ambiente: DEV
sistema: COBOLBANK
database:
tipo: DB2
versao: 13
cics:
regiao: CICSPRD
usuarios:
- nome: Bellacosa
perfil: SYSADM
- nome: Padawan
perfil: DEV
Ler em Python
import yaml
with open("config.yaml") as f:
dados=yaml.safe_load(f)
print(dados)
Resultado:
Dicionário Python.
Para que serve?
Praticamente tudo.
Kubernetes
Deployment
Pod
Service
Ingress
Secrets
Docker Compose
services:
cobol:
image: ibm-z
GitHub Actions
CI/CD
name: Build
jobs:
compile:
Ansible
Muito usado em IBM Z.
tasks:
- name: Submit Job
zos_job_submit:
YAML no Mainframe
Aqui começa a parte divertida.
Hoje YAML está presente em:
Ansible for IBM Z
Coleções IBM.
Automation.
Provisionamento.
Zowe
Perfis.
Plugins.
CLI.
OpenShift
IBM Cloud Pak.
z/OS Connect
Configurações.
Tekton Pipelines
CI/CD Mainframe.
IBM Developer for z/OS
Integrações modernas.
Exemplo Ansible
- hosts: zos
tasks:
- name: Copiar membro
zos_copy:
src: TESTE
dest: USER.COBOL(TESTE)
Padawan COBOL olha isso e pensa:
"Parece um PROC misturado com JSON."
Sim.
É exatamente isso.
Vantagens
Legibilidade
Muito melhor que XML.
Menos caracteres
XML:
500 linhas.
YAML:
100 linhas.
Fácil aprendizado
Padawan aprende em poucas horas.
Excelente para automação
DevOps.
IaC.
Pipelines.
Cloud.
Mainframe moderno.
Desvantagens
Espaços
Maior inimigo.
Uma tabulação errada.
Tudo quebra.
Erros difíceis
Parser informa:
Expected block mapping
Obrigado parser.
Não ajudou em nada.
Arquivos gigantes
Pipeline enorme.
5000 linhas.
Fica complicado.
Truques de Jedi
Âncoras
padrao: &base
memoria: 4GB
server1:
<<: *base
Reutilização.
Muito elegante.
Variáveis
host: ${HOST}
Referências
perfil: *base
Curiosidades
Muita gente pronuncia:
Yamel
Iamel
Yah-mal
Os criadores aceitam qualquer uma.
Easter Eggs
Booleanos famosos do YAML 1.1
on
off
yes
no
Podiam gerar bugs catastróficos.
Exemplo:
Senha:
password: no
Parser:
False
Administrador:
ABEND S0C4 emocional.
Outro Easter Egg.
YAML é tecnicamente um superconjunto de JSON.
Isto funciona:
{
"nome":"Bellacosa"
}
É YAML válido.
Pouca gente sabe disso.
Dicas para Padawans COBOL
Pense em YAML como um PARMLIB moderno
PARMLIB → YAML
JCL PROC → YAML
Control Cards → YAML
Copybook → YAML
A curva de aprendizado fica muito menor.
Use validadores
Ferramentas excelentes:
yamllint
VSCode YAML Extension
IntelliJ YAML Plugin
Red Hat YAML Support
Evita noites em SDSF procurando um erro que, desta vez, não foi um IEC161I, um JCL ERROR ou um RACF 913, mas simplesmente dois espaços a menos.
O Conselho do Mestre Bellacosa
O Padawan COBOL que aprende YAML não está abandonando o IBM Z.
Está aprendendo uma nova língua diplomática do universo corporativo.
O profissional do futuro provavelmente continuará compilando programas COBOL, analisando SMF, ajustando CICS e executando REORG no Db2.
Mas também abrirá um repositório Git, ajustará um pipeline Tekton, criará um playbook Ansible, configurará um ambiente OpenShift e conversará com agentes de IA que utilizam arquivos YAML para descrever fluxos, ferramentas e automações.
No fim das contas, YAML talvez seja apenas isto:
O SYSIN que decidiu fazer intercâmbio com a nuvem, frequentar reuniões de DevOps e voltar para casa falando Kubernetes com sotaque de Ansible.
E, curiosamente, muitos Sysprogs veteranos descobrem que já entendiam YAML há anos. Apenas o chamavam por outros nomes:
PARMLIB, PROC, SYSIN, COPYBOOK ou simplesmente "aquele membro que ninguém ousa mexer em produção numa sexta-feira à tarde". ☕🚀
Sem comentários:
Enviar um comentário