Translate

Mostrar mensagens com a etiqueta Playbook. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Playbook. Mostrar todas as mensagens

sábado, 30 de novembro de 2024

Ansible for IBM Z & LinuxONE Foundations Quando um Programador COBOL Descobre que Também Pode Automatizar o Mainframe

 

Bellacosa Mainframe apresenta ansible para mainframers

☕ Um Café no Bellacosa Mainframe

Ansible for IBM Z & LinuxONE Foundations

Quando um Programador COBOL Descobre que Também Pode Automatizar o Mainframe

"Durante décadas, os profissionais de Mainframe aprenderam que havia uma maneira 'correta' de administrar um ambiente IBM Z: abrir uma sessão TSO, navegar pelo ISPF, editar datasets, submeter JCLs, acompanhar o SDSF e executar comandos manualmente. Funcionava muito bem... até que a escala dos sistemas cresceu. Hoje, um único ambiente pode possuir milhares de datasets, centenas de aplicações, dezenas de LPARs e pipelines de integração contínua. É nesse momento que surge uma pergunta inevitável: será que ainda faz sentido repetir manualmente tarefas que um computador pode executar sozinho?"

Essa pergunta é exatamente a razão da existência do Ansible.

Se você é um programador COBOL Júnior, talvez imagine que Ansible seja uma ferramenta exclusiva para administradores Linux ou profissionais DevOps. Na realidade, ela está se tornando uma das tecnologias mais importantes para qualquer profissional que trabalhe com IBM Z.

Neste artigo vamos entender, passo a passo, como o Ansible funciona, como ele conversa com o z/OS, quais componentes fazem parte da arquitetura e como um desenvolvedor COBOL pode utilizá-lo para automatizar tarefas do dia a dia.

Prepare seu café. Hoje vamos descobrir que YAML pode ser tão importante quanto JCL.


O problema que o Ansible veio resolver

Imagine que seu gerente peça para criar o mesmo ambiente em dez LPARs diferentes.

Manual seria algo parecido com isto:

  • abrir TSO;

  • acessar ISPF;

  • criar datasets;

  • copiar membros COBOL;

  • copiar PROC;

  • enviar JCL;

  • acompanhar o JOB;

  • repetir tudo novamente.

Agora imagine repetir isso cem vezes.

Ou mil vezes.

É exatamente aqui que nasce a automação.

Ao invés de repetir procedimentos, descrevemos o resultado esperado.

O computador faz o restante.


Uma comparação que todo programador COBOL entende

Imagine um JCL.

Você não diz ao sistema:

"Abra um DD, aloque espaço, carregue buffers..."

Você apenas escreve:

//STEP1 EXEC PGM=IEFBR14

O z/OS sabe como executar.

O Ansible segue exatamente essa filosofia.

Você não escreve scripts enormes.

Você descreve o estado desejado.


O que é o Ansible?

Ansible é uma plataforma de automação criada para executar tarefas repetitivas de maneira segura e previsível.

Ele permite automatizar:

  • instalação de softwares;

  • deploy de aplicações;

  • criação de datasets;

  • envio de JCL;

  • execução de comandos MVS;

  • administração de USS;

  • configuração de servidores Linux;

  • configuração de IBM Z;

  • administração de LinuxONE.

Tudo utilizando arquivos YAML extremamente simples.


Infrastructure as Code

Esse talvez seja o conceito mais importante de todo o artigo.

Durante décadas a infraestrutura era documentada em Word.

Algo parecido com:

Abra ISPF

Entre na opção 3.2

Crie um Dataset

Configure FB

LRECL 80

BLKSIZE 27920

O problema?

Se alguém esquecer um passo...

Tudo quebra.

Hoje fazemos diferente.

A infraestrutura vira código.

- name: Criar Dataset
  zos_data_set:
      name: USER.TEST
      type: seq
      state: present

Esse pequeno arquivo substitui páginas inteiras de documentação.


O Control Node

Todo ambiente Ansible possui um cérebro.

Chamado de Control Node.

Ele normalmente é um servidor Linux.

É nele que ficam:

  • Playbooks

  • Inventário

  • Roles

  • Collections

  • Variáveis

  • Arquivos YAML

Ele nunca precisa estar dentro do Mainframe.

Ele apenas envia instruções.


Managed Nodes

São as máquinas administradas.

Podem ser:

  • Linux

  • Windows

  • IBM Z

  • LinuxONE

  • AIX

  • z/OS

Pense nelas como os "clientes" do Control Node.


Como o Ansible conversa com o Mainframe?

Essa é uma das perguntas mais comuns.

Muitos imaginam que exista algum protocolo proprietário.

Na prática existem três formas principais.

1. SSH

A mais utilizada.

Ansible

↓

SSH

↓

USS

↓

z/OS

O Ansible acessa o Unix System Services e executa comandos.


2. z/OSMF

O z/OSMF disponibiliza APIs REST.

Então o fluxo fica:

Ansible

↓

HTTPS

↓

z/OSMF

↓

Serviços REST

↓

Mainframe

3. ZOAU

Talvez o componente mais importante.

ZOAU significa:

IBM Z Open Automation Utilities.

Ele oferece APIs para:

  • datasets

  • jobs

  • console

  • USS

  • comandos MVS

  • VSAM

É ele que faz a "ponte" entre o mundo moderno e o z/OS.


O que é YAML?

YAML é a linguagem utilizada pelo Ansible.

Ela foi criada para ser extremamente legível.

Exemplo:

nome: Bellacosa

idade: 52

linguagens:

 - COBOL

 - PL/I

 - JCL

Perceba que praticamente parece português.


Atenção com a indentação

Esse é o erro número um dos iniciantes.

YAML usa espaços.

Nunca TAB.

Errado:

-name:

Correto:

- name:

Um único espaço errado pode impedir toda a execução.


O Inventário

O Inventário informa onde estão os servidores.

Exemplo:

[zos]

LPAR1

LPAR2

LPAR3

[linux]

WEB01

WEB02

Depois disso basta dizer:

hosts: zos

E todas as máquinas do grupo receberão a mesma automação.


O conceito de Playbook

Um Playbook é o equivalente ao nosso JCL.

Ele organiza tarefas.

Imagine:

Criar Dataset

↓

Copiar Programa

↓

Enviar Compile

↓

Executar Bind

↓

Executar Teste

Tudo isso pode estar em um único arquivo YAML.


Primeiro Playbook

---
- hosts: zos

  tasks:

  - name: Criar Dataset

    zos_data_set:

      name: USER.COBOL.TESTE

      type: seq

      state: present

Simples.

Legível.

Reproduzível.


Entendendo Task por Task

Cada Task representa uma ação.

Exemplo:

Task 1

Criar Dataset

↓

Task 2

Copiar Programa

↓

Task 3

Submeter JCL

↓

Task 4

Consultar Resultado

É exatamente como um fluxo Batch.


O conceito de Módulos

Cada Task utiliza um módulo.

Exemplos famosos:

copy

file

package

command

shell

No IBM Z existem módulos especializados.

Como:

zos_data_set

zos_copy

zos_fetch

zos_job_submit

zos_operator

zos_ping

Criando um Dataset

- name: Criar Dataset

  zos_data_set:

      name: BELLA.TESTE

      type: pds

      state: present

Resultado:

Caso exista:

Nada acontece.

Caso não exista:

Ele será criado.


Esse comportamento possui um nome

Idempotência.

É uma palavra difícil.

Mas um conceito simples.

Executar:

Playbook

↓

100 vezes

Produzirá exatamente o mesmo ambiente.

Não cria datasets duplicados.

Não reinstala componentes desnecessariamente.

Não destrói configurações.


Copiando um programa COBOL

- name: Copiar Fonte

  zos_copy:

      src: HELLO.cbl

      dest: USER.COBOL(HELLO)

Muito parecido com copiar um arquivo no Windows.


Submetendo um JOB

- name: Compilar

  zos_job_submit:

      src: USER.JCL(COMPILE)

O JOB é enviado automaticamente ao JES.


Consultando o resultado

Depois podemos verificar o retorno.

CC 0000

↓

Sucesso

CC 0004

↓

Warning

CC 0008

↓

Erro

Sxxx

↓

Abend

Imagine integrar isso diretamente a um pipeline DevOps.


Estrutura recomendada de um projeto

Projeto

inventories/

roles/

playbooks/

group_vars/

host_vars/

collections/

README.md

Essa organização facilita manutenção e reutilização.


Collections

As Collections são bibliotecas prontas.

A principal para IBM Z é:

ibm.ibm_zos_core

Ela disponibiliza dezenas de módulos específicos para o z/OS.

Você não precisa reinventar a roda.


Exemplo completo

---
- hosts: zos

  collections:

    - ibm.ibm_zos_core

  tasks:

  - name: Criar Dataset

    zos_data_set:

      name: BELLA.SOURCE

      type: pds

      state: present

  - name: Copiar Programa

    zos_copy:

      src: HELLO.cbl

      dest: BELLA.SOURCE(HELLO)

  - name: Executar Compile

    zos_job_submit:

      src: BELLA.JCL(COMPILE)

Perceba como o fluxo inteiro cabe em poucas linhas.


Relacionando com o dia a dia do COBOL

Imagine que um desenvolvedor novo entre na equipe.

Manual:

  • criar datasets;

  • copiar fontes;

  • copiar PROC;

  • copiar macros;

  • configurar ambiente.

Com Ansible:

ansible-playbook onboarding.yml

Em poucos minutos o ambiente está pronto.


Onde entra o Git?

Os Playbooks são armazenados em um repositório Git.

Isso significa:

  • histórico;

  • auditoria;

  • rollback;

  • revisão por pares;

  • integração com CI/CD.

Infraestrutura passa a evoluir exatamente como o código COBOL.


Integração com DevOps

O fluxo moderno normalmente funciona assim:

Git

↓

Pull Request

↓

Pipeline

↓

Ansible

↓

IBM Z

↓

Compile

↓

Teste

↓

Deploy

Observe que o desenvolvedor continua escrevendo COBOL.

Quem automatiza todo o restante é o Ansible.


O futuro do programador COBOL

Há alguns anos bastava conhecer:

  • COBOL;

  • JCL;

  • CICS;

  • DB2.

Hoje o mercado também valoriza conhecimentos em:

  • Git;

  • YAML;

  • APIs REST;

  • DevOps;

  • Docker (conceitos);

  • Zowe;

  • VS Code;

  • Ansible.

Isso não significa abandonar o COBOL.

Significa ampliar seu conjunto de ferramentas.


Erros comuns dos iniciantes

  1. Misturar TAB e espaços no YAML.

  2. Não organizar o inventário.

  3. Executar playbooks diretamente em produção sem homologação.

  4. Ignorar o conceito de idempotência.

  5. Não versionar os playbooks no Git.

  6. Esquecer de validar os retornos dos JOBs.

  7. Criar playbooks gigantes em vez de reutilizar Roles e Collections.

Evitar esses erros desde o início torna a automação muito mais confiável.


Conclusão

Durante décadas aprendemos que administrar um Mainframe significava conhecer profundamente TSO, ISPF, JCL, JES2, RACF, SDSF e inúmeros comandos específicos. Esses conhecimentos continuam indispensáveis. O Ansible não substitui essa experiência; ele a potencializa.

Pense nele como um novo "JCL da infraestrutura". Em vez de automatizar apenas a execução de programas Batch, ele automatiza ambientes inteiros, permitindo criar datasets, copiar programas, submeter JCLs, consultar resultados, configurar servidores e integrar o IBM Z aos modernos pipelines de DevOps.

Para o programador COBOL Júnior, aprender Ansible é investir em uma habilidade que conecta o mundo tradicional do Mainframe às práticas atuais de automação. Você continuará escrevendo programas COBOL, entendendo CICS, DB2 e JCL, mas também será capaz de entregar soluções mais rápidas, reproduzíveis e confiáveis.

No Bellacosa Mainframe, costumamos dizer que o futuro do IBM Z não está em substituir tecnologias consolidadas, mas em integrá-las ao que há de mais moderno. O Ansible representa exatamente essa filosofia: respeitar décadas de robustez do Mainframe enquanto abraça a automação, a colaboração e a infraestrutura como código. Quem dominar esses dois universos estará preparado para construir a próxima geração de aplicações corporativas sobre a plataforma mais confiável do mercado.


domingo, 8 de janeiro de 2017

Como um Padawan COBOL Pode Descobrir que Existe uma Forma de Administrar Milhares de Servidores sem Escrever um JCL para Cada Um Deles

Bellacosa Mainframe apresenta o Ansible


☕ O Holocron do Ansible

Como um Padawan COBOL Pode Descobrir que Existe uma Forma de Administrar Milhares de Servidores sem Escrever um JCL para Cada Um Deles

Existe um momento na jornada de todo Padawan COBOL em que ele percebe uma verdade desconfortável.

Os servidores estão se multiplicando.

Primeiro era apenas um LPAR.

Depois vieram dois ambientes.

DEV.

QA.

HML.

PRD.

DR.

Cloud.

Linux.

Windows.

Containers.

OpenShift.

Z/Linux.

zCX.

z/OS Connect.

MQ.

CICS.

DB2.

E de repente alguém faz uma pergunta aparentemente simples.

— Bellacosa... como atualizamos 800 servidores?

O Padawan pensa.

"Talvez um REXX."

"Talvez um script."

"Talvez um FTP."

"Talvez um JCL."

O Sysprog veterano apenas sorri.

Abre uma caneca de café.

E responde:

— Existe uma ferramenta chamada Ansible.

E ela parece magia.

Mas não é magia.

É apenas automação feita direito.


O que é o Ansible?

Ansible é uma plataforma de automação Open Source criada para executar tarefas administrativas em múltiplos sistemas de maneira centralizada.

Seu objetivo é simples:

Fazer uma única ação e replicá-la em centenas ou milhares de máquinas.

Por exemplo:

Instalar software.

Criar usuários.

Alterar permissões.

Subir serviços.

Executar scripts.

Aplicar patches.

Configurar firewalls.

Gerenciar cloud.

Criar containers.

Automatizar IBM Z.

Em outras palavras:

"Ansible é o equivalente moderno do JCL PROC para infraestrutura."

Se você já executou:

//STEP1 EXEC PROC=COBOLCOMP

Você já entendeu metade da filosofia do Ansible.


Origem do Ansible

O Ansible nasceu em 2012.

Criador:

Michael DeHaan.

O mesmo desenvolvedor que participou do projeto Cobbler.

A ideia era resolver problemas encontrados em ferramentas da época.

Chef

Puppet

CFEngine

Todas eram poderosas.

Mas tinham um problema.

Precisavam instalar agentes.

E agentes são chatos.

Consomem memória.

Precisam atualizar.

Quebram.

Geram vulnerabilidades.

Michael pensou:

"Por que não usar apenas SSH?"

Nascia o Ansible.

Em 2015 a Red Hat comprou a empresa.

Em 2019.

A IBM comprou a Red Hat.

Hoje Ansible faz parte do ecossistema IBM.

Padawan COBOL:

Sim.

Você pode automatizar o mainframe usando uma tecnologia que pertence ao mesmo guarda-chuva corporativo do IBM Z.


Versões

Atualmente temos:

Ansible Community

Open Source

Red Hat Ansible Automation Platform

Comercial

AWX

Projeto upstream

Ansible Navigator

CLI moderna

Automation Hub

Coleções certificadas

EDA

Event Driven Automation


O segredo do Ansible

Ele funciona usando três componentes.

Inventory

Lista de servidores.

hosts.ini

linux01
linux02
linux03

ou

all:

 children:

  prod:

   hosts:

     db01:



Playbook

É o JCL do Ansible.

Arquivo YAML.

Exemplo:

---
- hosts: all

  tasks:

   - name: Criar usuário

     user:

       name: padawan

       state: present

Modules

São programas prontos.

Exemplos.

copy

service

yum

apt

shell

uri

zos_job_submit

zos_copy

zos_data_set

Existem milhares.


Por que YAML?

Porque YAML é legível.

Exemplo.

name: Bellacosa
idade: 52
profissao: Sysprog Jedi

Até um gerente consegue ler.

E isso assusta alguns desenvolvedores.


Instalação

Linux

sudo dnf install ansible

Ubuntu

sudo apt install ansible

Pip

pip install ansible

Verificar

ansible --version

Exemplo.

ansible [core 2.19]


Primeiro laboratório

Arquivo.

inventory.ini

localhost

Playbook.

hello.yml

---
- hosts: localhost


 tasks:


 - name: Mostrar mensagem

   debug:

      msg: "Olá Padawan"

Executar.

ansible-playbook hello.yml

Saída.

TASK

Olá Padawan


ok=1

Missão cumprida.


Exemplo real

Instalar Apache.

---
- hosts: webservers


 tasks:


 - name: Instalar


   yum:

     name: httpd

     state: present



 - name: Iniciar


   service:


      name: httpd

      state: started



100 servidores.

1 comando.

Fim.


Ansible no Mainframe

Aqui a coisa fica divertida.

IBM criou a coleção.

IBM Z Ansible Collection.

Módulos.

zos_copy

zos_data_set

zos_job_submit

zos_operator

zos_tso_command

zos_ping

zos_fetch


Criando dataset

- name: criar


 zos_data_set:



   name: BELLA.TESTE


   type: seq


   state: present

Submeter JCL

- name: submit



 zos_job_submit:


    src: teste.jcl

Executar comando

zos_operator:


 cmd: D IPLINFO

Casos reais

Deploy COBOL.

Copiar load modules.

Atualizar PROCLIB.

Executar REORG DB2.

Backup VSAM.

Verificar CICS.

Consultar JES2.

Gerenciar USS.

Criar usuários RACF.

Automatizar IPL checks.


Vantagens

Sem agentes

SSH.

WinRM.

z/OS.

Pronto.


Fácil aprender

Muito menos complexo que Puppet.


Reutilização

Roles.

Templates.

Collections.


Infraestrutura como Código

Git.

GitHub.

GitLab.

Azure DevOps.


Auditoria

Tudo fica registrado.


Desvantagens

SSH lento.

Em milhares de máquinas.


YAML depende de espaços.

Erro clássico.

tasks:
-name:



Kaboom.


Debug pode ser difícil.


Curva de aprendizado.

Jinja2.

Templates.

Loops.

Facts.


Truques Jedi

Dry Run

--check

Não altera nada.


Diff

--diff

Mostra mudanças.


Tags

tags:

 - db2

Executar.

ansible-playbook play.yml --tags db2

Vault

Senhas criptografadas.

ansible-vault encrypt

Facts

debug:


 var=ansible_hostname

Curiosidades

Ansible originalmente usava vacas ASCII.

Existe.

cowsay

Saída.

 __________________

< Deploy completo >

 ------------------

        \   ^__^

         \  (oo)\_______



Pode trocar por animais.

Dragon.

Tux.

Moose.

Daemon.


Easter Eggs

Execute.

ansible all -m ping

Não é ICMP.

É um módulo.

Resposta.

pong

Outra curiosidade.

Existe um módulo chamado.

debug

Que é provavelmente o módulo mais utilizado do planeta.


Ansible e o Futuro do IBM Z

O IBM Z moderno está cada vez mais próximo das práticas DevOps.

Git.

Pipelines.

OpenShift.

Terraform.

Zowe.

Ansible.

O Sysprog de 2030 provavelmente não ficará digitando comandos repetitivos no SDSF.

Ele terá um repositório Git.

Um pipeline.

Um Playbook.

E um botão chamado:

Deploy em Produção

E talvez seja justamente isso que assuste alguns veteranos.

Porque durante décadas aprendemos que administrar infraestrutura exigia decorar centenas de comandos obscuros.

Ansible propõe outra filosofia.

Descreva o estado desejado.

A ferramenta cuida do restante.

É quase como ensinar um aprendiz Jedi.

Você não diz exatamente como mover cada músculo do braço.

Você apenas diz:

— Pegue o sabre.

E a Força faz o resto.

No universo do IBM Z, Ansible não substitui o conhecimento profundo de JES2, RACF, CICS, DB2 ou z/OS.

Mas permite que um Padawan COBOL transforme esse conhecimento em automação reproduzível, auditável e compartilhável.

E talvez este seja o maior ensinamento do Holocron do Ansible:

"Um Sysprog poderoso não é aquele que executa mil comandos por dia. É aquele que ensina uma máquina a executá-los corretamente para sempre."

Posso também criar a continuação "O Holocron do Ansible para IBM Z – 20 laboratórios práticos para Padawans COBOL", com exercícios usando zos_job_submit, zos_copy, zos_operator, RACF, CICS e DB2.