Translate

Mostrar mensagens com a etiqueta Tutorial YAML. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Tutorial YAML. Mostrar todas as mensagens

quarta-feira, 12 de abril de 2017

20 Laboratórios Práticos de YAML para um Padawan COBOL

 

Bellacosa Mainframe e o laboratorio pratico de yaml

☕ O Holocron do YAML

20 Laboratórios Práticos de YAML para um Padawan COBOL

☕ Introdução – A Jornada do Padawan COBOL pelo Universo YAML

Durante muitos anos, programadores COBOL desenvolveram aplicações robustas utilizando JCL, PROCs, PARMLIBs, SYSIN, tabelas de parâmetros e arquivos de configuração proprietários. Entretanto, a modernização do IBM Z aproximou o ambiente mainframe das práticas de DevOps, automação, APIs, containers, integração contínua e Inteligência Artificial. Nesse cenário, o YAML tornou-se uma das linguagens mais importantes para profissionais que desejam participar dessas iniciativas sem abandonar sua experiência no ecossistema z/OS.

A metodologia proposta neste laboratório foi construída em formato incremental, semelhante ao aprendizado de um Padawan. Os primeiros exercícios apresentam conceitos básicos, como pares chave-valor, listas e estruturas hierárquicas. Em seguida, são introduzidos recursos intermediários, incluindo âncoras, aliases, variáveis e validação. Por fim, os laboratórios avançados exploram aplicações práticas em GitHub Actions, Ansible para IBM Z, Zowe, Docker, OpenShift e pipelines DevOps.

A principal vantagem de executar os laboratórios é desenvolver familiaridade com uma tecnologia amplamente utilizada em projetos modernos envolvendo IBM Z, Cloud Pak, Kubernetes, z/OS Connect, Ansible Automation Platform e agentes de IA. O objetivo não é substituir conhecimentos tradicionais de mainframe, mas ampliá-los.

Ao concluir esta trilha, o desenvolvedor COBOL deverá ser capaz de ler, interpretar, validar e criar arquivos YAML, compreender sua utilização em processos de automação, colaborar com equipes DevOps e atuar com mais segurança em iniciativas de modernização do ambiente IBM Z, tornando-se um profissional mais versátil, atualizado e preparado para os desafios tecnológicos atuais.

Do SYSIN ao Kubernetes sem ABEND de Indentação

Uma das melhores maneiras de aprender YAML para quem vem do universo COBOL é parar de enxergá-lo como uma linguagem nova.

Pense nele como uma mistura de:

  • PARMLIB

  • SYSIN

  • PROC Cataloged

  • Copybook

  • Control Cards DFSORT

  • JCL parametrizado

Estes 20 laboratórios foram organizados em ordem crescente de dificuldade.


LAB 01 — Seu Primeiro YAML

Objetivo

Aprender chave e valor.

Arquivo

config.yaml

nome: Bellacosa
linguagem: COBOL
idade: 52

Desafio

Adicionar:

  • empresa

  • cidade

Solução

nome: Bellacosa
linguagem: COBOL
idade: 52
empresa: IBM
cidade: Itatiba

LAB 02 — Trabalhando com Listas

Objetivo

Criar arrays.

Arquivo

tecnologias:

 - COBOL
 - JCL
 - CICS

Desafio

Adicionar DB2.

Solução

tecnologias:

 - COBOL
 - JCL
 - CICS
 - DB2

LAB 03 — Estruturas Hierárquicas

Objetivo

Objetos aninhados.

usuario:

 nome: vagner

 perfil: admin

Solução

usuario:

 nome: vagner

 perfil: admin

 email: vagner@email.com

LAB 04 — Configuração de Região CICS

cics:

 regiao: CICSPRD

 aplid: CICS01

 porta: 32000

Adicionar SIT.

Solução

sit: DFHSIT01

LAB 05 — Simulando DSNs

datasets:

 production:

   cobol: PROD.COBOL

   load: PROD.LOAD

Desafio

Criar TEST.


Solução

datasets:

 test:

   cobol: TEST.COBOL

   load: TEST.LOAD

LAB 06 — Booleanos

racf:

 enabled: true

 audit: false

LAB 07 — Datas

backup:

 data: 2026-06-27

LAB 08 — Comentários

# Região crítica


cics:

 region: CICSPRD

LAB 09 — Strings Multilinhas

descricao: |

 Sistema Bancário


 Batch


 Online


 API

LAB 10 — Folded Style

descricao: >

 COBOL

 CICS

 DB2

Resultado

Linha única.


LAB 11 — YAML para Copybook

copybook:


 nome: CLIENTE


 campos:



   - nome: CPF

     tamanho: 11


   - nome: NOME

     tamanho: 40

LAB 12 — Ambiente DEV TEST PROD

ambientes:



 DEV:


   db2: DSNDEV




 TEST:


   db2: DSNTEST




 PROD:


   db2: DSNPROD

LAB 13 — Âncoras

Objetivo

Evitar duplicação.

padrao: &cfg


 memoria: 4GB


 cpu: 2

Servidor

server1:


 <<: *cfg

Solução

server2:


 <<: *cfg

LAB 14 — Alias

base: &db


 tipo: DB2


 versao:13



db2a:


 <<: *db



db2b:


 <<: *db

LAB 15 — Variáveis

host: ${HOST}

Desafio

Criar USER.

Solução

usuario: ${USER}

LAB 16 — GitHub Actions

Objetivo

Criar pipeline.

name: Build

Solução

jobs:


 compile:



  runs-on: ubuntu

LAB 17 — Docker Compose

services:



 db2:


   image: ibmcom/db2

Adicionar COBOL.


Solução

cobol:


 image: ibm-z

LAB 18 — Ansible para IBM Z

Objetivo

Submeter JOB.

- hosts: zos




 tasks:



 - name: Submit



   zos_job_submit:



     src: JOB1

Desafio

Copiar membro.


Solução

- name: Copy



  zos_copy:



    src: TESTE



    dest: USER.COBOL(TESTE)

LAB 19 — Zowe CLI

Objetivo

Criar perfil.

profiles:



 zosmf:



   host: zos.company.com



   port:443

Adicionar usuário.

Solução

user: padawan

LAB 20 — Projeto Final

Construindo um Mini Catálogo Mainframe

Objetivo

Criar um arquivo único representando uma aplicação COBOL moderna.


Arquivo

catalogo.yaml

aplicacao:

 nome: COBOLBANK

 versao: 1.0


 owner: Bellacosa




ambiente:


 tipo: PROD




db2:


 subsystem: DSN1


 versao:13




cics:


 regiao: CICSPRD




mq:


 queue: COBOL.REQUEST




datasets:


 loadlib: PROD.LOAD


 source: PROD.COBOL




pipeline:


 ferramenta: Tekton




ansible:


 colecao:


   ibm.ibm_zos_core




usuarios:



 - nome: sysprog


   perfil: SYSADM



 - nome: padawan


   perfil: DEV




ia:


 assistente:


   watsonx



 automacao:


   true

Desafio Mestre Bellacosa

Ao concluir os 20 laboratórios, o Padawan COBOL será capaz de:

✅ Ler YAML sem medo
✅ Criar playbooks Ansible para IBM Z
✅ Configurar Zowe CLI
✅ Entender pipelines GitHub Actions
✅ Trabalhar com OpenShift e Kubernetes
✅ Consumir arquivos YAML usados por agentes de IA
✅ Mapear configurações YAML para conceitos familiares de JCL, PARMLIB, PROCs e SYSIN
✅ Participar de iniciativas DevOps em IBM Z sem abandonar suas raízes COBOL.

Missão bônus: tente converter um membro PARMLIB, um PROC catalogado ou um conjunto de parâmetros de uma aplicação COBOL em YAML. É um excelente exercício para perceber que, em muitos casos, YAML é apenas um velho conhecido do mainframe usando roupas novas. ☕🚀


quarta-feira, 1 de março de 2017

☕YAML : Como um Padawan COBOL Pode Aprender a Conversar com DevOps, Kubernetes e IA Sem Precisar Decorar um Novo JCL

 

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". ☕🚀