Translate

sábado, 16 de maio de 2020

Ansible sem Mistérios no Windows

Bellacosa Mainframe e o ansible sem misterios no Windows


☕ Um Café no Bellacosa Mainframe

Ansible sem Mistérios no Windows

O guia do Programador COBOL Padawan para automatizar Linux, Apache, Java, WebSphere e IBM Z sem abandonar o legado

Existe um momento na carreira de todo Programador COBOL em que ele percebe uma verdade desconfortável:

o programa pode estar perfeito, mas existe um universo inteiro entre o código-fonte e a produção.

É preciso compilar.

Fazer o link-edit.

Copiar módulos de carga.

Executar testes.

Atualizar bibliotecas.

Submeter JCL.

Configurar servidores.

Alterar arquivos.

Reiniciar serviços.

Verificar logs.

Validar portas.

Confirmar se a aplicação voltou a responder.

E, muitas vezes, repetir tudo isso em desenvolvimento, homologação, contingência e produção.

Durante décadas, essas tarefas foram realizadas por meio de procedimentos escritos em documentos, planilhas, scripts isolados e valiosos conhecimentos armazenados na memória de profissionais veteranos.

Funcionava?

Sim.

Mas também criava uma perigosa dependência de operações manuais.

Um comando digitado incorretamente, um membro copiado para a biblioteca errada ou uma configuração esquecida poderia transformar uma implantação aparentemente simples em um incidente digno de um alerta vermelho na ponte da USS Enterprise.

É justamente nesse espaço que entra o Ansible.

Ele não veio para substituir COBOL, JCL, CICS, Db2, IMS, Linux, Java ou WebSphere.

Ele veio para orquestrar essas tecnologias, transformando procedimentos manuais em automações documentadas, repetíveis, versionáveis e auditáveis.

Portanto, sente-se na cadeira de comando, Padawan. Neste artigo construiremos um laboratório gratuito no Windows, instalaremos o Ansible, criaremos nossos primeiros Playbooks, configuraremos Apache e Java e entenderemos como essa ferramenta se conecta ao universo do IBM Z.


1. Afinal, o que é o Ansible?

O Ansible é uma tecnologia de automação de TI capaz de executar tarefas como:

  • configuração de servidores;

  • instalação de programas;

  • implantação de aplicações;

  • provisionamento de infraestrutura;

  • execução de comandos;

  • administração de serviços;

  • automação de redes;

  • integração de ambientes híbridos;

  • orquestração de processos com várias etapas.

Em vez de um administrador acessar manualmente cada máquina, o Ansible recebe uma descrição do que deve ser feito e executa essas ações nos equipamentos selecionados.

A documentação oficial define o Ansible como uma tecnologia aberta capaz de descrever e automatizar ambientes de TI, desde pequenos laboratórios domésticos até infraestruturas corporativas de grande escala. (Ansible Docs)

Imagine que uma empresa tenha:

  • 40 servidores Linux;

  • 12 servidores Apache;

  • 8 instâncias de WebSphere;

  • 4 ambientes Java;

  • um IBM Z;

  • dezenas de regiões CICS;

  • centenas de bibliotecas e jobs.

Sem automação, alguém precisaria entrar máquina por máquina para realizar as alterações.

Com Ansible, podemos escrever uma instrução como:

- name: Garantir que o Apache esteja instalado
  ansible.builtin.apt:
    name: apache2
    state: present

Essa pequena tarefa declara um estado desejado:

“O pacote Apache deve estar instalado.”

O Ansible analisa o ambiente e tenta conduzi-lo até esse estado.

Essa diferença é fundamental.

Em um Shell Script tradicional, normalmente escrevemos uma sequência de comandos:

apt update
apt install apache2
systemctl start apache2

No Ansible, descrevemos principalmente o resultado que queremos alcançar.

Essa abordagem aproxima a infraestrutura do desenvolvimento de software.


2. Infraestrutura como código

Durante muito tempo, a infraestrutura foi tratada como algo quase artesanal.

Um especialista configurava um servidor.

Outro alterava uma propriedade.

Um terceiro modificava o firewall.

Cada mudança poderia ser registrada em um chamado, mas nem sempre era possível reconstruir exatamente o ambiente apenas lendo a documentação.

A Infraestrutura como Código, conhecida pela sigla IaC — Infrastructure as Code, muda essa lógica.

Configurações passam a ser armazenadas em arquivos.

Esses arquivos podem ser:

  • revisados;

  • comparados;

  • versionados no Git;

  • submetidos à aprovação;

  • testados;

  • executados novamente;

  • reutilizados em outros ambientes.

Para um Programador COBOL, a analogia é simples.

Imagine que a configuração de um servidor seja como um programa executável sem código-fonte.

Ele funciona, mas ninguém sabe exatamente como foi construído.

O Ansible devolve o “fonte” da infraestrutura.

O Playbook passa a representar a sequência lógica usada para construir ou configurar aquele ambiente.


3. Como o Ansible funciona?

O Ansible trabalha, de maneira simplificada, com dois lados:

┌──────────────────────────────┐
│       CONTROL NODE           │
│                              │
│ Ansible                      │
│ Inventários                  │
│ Playbooks                    │
│ Variáveis                    │
│ Credenciais                  │
└──────────────┬───────────────┘
               │
          SSH, APIs ou
       protocolos específicos
               │
 ┌─────────────┼───────────────┐
 │             │               │
 ▼             ▼               ▼
Linux       IBM Z          Windows
Apache      z/OS           Servidores
Java        USS            corporativos

O Control Node é a máquina onde o Ansible é executado.

Os Managed Nodes são os sistemas administrados.

Em ambientes Linux e Unix, a comunicação costuma ocorrer por SSH.

Para administrar Windows como destino, o Ansible pode utilizar mecanismos como WinRM. A documentação também oferece módulos específicos para instalar programas, administrar atualizações, usuários, grupos, serviços e outros componentes do Windows. (Ansible Docs)

No IBM Z, a comunicação depende da coleção utilizada e dos pré-requisitos configurados. A coleção IBM z/OS Core, por exemplo, permite que o Ansible execute módulos no z/OS e devolva os resultados ao controlador. (IBM GitHub)


4. O que significa dizer que o Ansible é “agentless”?

Muitas plataformas de administração precisam instalar permanentemente um agente em cada servidor.

Esse agente fica ativo, recebe comandos e informa o estado da máquina.

O Ansible adota uma abordagem diferente em muitos de seus cenários: ele normalmente utiliza mecanismos já existentes no sistema, como SSH, bibliotecas Python ou APIs.

Isso reduz a necessidade de manter um programa específico do Ansible permanentemente executando em cada Linux administrado.

Mas “agentless” não significa “sem requisitos”.

A máquina de destino ainda pode precisar de:

  • SSH configurado;

  • usuário autorizado;

  • Python compatível;

  • permissões administrativas;

  • bibliotecas adicionais;

  • APIs ou componentes específicos.

No z/OS, por exemplo, diferentes versões da coleção podem exigir combinações específicas de ansible-core, IBM Open Enterprise SDK for Python e Z Open Automation Utilities, o ZOAU. Por isso, sempre é necessário conferir a matriz de requisitos da versão utilizada. (IBM GitHub)

Esse é um erro comum do Padawan:

“Se não tem agente, então não precisa preparar nada.”

Precisa, sim.

A ausência de um agente próprio apenas simplifica parte da arquitetura.


5. Posso instalar Ansible no Windows?

A resposta correta é:

podemos estudar e executar Ansible em uma máquina Windows usando WSL, mas o Ansible não é executado nativamente no Windows como Control Node tradicional.

A documentação oficial informa que o Windows não é suportado como Control Node nativo, mas que é possível executar Ansible no Windows por meio do Windows Subsystem for Linux — WSL ou de um contêiner. A mesma documentação alerta que o uso de WSL como controlador não é suportado para sistemas de produção. Para aprendizado, testes locais e desenvolvimento, entretanto, ele é uma excelente estação de treinamento. (Ansible Docs)

Nossa arquitetura de laboratório será esta:

Windows 11
│
├── PowerShell
├── Navegador
├── Visual Studio Code
│
└── WSL 2
    └── Ubuntu
        ├── Bash
        ├── Python
        ├── Git
        ├── Ansible
        ├── Apache
        ├── Java
        └── Playbooks YAML

O Windows continuará sendo sua nave principal.

O Ubuntu no WSL será a sala de máquinas onde o Ansible será executado.


6. O que é WSL?

WSL significa Windows Subsystem for Linux.

Ele permite executar uma distribuição GNU/Linux diretamente no Windows, incluindo ferramentas de linha de comando, Bash, gerenciadores de pacotes e aplicações Linux, sem exigir uma instalação dual boot. A Microsoft apresenta o WSL justamente como uma maneira de utilizar ambientes Linux e Windows na mesma estação. (Microsoft Learn)

Para o nosso laboratório, usaremos o WSL 2.

Ele oferece um ambiente Linux muito mais próximo de uma instalação real, sendo adequado para estudar:

  • Bash;

  • SSH;

  • Git;

  • Python;

  • Ansible;

  • Apache;

  • Java;

  • Docker;

  • ferramentas DevOps.

Easter egg da Frota Estelar

O WSL é como o Holodeck da Enterprise.

Você continua fisicamente dentro do Windows, mas entra em um ambiente Linux suficientemente convincente para executar ferramentas, criar arquivos, instalar serviços e praticar comandos como se estivesse em outra nave.

A diferença é que, se o laboratório der errado, você não precisará chamar o Chefe O’Brien.

Na maioria das vezes.


7. Passo a passo: instalando o WSL 2

Abra o PowerShell como administrador.

Execute:

wsl --install

Esse é o método simplificado recomendado atualmente pela Microsoft. Ele habilita os componentes necessários e normalmente instala o Ubuntu como distribuição padrão. Depois da instalação, o computador poderá solicitar uma reinicialização. (Microsoft Learn)

Após reiniciar, abra novamente o PowerShell e execute:

wsl --list --verbose

Ou a forma abreviada:

wsl -l -v

Você deverá encontrar algo semelhante a:

  NAME      STATE           VERSION
* Ubuntu    Stopped         2

Caso o Ubuntu apareça como WSL 1, execute:

wsl --set-version Ubuntu 2

Para determinar que novas distribuições utilizem WSL 2 por padrão:

wsl --set-default-version 2

Novas instalações feitas por wsl --install normalmente já utilizam o WSL 2 por padrão. (Microsoft Learn)

Quando abrir o Ubuntu pela primeira vez, será necessário criar:

  • um nome de usuário Linux;

  • uma senha Linux.

Você pode escolher:

bellacosa

ou:

cobolpadawan

Ao digitar a senha no terminal Linux, nenhum asterisco aparecerá.

Não é erro.

Não é travamento.

Não é interferência dos Borg.

O Linux simplesmente não exibe os caracteres da senha.


8. Preparando o Ubuntu

Abra o Ubuntu e execute:

sudo apt update
sudo apt upgrade -y

O primeiro comando atualiza a lista de pacotes disponíveis.

O segundo instala as atualizações.

Depois, instale algumas ferramentas úteis:

sudo apt install git python3 python3-pip openssh-client nano curl -y

Essas ferramentas terão funções importantes:

  • git: versionamento;

  • python3: execução de módulos;

  • pip: instalação de pacotes Python;

  • openssh-client: conexões SSH;

  • nano: editor simples;

  • curl: testes de páginas e APIs.


9. Instalando o Ansible

Para um laboratório inicial no Ubuntu, podemos utilizar:

sudo apt install ansible -y

Depois, confirme:

ansible --version

A saída deve apresentar informações como:

ansible [core ...]
config file = ...
python version = ...
jinja version = ...

A documentação oficial também descreve métodos de instalação por pacotes das distribuições e por ferramentas do ecossistema Python. A melhor escolha depende do objetivo: simplicidade para estudo, controle rigoroso de versões, desenvolvimento de coleções ou uso corporativo. (Ansible Docs)

Para nosso primeiro Holodeck, o pacote do Ubuntu é suficiente.


10. Criando a estrutura do laboratório

No Ubuntu, execute:

mkdir -p ~/ansible-lab
cd ~/ansible-lab

Verifique:

pwd

O resultado deverá ser semelhante a:

/home/bellacosa/ansible-lab

Crie algumas pastas:

mkdir -p playbooks inventory files templates roles

Nossa estrutura ficará assim:

ansible-lab/
├── inventory/
├── playbooks/
├── files/
├── templates/
└── roles/

Não precisamos usar todas imediatamente.

Mas estamos preparando o laboratório para crescer de maneira organizada.


11. Inventário: o mapa estelar do Ansible

O inventário informa ao Ansible quais máquinas podem ser administradas.

Crie o arquivo:

nano inventory/hosts.ini

Digite:

[local]
localhost ansible_connection=local

Salve pressionando:

Ctrl + O
Enter
Ctrl + X

Esse inventário cria um grupo chamado local.

Dentro dele existe uma máquina:

localhost

A variável:

ansible_connection=local

informa que a execução será feita diretamente no Ubuntu do WSL, sem abrir uma conexão SSH.

A documentação do Ansible considera inventários, Playbooks, plays, tasks, roles e collections entre seus conceitos fundamentais. (Ansible Docs)

Pense no inventário como um mapa estelar:

[web]
web01
web02

[database]
db01

[mainframe]
zos01

[producao]
web01
web02
db01
zos01

Você pode agrupar os alvos por:

  • tecnologia;

  • ambiente;

  • localização;

  • aplicação;

  • função;

  • criticidade.


12. O primeiro contato: o módulo ping

Execute:

ansible all -i inventory/hosts.ini -m ping

Resultado esperado:

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Esse ping não é exatamente o mesmo comando de rede usado para testar ICMP.

O módulo do Ansible verifica se ele consegue executar corretamente no destino e obter uma resposta.

Podemos decompor o comando:

ansible

Programa usado para executar uma ação rápida.

all

Todos os hosts do inventário.

-i inventory/hosts.ini

Arquivo de inventário utilizado.

-m ping

Módulo que será executado.

Esse tipo de comando é chamado de ad hoc command.

São ordens rápidas, úteis para consultas, diagnósticos e pequenas operações.


13. Coletando informações do Linux

Execute:

ansible all -i inventory/hosts.ini -m setup

O Ansible retornará uma grande quantidade de informações:

  • distribuição Linux;

  • versão do sistema;

  • processadores;

  • memória;

  • interfaces de rede;

  • endereços IP;

  • arquitetura;

  • variáveis do ambiente;

  • discos;

  • hostname.

Essas informações são chamadas de facts.

Podemos filtrar a resposta:

ansible all -i inventory/hosts.ini -m setup \
  -a "filter=ansible_distribution*"

Ou consultar a memória:

ansible all -i inventory/hosts.ini -m setup \
  -a "filter=ansible_memtotal_mb"

Os facts podem ser usados nos Playbooks para tomar decisões.

Exemplo conceitual:

- name: Instalar pacote no Ubuntu
  ansible.builtin.apt:
    name: apache2
    state: present
  when: ansible_distribution == "Ubuntu"

Assim, a automação pode adaptar-se ao sistema encontrado.


14. O que é um Playbook?

Um Playbook é um arquivo YAML que descreve uma ou mais automações.

A documentação oficial explica que Playbooks reúnem tarefas e módulos para executar mudanças de maneira organizada nos sistemas selecionados. (Ansible Docs)

Crie:

nano playbooks/primeiro-playbook.yml

Conteúdo:

---
- name: Primeiro treinamento Bellacosa Mainframe
  hosts: local
  connection: local
  gather_facts: true

  tasks:
    - name: Criar diretório do laboratório
      ansible.builtin.file:
        path: /tmp/bellacosa-lab
        state: directory
        mode: "0755"

    - name: Criar mensagem para o Padawan
      ansible.builtin.copy:
        dest: /tmp/bellacosa-lab/mensagem.txt
        content: |
          Laboratório Ansible em funcionamento.
          Automação autorizada pela Frota Estelar.
          O COBOL continua vivo.
        mode: "0644"

    - name: Mostrar a distribuição Linux
      ansible.builtin.debug:
        msg: "Sistema detectado: {{ ansible_distribution }} {{ ansible_distribution_version }}"

Execute:

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/primeiro-playbook.yml

Confira o arquivo:

cat /tmp/bellacosa-lab/mensagem.txt

15. Entendendo o YAML sem entrar em um buraco negro

YAML é um formato de serialização muito utilizado em configurações.

Sua estrutura depende fortemente de indentação.

Exemplo:

tripulante:
  nome: Bellacosa
  funcao: Programador COBOL
  nivel: Padawan
  tecnologias:
    - COBOL
    - JCL
    - Ansible

O YAML possui:

  • pares de chave e valor;

  • listas;

  • objetos aninhados;

  • valores booleanos;

  • números;

  • textos.

No Ansible:

- name: Criar arquivo
  ansible.builtin.file:
    path: /tmp/teste.txt
    state: touch

Temos:

  • uma tarefa;

  • um nome descritivo;

  • um módulo;

  • parâmetros enviados ao módulo.

Regra de ouro

Use espaços.

Não utilize tabulação.

Uma indentação incorreta pode impedir a leitura do arquivo ou, pior, alterar sua estrutura lógica.

Para verificar a sintaxe:

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/primeiro-playbook.yml \
  --syntax-check

16. Idempotência: a disciplina vulcana

Execute novamente o primeiro Playbook.

Na primeira execução, algumas tarefas podem aparecer como:

changed

Na segunda, provavelmente aparecerão como:

ok

Por quê?

Porque o diretório e o arquivo já estão no estado desejado.

Esse comportamento é chamado de idempotência.

A documentação observa que módulos idempotentes procuram produzir o mesmo resultado independentemente de o Playbook ser executado uma ou várias vezes, embora nem todo Playbook seja automaticamente idempotente. (Ansible Docs)

Matematicamente, a ideia lembra:

f(f(x)) = f(x)

Depois que o estado desejado é alcançado, repetir a operação não deveria criar uma situação diferente.

Para um veterano do batch, podemos comparar com um processo restartable bem projetado.

Um job confiável deve saber:

  • o que já foi processado;

  • onde continuar;

  • quando não repetir uma ação destrutiva;

  • como retornar ao estado esperado.

A idempotência é uma das bases da automação segura.


17. Instalando Apache com Ansible

Agora teremos nossa primeira missão real.

Crie:

nano playbooks/apache.yml

Conteúdo:

---
- name: Configurar Apache no Holodeck
  hosts: local
  connection: local
  become: true

  tasks:
    - name: Atualizar cache de pacotes
      ansible.builtin.apt:
        update_cache: true
        cache_valid_time: 3600

    - name: Instalar Apache
      ansible.builtin.apt:
        name: apache2
        state: present

    - name: Publicar página Bellacosa
      ansible.builtin.copy:
        dest: /var/www/html/index.html
        content: |
          <!DOCTYPE html>
          <html lang="pt-BR">
          <head>
            <meta charset="UTF-8">
            <title>Bellacosa Ansible Lab</title>
          </head>
          <body>
            <h1>Ansible sem Mistérios</h1>
            <p>Servidor Apache configurado automaticamente.</p>
            <p>Mensagem da ponte: o COBOL está integrado ao futuro.</p>
          </body>
          </html>
        mode: "0644"
      notify: Reiniciar Apache

    - name: Garantir que o Apache esteja iniciado
      ansible.builtin.service:
        name: apache2
        state: started
        enabled: true

  handlers:
    - name: Reiniciar Apache
      ansible.builtin.service:
        name: apache2
        state: restarted

Execute:

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/apache.yml \
  --ask-become-pass

Digite a senha do usuário Ubuntu.

Depois, teste:

curl http://localhost

Abra também no navegador do Windows:

http://localhost

Se tudo funcionar, você verá a página criada pelo Ansible.

O que é become?

A instrução:

become: true

indica que determinadas tarefas precisam de privilégios elevados, normalmente usando sudo.

O que é um handler?

O handler é uma tarefa acionada por uma notificação.

Observe:

notify: Reiniciar Apache

O Apache será reiniciado apenas quando a tarefa que publica a página realmente provocar uma mudança.

Isso evita reinicializações desnecessárias.

É como dizer:

“Não acorde o Capitão apenas para informar que nada mudou.”


18. Instalando Java

Crie:

nano playbooks/java.yml

Conteúdo:

---
- name: Preparar ambiente Java
  hosts: local
  connection: local
  become: true

  tasks:
    - name: Instalar OpenJDK
      ansible.builtin.apt:
        name: openjdk-17-jdk
        state: present
        update_cache: true

    - name: Consultar versão do Java
      ansible.builtin.command:
        cmd: java -version
      register: resultado_java
      changed_when: false

    - name: Exibir versão instalada
      ansible.builtin.debug:
        var: resultado_java.stderr_lines

Execute:

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/java.yml \
  --ask-become-pass

O parâmetro:

register: resultado_java

guarda a resposta de uma tarefa em uma variável.

Depois, usamos:

ansible.builtin.debug:
  var: resultado_java.stderr_lines

para mostrar parte dessa resposta.

A instrução:

changed_when: false

informa que a consulta à versão do Java não modifica o sistema.

Sem isso, determinados comandos podem ser marcados como mudança mesmo quando apenas realizam uma leitura.


19. Como o Ansible se relaciona com Java?

O Ansible não substitui a JVM nem escreve automaticamente a lógica da aplicação.

Ele automatiza o ambiente no qual a aplicação Java será executada.

Pode, por exemplo:

  • instalar o Java;

  • criar usuários de serviço;

  • criar diretórios;

  • copiar arquivos JAR;

  • distribuir arquivos WAR e EAR;

  • configurar variáveis de ambiente;

  • alterar parâmetros da JVM;

  • criar certificados;

  • instalar serviços;

  • configurar logs;

  • iniciar e parar aplicações;

  • validar portas;

  • testar URLs de saúde;

  • executar scripts de implantação.

Uma aplicação Java pode ser construída em um pipeline e depois entregue por Ansible:

Git
  ↓
Compilação Maven ou Gradle
  ↓
Testes
  ↓
Artefato JAR, WAR ou EAR
  ↓
Ansible
  ↓
Tomcat, Liberty ou WebSphere

O Ansible representa o oficial de transporte.

Ele recebe o artefato e garante que chegue ao destino correto, com a configuração correta.


20. E o WebSphere?

WebSphere é uma plataforma corporativa complexa.

Uma automação pode envolver:

  • Deployment Manager;

  • Node Agents;

  • clusters;

  • servidores de aplicação;

  • aplicações EAR;

  • DataSources;

  • JDBC Providers;

  • JMS;

  • segurança;

  • propriedades da JVM;

  • certificados;

  • scripts wsadmin;

  • arquivos de configuração;

  • rotinas de health check.

No WebSphere tradicional, o Ansible pode ser usado para coordenar comandos e scripts administrativos existentes.

Um fluxo conceitual seria:

1. Retirar servidor do balanceamento
2. Parar aplicação
3. Copiar novo EAR
4. Executar script wsadmin
5. Sincronizar nós
6. Iniciar aplicação
7. Testar URL
8. Recolocar servidor no balanceamento

O valor do Ansible não está apenas em executar um comando.

Está em organizar toda a sequência, aplicar condições, capturar erros e impedir que a próxima etapa seja executada quando a anterior falhar.

Cuidado de Engenharia

Não trate WebSphere como se fosse apenas um diretório onde você copia um EAR.

Uma implantação corporativa pode exigir:

  • sincronização;

  • rollout gradual;

  • controle de sessão;

  • compatibilidade entre versões;

  • rollback;

  • validação de dependências;

  • gestão de certificados;

  • aprovação operacional.

O Ansible automatiza o procedimento, mas não elimina a necessidade de compreendê-lo.


21. Conectando Ansible ao IBM Z

Agora chegamos ao setor onde pulsa o coração do Bellacosa Mainframe.

A IBM disponibiliza conteúdo Ansible voltado ao IBM Z. O objetivo é integrar o IBM Z à estratégia mais ampla de automação corporativa, unificando configuração, provisionamento, implantação e orquestração de fluxos. (Ansible Collections)

A coleção IBM z/OS Core oferece módulos para atividades como:

  • criar data sets;

  • copiar conteúdo;

  • submeter jobs;

  • consultar jobs;

  • recuperar saídas do JES;

  • executar comandos;

  • trabalhar com arquivos USS;

  • processar codificações;

  • manipular recursos do z/OS.

A documentação oficial destaca explicitamente operações como criação de data sets, submissão e consulta de jobs, recuperação de output e codificação de dados. (IBM GitHub)

Para instalar a coleção no laboratório:

ansible-galaxy collection install ibm.ibm_zos_core

Confira:

ansible-galaxy collection list

A documentação IBM informa que coleções podem ser obtidas por meios como Ansible Galaxy, Ansible Automation Hub ou construção local, dependendo da distribuição e do modelo de suporte adotado. (IBM GitHub)


22. Criando um Playbook conceitual para z/OS

Mesmo sem acesso imediato a um mainframe, você pode começar a estudar a estrutura.

Crie:

nano playbooks/zos-exemplo.yml

Conteúdo conceitual:

---
- name: Laboratório conceitual IBM Z
  hosts: zos
  gather_facts: false

  tasks:
    - name: Criar data set sequencial
      ibm.ibm_zos_core.zos_data_set:
        name: BELLACOS.TRAINING.DATA
        type: seq
        state: present
        record_format: fb
        record_length: 80

    - name: Submeter JCL de treinamento
      ibm.ibm_zos_core.zos_job_submit:
        src: BELLACOS.TRAINING.JCL(HELLO)
        location: data_set
        wait_time_s: 30

A documentação do módulo zos_job_submit informa que ele pode submeter JCL armazenado em data set, arquivo no USS ou arquivo localizado no controlador, além de acompanhar a conclusão do job. (IBM GitHub)

Para executar de verdade, será necessário preparar:

  • host z/OS;

  • acesso de rede;

  • SSH;

  • usuário e permissões;

  • USS;

  • Python suportado;

  • ZOAU;

  • variáveis de ambiente;

  • inventário;

  • versões compatíveis.

Instalar a coleção no WSL não cria um mainframe mágico dentro do notebook.

Ela apenas prepara o controlador para conversar com um ambiente IBM Z que atenda aos requisitos.


23. Exemplo de inventário para IBM Z

Um inventário conceitual poderia ser:

[zos]
zos01 ansible_host=mainframe.empresa.local

[zos:vars]
ansible_connection=ssh
ansible_user=USUARIO
ansible_python_interpreter=/usr/lpp/IBM/cyp/v3r*/pyz/bin/python3

Os caminhos e parâmetros reais dependem da instalação da empresa.

Nunca copie cegamente configurações de um artigo para produção.

Consulte:

  • versão da coleção;

  • versão do z/OS;

  • versão do Python;

  • versão do ZOAU;

  • política de segurança;

  • configuração de SSH;

  • padrões internos.

Essa é uma lição essencial:

Um bom Playbook é reutilizável. Uma boa implantação, porém, respeita as particularidades do ambiente.


24. Ansible e JCL: inimigos ou aliados?

Eles são aliados.

O Ansible não substitui JCL.

JCL continua sendo a linguagem de controle dos jobs no z/OS.

O que o Ansible pode fazer é:

  • selecionar o JCL;

  • transferi-lo;

  • alterar variáveis;

  • submetê-lo;

  • acompanhar o job;

  • verificar o return code;

  • coletar o spool;

  • decidir se o pipeline pode continuar.

Imagine:

Ansible
   ↓
Submete JCL de compilação
   ↓
Espera conclusão
   ↓
Verifica RC
   ├── RC 0: continua
   ├── RC 4: aplica regra definida
   └── RC 8+: interrompe implantação

Essa combinação preserva a força do JCL e adiciona uma camada moderna de orquestração.

É como instalar um painel LCARS na frente de uma sala de máquinas histórica.

O motor continua sendo poderoso.

A interface e a integração tornam-se mais modernas.


25. Ansible, COBOL e DevOps

Um pipeline híbrido poderia funcionar assim:

1. Desenvolvedor envia código COBOL ao Git
2. Pipeline inicia
3. Build é executado
4. Testes automatizados são realizados
5. Ansible transfere componentes
6. JCL de implantação é submetido
7. Módulos de carga são atualizados
8. BIND de Db2 é executado
9. Aplicação é validada
10. Relatório é produzido

Em uma solução distribuída:

1. COBOL processa regras de negócio no IBM Z
2. Java fornece uma camada de serviços
3. WebSphere ou Liberty hospeda aplicações
4. Apache atua como servidor ou proxy
5. Ansible coordena a configuração
6. Jenkins ou outra ferramenta inicia o pipeline
7. Git guarda código e Playbooks

O Programador COBOL que aprende Ansible deixa de enxergar apenas o programa e passa a compreender o fluxo operacional completo.

Esse profissional consegue conversar com:

  • desenvolvimento;

  • infraestrutura;

  • middleware;

  • segurança;

  • produção;

  • DevOps;

  • arquitetura;

  • cloud;

  • equipes Linux;

  • equipes IBM Z.


26. Segurança: nunca coloque senhas no Playbook

Nunca faça isto:

senha: MinhaSenha123

E muito menos envie esse arquivo para o Git.

Credenciais podem ser tratadas com mecanismos como:

  • Ansible Vault;

  • variáveis protegidas;

  • gerenciadores de segredos;

  • credenciais da plataforma corporativa;

  • chaves SSH;

  • tokens de curta duração;

  • cofres externos.

Para criar um arquivo protegido com Ansible Vault:

ansible-vault create secrets.yml

Para editar:

ansible-vault edit secrets.yml

Para visualizar:

ansible-vault view secrets.yml

O objetivo não é esconder uma senha de maneira improvisada.

É impedir que segredos sejam armazenados em texto aberto ou espalhados por scripts.

Regra de segurança da Frota

Um Playbook pode ser compartilhado.

Uma senha não.


27. Modos seguros de teste

Antes de executar uma automação em ambiente importante, use ferramentas de validação.

Verificar a sintaxe

ansible-playbook playbooks/apache.yml --syntax-check

Simular alterações

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/apache.yml \
  --check

O modo --check tenta indicar o que seria modificado sem aplicar todas as mudanças.

Entretanto, nem todo módulo consegue simular perfeitamente suas ações.

Portanto, --check ajuda, mas não substitui um ambiente de teste.

Mostrar diferenças

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/apache.yml \
  --check \
  --diff

Limitar a execução

ansible-playbook \
  -i inventory/hosts.ini \
  playbooks/apache.yml \
  --limit localhost

Em ambientes reais, --limit é valioso para realizar um teste controlado em uma única máquina antes de alcançar todo o grupo.


28. Use nomes que expliquem a operação

Evite:

- name: Executar comando

Prefira:

- name: Reiniciar Apache após alteração do arquivo de configuração

Evite:

- name: Copiar arquivo

Prefira:

- name: Publicar página inicial do portal de treinamento

O Playbook deve funcionar como documentação executável.

Um operador deve conseguir lê-lo e compreender:

  • o que acontecerá;

  • em quais máquinas;

  • em que sequência;

  • sob quais condições.

Código misterioso pertence aos arquivos secretos da Seção 31, não à automação corporativa.


29. Não abuse dos módulos command e shell

É possível executar:

ansible.builtin.command:
  cmd: touch /tmp/arquivo.txt

Mas existe um módulo específico para arquivos:

ansible.builtin.file:
  path: /tmp/arquivo.txt
  state: touch

O módulo especializado geralmente conhece melhor o recurso.

Ele pode:

  • verificar o estado;

  • detectar mudanças;

  • validar parâmetros;

  • oferecer melhor idempotência;

  • retornar informações estruturadas.

Use command ou shell quando necessário, mas pesquise antes se existe um módulo apropriado.

A documentação do Ansible mantém um índice de módulos disponíveis nas diversas coleções. (Ansible Docs)


30. Evoluindo para templates

Imagine um arquivo de configuração do Apache diferente para cada ambiente.

Em desenvolvimento:

ServerName dev.bellacosa.local

Em produção:

ServerName www.bellacosa.com

Em vez de manter dois arquivos quase iguais, podemos utilizar um template Jinja2.

Crie:

nano templates/site.conf.j2

Conteúdo:

ServerName {{ nome_servidor }}
DocumentRoot {{ diretorio_site }}

No Playbook:

- name: Gerar configuração do site
  ansible.builtin.template:
    src: ../templates/site.conf.j2
    dest: /etc/apache2/sites-available/bellacosa.conf
    mode: "0644"

Com variáveis:

vars:
  nome_servidor: localhost
  diretorio_site: /var/www/html

Os templates permitem criar configurações dinâmicas sem duplicar arquivos.

Para o Programador COBOL, pense em um template como um esqueleto parametrizado, semelhante a uma PROC de JCL que recebe símbolos.


31. Roles: transformando Playbooks em componentes reutilizáveis

Quando o laboratório crescer, um único arquivo poderá ficar enorme.

As roles organizam a automação em componentes.

Exemplo:

roles/
└── apache/
    ├── tasks/
    │   └── main.yml
    ├── handlers/
    │   └── main.yml
    ├── templates/
    ├── files/
    ├── defaults/
    │   └── main.yml
    └── vars/
        └── main.yml

Uma role poderia representar:

  • instalação do Apache;

  • preparação de Java;

  • implantação WebSphere;

  • configuração do MQ;

  • preparação de um servidor;

  • submissão de jobs z/OS;

  • validação de uma aplicação COBOL.

O Playbook principal passa a ser simples:

---
- name: Preparar servidor web
  hosts: web
  become: true

  roles:
    - apache
    - java

Esse modelo melhora:

  • manutenção;

  • reutilização;

  • padronização;

  • testes;

  • documentação.


32. Ansible Community e Ansible Automation Platform

No laboratório, estamos usando a tecnologia aberta pela linha de comando.

Em empresas, também existe a Red Hat Ansible Automation Platform, voltada à execução, governança e escala corporativa da automação. (redhat.com)

Uma plataforma corporativa pode adicionar recursos como:

  • interface central;

  • controle de acesso;

  • inventários gerenciados;

  • credenciais;

  • agendamentos;

  • registros de execução;

  • aprovação;

  • ambientes de execução;

  • integração com pipelines;

  • governança.

Mas não espere conhecer a plataforma corporativa para aprender.

Comece por:

YAML
Inventário
Módulos
Playbooks
Variáveis
Handlers
Templates
Roles
Git

A plataforma será muito mais fácil quando os fundamentos estiverem sólidos.


33. Visual Studio Code como painel LCARS

Instale no Windows:

  • Visual Studio Code;

  • extensão WSL;

  • extensão YAML;

  • extensão Ansible da Red Hat.

No Ubuntu:

cd ~/ansible-lab
code .

O VS Code abrirá a pasta dentro do ambiente WSL.

Essa combinação oferece:

  • destaque de sintaxe;

  • terminal integrado;

  • validação;

  • navegação de arquivos;

  • integração com Git;

  • sugestões;

  • pesquisa;

  • comparação de versões.

O terminal continuará sendo importante, mas você terá uma ponte de comando mais confortável.


34. Um laboratório com vários servidores

Depois de dominar o localhost, avance para múltiplos destinos.

Você pode usar:

  • máquinas virtuais;

  • servidores Linux antigos;

  • instâncias em nuvem;

  • contêineres de laboratório;

  • Raspberry Pi;

  • outro computador da rede.

Arquitetura:

WSL Ubuntu — Control Node
│
├── linux-web-01
├── linux-web-02
├── linux-java-01
└── zos-treinamento

Um inventário poderia ser:

[web]
linux-web-01
linux-web-02

[java]
linux-java-01

[linux:children]
web
java

Teste apenas o grupo web:

ansible web -i inventory/hosts.ini -m ping

Execute apenas em um host:

ansible linux-web-01 -i inventory/hosts.ini -m ping

Esse é o momento em que o laboratório deixa de parecer uma ferramenta local e começa a revelar sua capacidade de orquestração.


35. Plano de ação de 12 semanas

Semanas 1 e 2 — Academia da Frota

Objetivos:

  • instalar WSL 2;

  • conhecer comandos Linux;

  • instalar Ansible;

  • criar inventário local;

  • executar ping e setup.

Missão prática:

Criar um Playbook que gere três arquivos em /tmp.

Semanas 3 e 4 — YAML e módulos

Estudar:

  • listas;

  • dicionários;

  • variáveis;

  • file;

  • copy;

  • package;

  • service;

  • debug.

Missão prática:

Criar usuários, diretórios e arquivos de configuração em um Linux de laboratório.

Semanas 5 e 6 — Apache e Java

Estudar:

  • instalação de pacotes;

  • handlers;

  • templates;

  • serviços;

  • validação por URL;

  • variáveis registradas.

Missão prática:

Instalar Apache e Java e publicar uma página que mostre informações do servidor.

Semanas 7 e 8 — Git e organização

Estudar:

  • repositórios;

  • commits;

  • branches;

  • revisão;

  • roles;

  • estrutura de projetos;

  • Ansible Vault.

Missão prática:

Transformar a automação do Apache em uma role versionada no Git.

Semanas 9 e 10 — IBM Z

Estudar:

  • USS;

  • SSH no z/OS;

  • Python;

  • ZOAU;

  • coleções IBM;

  • zos_data_set;

  • zos_copy;

  • zos_job_submit;

  • consulta de jobs.

Missão prática:

Escrever Playbooks conceituais e, quando houver acesso, testá-los em um ambiente educacional autorizado.

Semanas 11 e 12 — Projeto final

Construir um fluxo que:

  1. prepare Linux;

  2. instale Java;

  3. configure Apache;

  4. publique uma aplicação;

  5. execute health check;

  6. gere relatório;

  7. inclua uma etapa conceitual para IBM Z.

Ao final, publique a documentação do projeto em seu repositório.


36. Dez erros clássicos do Padawan

1. Aprender somente copiando Playbooks

Copiar ajuda, mas você precisa entender cada tarefa.

2. Testar primeiro em produção

Produção não é Holodeck.

3. Armazenar senha no Git

Uma credencial vazada pode comprometer todo o ambiente.

4. Usar shell para tudo

Prefira módulos especializados.

5. Ignorar o inventário

Executar no grupo errado pode causar um desastre.

6. Não usar nomes descritivos

Uma tarefa sem descrição é um enigma para o operador.

7. Não verificar resultados

Instalação concluída não significa aplicação saudável.

8. Confundir automação com ausência de controle

Quanto maior o poder, maior deve ser a governança.

9. Ignorar versões

Coleções, Python, Ansible e sistemas precisam ser compatíveis.

10. Querer automatizar sem conhecer o processo

Se você não consegue executar o procedimento manualmente, provavelmente ainda não está pronto para automatizá-lo.


37. Curiosidades da sala de máquinas

O nome “Ansible” foi inspirado no conceito de um dispositivo fictício de comunicação instantânea encontrado na ficção científica.

É uma escolha perfeita.

O Ansible conecta sistemas distantes e transmite instruções de maneira coordenada, quase como se uma única ponte comandasse diferentes naves de uma frota.

Outra curiosidade importante é que o Ansible não está limitado à instalação de pacotes. Ele pode atuar na administração de redes, nuvens, sistemas operacionais, middleware, contêineres e mainframes.

Seu verdadeiro poder não está no comando individual.

Está na orquestração.

Instalar Apache é fácil.

Difícil é:

  1. retirar o servidor do balanceador;

  2. fazer backup;

  3. atualizar a aplicação;

  4. alterar configurações;

  5. reiniciar serviços;

  6. validar a página;

  7. restaurar o tráfego;

  8. interromper tudo e executar rollback se a validação falhar.

Esse fluxo completo é onde a automação se transforma em engenharia.


38. Por que um Programador COBOL deveria aprender Ansible?

Porque o mainframe não vive isolado.

Uma transação pode começar em:

  • aplicativo móvel;

  • navegador;

  • API;

  • microsserviço;

  • servidor Java;

  • mensageria;

  • z/OS Connect;

  • CICS;

  • programa COBOL;

  • Db2.

O COBOL pode continuar sendo o coração da regra de negócio, mas sua operação está conectada a um ecossistema híbrido.

O profissional que conhece apenas o programa vê uma sala.

O profissional que conhece automação vê a nave inteira.

Aprender Ansible ajuda o Programador COBOL a:

  • compreender DevOps;

  • participar de pipelines;

  • automatizar tarefas repetitivas;

  • reduzir erros;

  • dialogar com equipes Linux;

  • integrar IBM Z a ambientes distribuídos;

  • transformar procedimentos em código;

  • documentar operações;

  • colaborar com arquitetos;

  • modernizar sem destruir o legado.

Não se trata de abandonar COBOL.

Trata-se de colocar o COBOL dentro de uma estratégia de engenharia contemporânea.


39. A mensagem escondida no console

Existe um easter egg nesta jornada.

O verdadeiro tema deste artigo nunca foi apenas Ansible.

Foi repetibilidade.

Um programa confiável produz resultados previsíveis.

Um job confiável pode ser reiniciado.

Uma transação confiável preserva consistência.

Uma automação confiável conduz o ambiente até um estado conhecido.

COBOL e Ansible nasceram em épocas diferentes, mas compartilham um valor fundamental:

sistemas empresariais precisam ser compreensíveis, controláveis e previsíveis.

O COBOL organiza regras de negócio.

O JCL organiza processamento batch.

O Ansible organiza operações e infraestrutura.

Eles não são inimigos de gerações diferentes.

São oficiais de departamentos diferentes servindo na mesma nave.


Conclusão — O Padawan assume o console

Você não precisa comprar uma licença especial nem construir um data center para começar.

Com um computador Windows 11, WSL 2, Ubuntu e algumas horas de prática, já é possível montar um excelente laboratório de Ansible.

Comece pequeno:

localhost

Depois instale:

Apache

Em seguida:

Java

Aprenda:

Inventários
Playbooks
Módulos
Variáveis
Handlers
Templates
Roles
Vault
Git

Só então avance para:

WebSphere
Linux remoto
Pipelines
IBM Z
z/OS
Ambientes híbridos

Não tente automatizar toda a galáxia no primeiro Playbook.

Automatize uma tarefa.

Teste.

Execute novamente.

Observe a idempotência.

Documente.

Versione.

Melhore.

Depois automatize a próxima.

O futuro do mainframe não será construído apenas por quem conhece tecnologias novas, nem apenas por quem conhece tecnologias antigas.

Será construído por profissionais capazes de fazer essas tecnologias trabalharem juntas.

E quando alguém perguntar:

“Um Programador COBOL realmente precisa aprender Ansible?”

Você poderá responder:

“Não preciso aprender para abandonar o mainframe. Preciso aprender para comandar tudo o que existe ao redor dele.”

Esse é o caminho do Programador COBOL Padawan.

Do terminal 3270 ao YAML.

Do JCL ao Playbook.

Do batch noturno à automação contínua.

Do porão da sala de máquinas à cadeira de comando.

Vida longa ao COBOL. Vida longa à automação. E que nenhum deployment seja realizado manualmente numa sexta-feira à noite.

sexta-feira, 15 de maio de 2020

CICS Workload Management (WLM) — A Sociedade do Anel e o Guardião Invisível que Decide o Destino das Transações

 

Bellacosa Mainframe apresenta o cics workload management wlm

☕ Um Café no Bellacosa Mainframe

CICS Workload Management (WLM) — A Sociedade do Anel e o Guardião Invisível que Decide o Destino das Transações

"Um bom rei não governa apenas pela força. Ele sabe onde cada recurso deve ser empregado para que todo o reino prospere."

No universo de O Senhor dos Anéis, poucos personagens percebiam que a guerra contra Sauron não seria vencida apenas por espadas, magia ou coragem. O verdadeiro desafio era administrar recursos extremamente limitados.

Havia poucos exércitos.
Poucos cavalos.
Pouca comida.
Pouco tempo.

Cada decisão precisava colocar os recursos certos no lugar certo.

No mundo do IBM Mainframe, acontece exatamente a mesma coisa.

Milhares de programas executam simultaneamente.

Todos querem CPU.

Todos querem memória.

Todos querem acesso ao disco.

Todos querem prioridade.

Se cada aplicação decidisse sozinha quando executar, o resultado seria um verdadeiro caos, semelhante aos exércitos de Mordor atravessando os portões de Minas Tirith ao mesmo tempo.

É exatamente para impedir esse caos que existe um dos componentes mais inteligentes já criados pela IBM:

Workload Manager (WLM)

Talvez seja um dos softwares mais brilhantes do z/OS e, curiosamente, um dos menos conhecidos pelos programadores COBOL iniciantes.

Hoje faremos uma longa viagem pela Terra Média do Mainframe para entender por que o WLM é considerado o grande estrategista invisível do sistema operacional.

Pegue seu café.

A viagem começa agora.


Capítulo I — O Reino onde Todos Querem a Mesma CPU

Imagine um enorme banco brasileiro.

São exatamente 9 horas da manhã.

Milhões de clientes começam a acessar:

  • Internet Banking

  • Aplicativo Mobile

  • PIX

  • TED

  • Cartões

  • Caixa eletrônico

  • Agências

  • Open Finance

  • APIs

  • Débito automático

Ao mesmo tempo...

o departamento financeiro inicia:

  • fechamento contábil

A auditoria executa:

  • consultas gigantes

O RH imprime:

  • folhas de pagamento

O marketing gera:

  • relatórios

A segurança inicia:

  • varreduras

Os DBAs:

  • RUNSTATS

  • REORG

  • BACKUP

Enquanto isso...

milhares de programas COBOL continuam executando normalmente dentro do CICS.

Todos querem exatamente os mesmos recursos.

Como decidir quem recebe CPU primeiro?


A primeira ideia (que não funciona)

Seria muito simples dizer:

Quem chegou primeiro executa primeiro.

Parece justo.

Mas imagine o seguinte.

Um relatório interno começou um segundo antes de um cliente tentar sacar dinheiro.

O relatório consome CPU durante vários segundos.

O saque precisa esperar.

Resultado?

O cliente pensa que o caixa eletrônico travou.

Na prática, o problema nunca foi falta de CPU.

Foi falta de inteligência para decidir quem deveria utilizá-la primeiro.

Foi exatamente esse problema que deu origem ao WLM.


Capítulo II — O Conselho de Elrond

Na Sociedade do Anel, nenhuma decisão importante era tomada por apenas uma pessoa.

Existia um conselho.

No z/OS também existe um conselho.

Esse conselho chama-se:

Workload Manager.

Toda vez que milhares de tarefas competem pelos recursos do sistema, o WLM analisa a situação antes de distribuir o poder computacional disponível.

Ele não pergunta:

Quem pediu primeiro?

Ele pergunta:

Quem é mais importante para o negócio?

Essa pequena mudança de pensamento revolucionou completamente o gerenciamento de desempenho dos mainframes modernos.


O que realmente é o WLM?

Muitos iniciantes acreditam que o WLM distribui CPU.

Isso é apenas uma pequena parte.

Na realidade, o WLM administra praticamente toda a estratégia operacional do z/OS.

Ele acompanha continuamente:

  • utilização da CPU

  • memória

  • filas

  • tempo de resposta

  • tempo de espera

  • I/O

  • paging

  • dispatching

  • prioridades

  • utilização das regiões

  • cumprimento dos SLAs

Enquanto tudo isso acontece...

ele recalcula prioridades diversas vezes por segundo.

É quase como um grande computador de xadrez jogando milhares de partidas simultaneamente.


Capítulo III — Gandalf nunca envia todos para a mesma batalha

Imagine Gandalf recebendo notícias da guerra.

Ele possui apenas:

  • 100 cavaleiros

Mas existem cinco batalhas acontecendo ao mesmo tempo.

Como distribuir?

Ele poderia dizer:

"Cada batalha recebe vinte soldados."

Parece justo.

Mas seria uma decisão terrível.

Se Minas Tirith cair...

não importa que outra batalha tenha vencido.

O reino acabou.

Então Gandalf faz algo diferente.

Ele identifica qual batalha é crítica.

Depois envia a maior parte dos recursos para ela.

É exatamente isso que o WLM faz.


O conceito mais importante: prioridades de negócio

Esse talvez seja o maior choque para quem vem de outras plataformas.

No Windows ou Linux normalmente pensamos:

"Este processo possui prioridade alta."

No z/OS não.

O pensamento é completamente diferente.

O WLM pensa assim:

"Qual atividade gera mais valor para o negócio neste momento?"

Essa diferença muda tudo.


O fluxo completo do WLM

Podemos representar seu funcionamento da seguinte maneira:

Cliente

↓

Transação CICS

↓

Região CICS

↓

z/OS

↓

Workload Manager

↓

CPU

Memória

Disco

I/O

↓

Tempo de Resposta

Observe que o WLM não executa a aplicação.

Quem executa continua sendo:

  • CICS

  • Batch

  • Db2

  • IMS

O WLM apenas administra os recursos.

É como um maestro.

Ele nunca toca violino.

Mas sem ele a orquestra vira barulho.


Capítulo IV — As Classes da Sociedade

Uma das partes mais importantes do WLM chama-se:

Service Class

Imagine a Sociedade do Anel.

Cada membro possui uma função.

Frodo

Missão crítica.

Sam

Suporte essencial.

Aragorn

Alta prioridade.

Legolas

Ataque rápido.

Gimli

Combate pesado.

Merry e Pippin

Importantes, mas podem esperar alguns segundos em determinadas situações.

No WLM acontece exatamente isso.

Cada tipo de trabalho pertence a uma classe.

Exemplo:

PIX

Meta

200 ms

Importance 1


Saque ATM

Meta

300 ms

Importance 1


Consulta de saldo

Meta

800 ms

Importance 2


Extrato

Meta

2 segundos

Importance 3


Relatórios internos

Meta

30 segundos

Importance 5

Perceba uma curiosidade.

O WLM não pergunta:

"Quem possui prioridade máxima?"

Ele pergunta:

"Quem precisa cumprir determinada meta?"

Essa filosofia recebe o nome de:

Goal-Oriented Management


Curiosidade Bellacosa

O WLM foi um dos primeiros grandes exemplos de computação orientada a objetivos (goal-oriented computing), décadas antes de termos AIOps e sistemas inteligentes modernos.

Em vez de obedecer regras fixas, ele procura continuamente cumprir metas de negócio. É uma ideia que hoje aparece em plataformas de nuvem, orquestradores de containers e sistemas autônomos, mas que já fazia parte do z/OS há muitos anos.


Capítulo V — O Palantír do z/OS

Como o WLM sabe que alguém está sofrendo?

Ele observa tudo.

Literalmente tudo.

Entre centenas de indicadores, ele monitora:

  • utilização da CPU

  • filas

  • espera por I/O

  • uso da memória

  • paging

  • tempo médio

  • throughput

  • response time

  • velocity

  • dispatch delay

  • enfileiramentos

É como se o WLM tivesse um Palantír observando continuamente todo o reino.

Enquanto ninguém percebe...

ele está recalculando prioridades.


Importance

Além da meta existe outro conceito extremamente importante.

Importance.

Ela representa o peso daquele serviço.

Imagine duas aplicações.

As duas estão atrasadas.

As duas precisam de CPU.

Quem recebe primeiro?

Aquela cuja Importance é maior.

Normalmente encontramos níveis como:

Importance 1

Missão crítica.

Importance 2

Muito importante.

Importance 3

Importante.

Importance 4

Baixa prioridade.

Importance 5

Background.


O banco durante uma Black Friday

Vamos imaginar um cenário real.

CPU:

99%.

Milhões de acessos.

Ao mesmo tempo chegam:

  • PIX

  • consultas

  • investimentos

  • relatórios

  • backups

  • batch

  • monitoramento

Sem WLM...

todos brigam igualmente.

Resultado:

  • lentidão geral

  • clientes irritados

  • SLA perdido

  • prejuízo

Com WLM...

o sistema toma decisões inteligentes.

PIX continua rápido.

Saques continuam rápidos.

Cartões continuam rápidos.

Relatórios esperam.

Backups aguardam.

O cliente sequer percebe que a CPU está completamente ocupada.

Essa é uma das maiores virtudes do WLM: ele não faz milagres, mas faz escolhas inteligentes.


Capítulo VI — O mapa da Terra Média do CICS

Um ambiente CICS corporativo dificilmente possui apenas uma região.

É comum encontrarmos arquiteturas como:

Usuários

↓

TOR

↓

AOR1

↓

AOR2

↓

AOR3

↓

FOR

↓

Db2

Cada região possui suas características.

Algumas executam aplicações.

Outras fazem comunicação.

Outras gerenciam arquivos.

O WLM auxilia a manter esse ambiente equilibrado, trabalhando em conjunto com recursos do CICS e do z/OS para que nenhuma região se torne um gargalo permanente.


CICSPlex SM não é WLM

Este é um erro clássico em entrevistas.

Muitos candidatos confundem os dois produtos.

Na prática:

CICSPlex SM

Gerencia o ambiente CICS.

  • regiões

  • roteamento

  • administração

  • monitoramento

  • gerenciamento operacional

WLM

Gerencia os recursos do z/OS.

  • CPU

  • prioridades

  • objetivos

  • service classes

  • dispatching

Eles trabalham juntos.

Jamais competem.


O papel do Sysprog

O programador COBOL normalmente não altera políticas de WLM.

Quem faz isso costuma ser o System Programmer (Sysprog) ou o especialista em desempenho.

Ele define:

  • Service Policies

  • Service Classes

  • Goals

  • Importance

  • Workloads

  • Activation Policies

Depois ativa a política.

A partir desse momento o próprio z/OS ajusta continuamente a distribuição de recursos.


O WLM não cria CPU

Existe uma frase muito conhecida entre especialistas em performance:

"Nenhum software produz processadores do nada."

Se o ambiente possui vinte CPUs físicas e a demanda exige quarenta, o WLM não fará mágica.

Ele fará algo muito mais útil.

Garantirá que as aplicações essenciais sobrevivam primeiro.


RMF — O Cronista de Gondor

Depois de definir políticas, surge a pergunta:

Funcionou?

Quem responde é o RMF (Resource Measurement Facility).

Ele registra indicadores como:

  • utilização da CPU

  • Response Time

  • Velocity

  • Goal Achievement

  • Delays

  • Waits

É o RMF que mostra se as metas estabelecidas pelo WLM estão realmente sendo alcançadas.


SMF — O Livro Vermelho do Reino

Enquanto o RMF mede o desempenho, o SMF (System Management Facility) registra a história do sistema.

Cada evento importante deixa rastros.

Esses registros são usados para:

  • Capacity Planning

  • Engenharia de Performance

  • Auditorias

  • Estudos de tendência

  • Ajustes de WLM

  • Investigação de incidentes

  • Cumprimento de SLAs

Por isso, profissionais de performance frequentemente analisam registros SMF antes de propor qualquer alteração nas políticas de WLM.


Passo a passo: como um especialista ajusta o WLM

Embora o processo varie entre empresas, um fluxo típico é:

  1. Coletar dados com RMF e SMF para entender o comportamento real do ambiente.

  2. Identificar gargalos, verificando quais Service Classes não estão atingindo seus objetivos.

  3. Classificar os workloads de acordo com a importância para o negócio.

  4. Definir ou revisar Goals e Importance, alinhando-os aos SLAs.

  5. Criar ou atualizar a Service Policy utilizando os painéis ISPF ou ferramentas como o z/OSMF.

  6. Ativar a política em um momento controlado.

  7. Monitorar continuamente o impacto das mudanças.

  8. Repetir o ciclo, pois o ambiente de produção evolui constantemente.

O WLM não é configurado uma única vez para sempre; ele acompanha a evolução do negócio.


Dicas para um Programador COBOL Padawan

Se você está começando no mundo do CICS, lembre-se destas lições:

  • Nem toda lentidão vem do seu programa. Às vezes o código está aguardando CPU, I/O ou recursos disputados.

  • Aprenda os conceitos de Service Class, Goal, Importance e Service Policy. Eles aparecem com frequência em entrevistas e em projetos corporativos.

  • Conheça o básico de RMF e SMF. Mesmo sem administrá-los, entender seus relatórios ajuda a conversar com equipes de infraestrutura.

  • Escreva programas eficientes. Um COBOL bem otimizado reduz consumo de CPU e facilita o trabalho do WLM.

  • Pense sempre no negócio. Uma transação crítica deve ser projetada para responder rapidamente, pois ela provavelmente estará associada às Service Classes mais importantes.


Curiosidades

  • O WLM é considerado um dos pilares do conceito de autonomic computing da IBM, pois toma decisões de forma automática para cumprir metas de desempenho.

  • Muitas ideias usadas atualmente em plataformas de computação em nuvem, como priorização dinâmica de cargas e gerenciamento por objetivos, já estavam presentes no z/OS décadas antes.

  • Em ambientes financeiros, uma política de WLM bem ajustada pode representar milhões de reais economizados ao evitar a necessidade de ampliar capacidade apenas para absorver picos temporários.

  • O WLM não conhece o código COBOL; ele enxerga serviços, metas e comportamento do sistema. Isso reforça a importância de integrar desenvolvimento, operações e engenharia de performance.


Easter Egg Bellacosa Mainframe

Imagine que o Anel Único representa a CPU disponível.

Todos querem usá-lo.

Saruman deseja o Anel para dominar a Terra-média.

Sauron deseja o Anel para conquistar todos os povos.

Boromir acredita que poderia utilizá-lo para proteger Gondor.

Mas Gandalf compreende uma verdade fundamental:

O poder absoluto entregue à pessoa errada destrói todo o reino.

O WLM pensa exatamente assim.

Ele nunca entrega todos os recursos para quem simplesmente os solicita primeiro.

Ele entrega recursos para quem mantém o reino funcionando.

No Mainframe, o verdadeiro herói não é o programa que consome mais CPU.

É aquele que entrega valor ao negócio no momento certo, usando apenas os recursos necessários.

Assim como a Sociedade do Anel venceu porque cada integrante cumpriu sua missão, um ambiente CICS de alta disponibilidade permanece saudável porque CPU, memória e I/O são distribuídos com inteligência. O WLM é o guardião silencioso dessa ordem: raramente aparece nos holofotes, mas é um dos principais responsáveis por manter o "reino" do IBM Z funcionando de forma estável, eficiente e preparado para enfrentar até as cargas mais intensas.

quarta-feira, 13 de maio de 2020

O Fator Ônibus Rules : O Dia em que um Programador COBOL Descobriu que o Maior Risco do Mainframe Não Era um ABEND... Era uma Pessoa Só

 

Bellacosa Mainframe e o fator onibus rules em engenharia de software

☕ Um Café no Bellacosa Mainframe

O Fator Ônibus Rules sem Mistérios

O Dia em que um Programador COBOL Descobriu que o Maior Risco do Mainframe Não Era um ABEND... Era uma Pessoa Só

"Computadores não guardam conhecimento. Pessoas guardam. O problema começa quando apenas uma pessoa sabe como tudo funciona."


Introdução — O Incidente na USS Enterprise

Imagine que a USS Enterprise esteja explorando um setor desconhecido da galáxia.

O Capitão Kirk está em uma missão diplomática.

Spock foi capturado pelos romulanos.

Scotty está preso na casa de máquinas tentando impedir uma explosão no núcleo de dobra.

McCoy está operando um tripulante.

Sulu está pilotando uma nave auxiliar.

Chekov perdeu comunicação.

Quem sabe operar toda a Enterprise?

Se apenas Scotty conhece o funcionamento do motor de dobra...

...a missão inteira depende dele.

No desenvolvimento de software acontece exatamente a mesma coisa.

Existe um conceito bastante conhecido na Engenharia de Software chamado Bus Factor (Fator Ônibus).

É uma métrica extremamente simples.

E extremamente assustadora.


O que é o Bus Factor?

Bus Factor mede:

Quantas pessoas podem deixar um projeto antes que ele deixe de funcionar.

Ou, na definição clássica:

Quantas pessoas precisariam ser atropeladas por um ônibus para que o projeto ficasse inviável.

Apesar do nome parecer humor negro, o objetivo nunca foi falar de acidentes.

Hoje muitas empresas preferem nomes como:

  • Lottery Factor

  • Truck Factor

  • Beer Truck Factor

  • Departure Factor

A ideia é a mesma.

Se apenas uma pessoa conhece todo o sistema...

Bus Factor = 1

Se cinco pessoas dominam tudo...

Bus Factor = 5

Quanto maior o número...

mais saudável é o projeto.


A origem do termo

O conceito apareceu informalmente nos anos 1990 em equipes de desenvolvimento.

Depois foi bastante difundido por comunidades Open Source.

Grandes projetos como:

  • Linux

  • Apache

  • PostgreSQL

  • Kubernetes

passaram a discutir continuamente como aumentar seu Bus Factor.

Hoje empresas como Google, Microsoft, IBM, Amazon e Meta utilizam práticas justamente para evitar esse risco.


Por que isso acontece?

Porque conhecimento técnico é caro.

E conhecimento acumulado durante anos é mais caro ainda.

Imagine um sistema bancário COBOL criado em 1987.

Foram feitas:

  • milhares de correções

  • centenas de integrações

  • dezenas de migrações

Mas apenas João conhece:

  • o motivo daquele IF estranho

  • porque existe aquele PERFORM GO TO

  • porque aquele arquivo VSAM não pode ser reorganizado na sexta-feira

Sem João...

ninguém entende.


O verdadeiro patrimônio não é o código

Muitos pensam:

"O código está no Git."

Não.

O código é apenas uma fotografia.

O conhecimento está na cabeça das pessoas.

Por exemplo.

Imagine este trecho:

IF CODIGO = 98
    MOVE "N" TO PROCESSAR
END-IF

Todo mundo consegue ler.

Mas somente um programador sabe que:

"98 significa agência incorporada antes da fusão de 1999."

Isso nunca foi documentado.


O Bus Factor no Mainframe

Mainframe possui uma característica curiosa.

Sistemas vivem por décadas.

Enquanto aplicações Web costumam durar poucos anos...

há programas COBOL executando desde os anos 80.

Isso cria um fenômeno interessante.

Os programadores mudam.

O sistema permanece.

Quem sobrevive?

O conhecimento.


O Programador Lendário

Toda empresa possui um.

Normalmente conhecido por frases como:

"Pergunta para o Carlos."

ou

"Só a Maria sabe."

ou

"Não mexe nisso."

ou

"Esse módulo é do Roberto."

Quando alguém fala isso...

o Bus Factor acabou de aparecer.


Um caso clássico

Imagine um programa COBOL de 250 mil linhas.

Existe um JOB chamado:

PGM=FECHAMES

Todos sabem executá-lo.

Ninguém sabe como funciona.

Quando aparece erro...

esperam José voltar das férias.

Isso significa:

Bus Factor = 1


Como identificar um Bus Factor baixo?

Existem sinais muito claros.

Sempre chamam a mesma pessoa

"Fulano resolve."

Isso é risco.


Férias geram pânico

A equipe evita liberar férias.

Outro alerta.


Ninguém revisa aquele código

Porque ninguém entende.


Documentação inexistente

Tudo está "na memória".


Medo de alterar

Frases como:

"Melhor não mexer."

indicam conhecimento concentrado.


O impacto nos projetos

Um Bus Factor baixo provoca:

  • atrasos

  • retrabalho

  • bugs

  • decisões lentas

  • dependência

  • burnout

E principalmente:

medo.


Burnout técnico

O especialista nunca descansa.

Nunca tira férias.

Nunca muda de área.

Nunca cresce.

Porque virou gargalo.

Ele deixa de ser desenvolvedor.

Passa a ser suporte permanente.


O paradoxo

Muitos profissionais acreditam:

"Quanto menos gente souber, mais indispensável eu fico."

Na realidade acontece o contrário.

Empresas modernas promovem quem compartilha conhecimento.

Porque líderes multiplicam.

Guardiões escondem.


O Bus Factor no COBOL

Imagine um sistema composto por:

800 programas COBOL

120 CICS

300 JCL

90 PROC

60 COPYBOOK

15 VSAM

120 tabelas DB2

Apenas um analista conhece:

  • arquitetura

  • fluxo

  • dependências

Esse sistema possui Bus Factor baixíssimo.


Como aumentar o Bus Factor?

1. Documentação viva

Não basta Word esquecido.

Documentação precisa acompanhar o código.


2. Code Review

Todo código passa por outra pessoa.

Assim o conhecimento circula.


3. Pair Programming

Duas pessoas desenvolvendo juntas.

Muito comum em Extreme Programming.


4. Rotação de equipes

Hoje você mantém cobrança.

Amanhã cartões.

Depois investimentos.

Conhecimento distribuído.


5. Treinamentos internos

Mini workshops.

Lightning Talks.

Brown Bag Sessions.

Lunch & Learn.


6. Diagramas

Fluxos ajudam mais do que textos enormes.


7. Wiki

Confluence.

GitHub Wiki.

Markdown.

Obsidian.

Qualquer coisa melhor que memória humana.


8. Comentários úteis

Não explique COBOL.

Explique regra de negócio.

Ruim:

MOVE X TO Y

Bom:

* Conta especial criada após Resolução BACEN 2451

O papel dos COPYBOOKS

No Mainframe, COPYBOOKS também espalham conhecimento.

Padronizam:

  • layouts

  • mensagens

  • estruturas

  • contratos

Isso reduz dependências.


A importância dos testes

Testes também documentam.

Um bom teste responde:

"O que esse programa deveria fazer?"


Integração com IA

Hoje IA ajuda muito.

Ela pode:

  • explicar COBOL

  • gerar documentação

  • criar diagramas

  • resumir programas

Mas atenção.

Ela aprende com o código disponível.

Se o conhecimento nunca foi registrado...

nem a IA consegue descobrir.


Bus Factor e sucessão

Toda empresa deveria perguntar:

"Se João sair amanhã, conseguimos continuar?"

Se a resposta for "não"...

o problema já existe.


Curiosidade

Algumas empresas medem oficialmente:

  • percentual de conhecimento compartilhado

  • quantidade de revisores

  • cobertura de documentação

Tudo isso influencia o Bus Factor.


Um exemplo divertido

Imagine o motor de dobra da Enterprise.

Scotty conhece:

  • manutenção

  • peças

  • ajustes

  • gambiarra klingon

Se Scotty aposentar...

a nave para.

Kirk então decide:

  • treinar Geordi (sim, ele ainda nem nasceu nesta linha temporal!)

  • criar manuais

  • registrar procedimentos

Bus Factor aumenta.


Erros mais comuns

Heroísmo

"O sistema depende de mim."

Não deveria.


Falta de documentação

Erro clássico.


Não ensinar

Conhecimento escondido envelhece.


Medo de perder espaço

Na prática ocorre o contrário.

Quem ensina cresce.


Sistemas sem arquitetura

Tudo funciona.

Ninguém entende.


O que um Padawan COBOL deve aprender?

Nunca seja apenas executor.

Entenda:

  • negócio

  • arquitetura

  • fluxo

  • integração

  • histórico

Quanto mais contexto...

mais valor você gera.


Outros termos curiosos da Engenharia de Software

O Bus Factor faz parte de uma enorme coleção de conceitos curiosos usados por arquitetos de software.

1. Technical Debt (Dívida Técnica)

Atalhos tomados hoje que gerarão custo no futuro.


2. Yak Shaving

Resolver dezenas de problemas irrelevantes antes do verdadeiro.


3. Bike Shedding

Horas discutindo detalhes pequenos.

Exemplo:

"A cor do botão."

Enquanto ninguém fala da arquitetura.


4. Golden Hammer

Usar sempre a mesma tecnologia.

"Para tudo usamos Java."

Mesmo quando não faz sentido.


5. Cargo Cult Programming

Copiar código sem entender.

Muito comum na internet.


6. Spaghetti Code

Código totalmente desorganizado.


7. Lasagna Code

Camadas demais.

Tudo depende de tudo.


8. Big Ball of Mud

Sistema gigantesco sem arquitetura definida.

Muito comum em sistemas antigos.


9. God Object

Objeto que faz absolutamente tudo.


10. Lava Flow

Código antigo que ninguém remove.

Porque ninguém sabe se ainda é usado.


11. Boiling Frog

Problemas pequenos acumulam lentamente.

Quando percebem...

o sistema virou caos.


12. Death March Project

Projeto impossível desde o início.

Prazo irreal.

Equipe pequena.

Escopo gigante.


13. Brooks's Law

Do clássico The Mythical Man-Month:

"Adicionar pessoas a um projeto atrasado o atrasará ainda mais."

Porque novos membros precisam aprender.


14. Conway's Law

O software reflete a estrutura organizacional.

Departamentos separados criam sistemas separados.


15. Murphy's Law

Tudo que pode falhar...

falhará.

Por isso existem testes.


16. KISS

Keep It Simple.

Soluções simples sobrevivem mais.


17. YAGNI

You Aren't Gonna Need It.

Não implemente funcionalidades imaginárias.


18. DRY

Don't Repeat Yourself.

Evite duplicação.


19. SOLID

Cinco princípios para software sustentável.


20. Boy Scout Rule

"Deixe o código um pouco melhor do que encontrou."

Uma pequena melhoria por vez transforma um sistema inteiro ao longo dos anos.


O grande ensinamento

O verdadeiro objetivo do Bus Factor não é medir acidentes.

É medir resiliência organizacional.

Em um ambiente Mainframe, onde sistemas podem sobreviver por 30, 40 ou até 50 anos, o ativo mais valioso não é o servidor IBM Z, nem o Db2, nem o CICS, nem o código COBOL. É o conhecimento coletivo da equipe.

Quando apenas uma pessoa conhece um módulo crítico, cria-se um ponto único de falha tão perigoso quanto um disco sem redundância ou um banco de dados sem backup. Por outro lado, quando o conhecimento é compartilhado por meio de documentação, revisões de código, mentorias, treinamentos, programação em pares e rotação de responsabilidades, o sistema torna-se mais robusto e a equipe evolui em conjunto.

Para um Programador COBOL Padawan, a maior lição é esta: não aspire ser insubstituível; aspire ser inesquecível. O profissional que ensina, documenta, orienta e forma novos especialistas deixa um legado muito maior do que aquele que guarda segredos técnicos. Assim como na Frota Estelar, uma nave não depende de um único oficial para cumprir sua missão. Ela depende de uma tripulação preparada, colaborativa e capaz de assumir o comando quando necessário.

No fim das contas, o melhor indicador de maturidade de uma equipe não é quantas pessoas sabem tudo, mas quantas conseguem continuar navegando com segurança quando qualquer membro precisa se afastar. Esse é o verdadeiro espírito do Bus Factor: transformar conhecimento individual em patrimônio coletivo, garantindo que a missão continue, independentemente de quem esteja na ponte de comando.

terça-feira, 12 de maio de 2020

🎞️ Crônicas da Juventude Paulistana – Capítulo 3: O Amor, a Vitrolinha e o Caos Adolescente

 

Memorias da Amanda

🔥🖤 Post Bellacosa Mainframe / El Jefe – “Amanda, o Xu, o Boris e Eu: o Bug Romântico de 1991”

🎞️ Crônicas da Juventude Paulistana – Capítulo 3: O Amor, a Vitrolinha e o Caos Adolescente


Existem amores que não acabam — apenas entram em loop, igual disquete riscado.
E tem histórias que, quando a gente lembra, dá aquele misto de riso, vergonha e nostalgia de um tempo em que o amor era analógico e o coração vivia sem antivírus.


🧃 O Triângulo dos Perdidos

No começo era simples:
Eu, Amanda e o tarô.
Mas como tudo que envolve adolescentes, som de Legião e ciúme gratuito, o código-fonte da história logo começou a travar.

Foi então que descobri a primeira verdade de bastidor:
O Boris, aquele por quem minha irmã Vivi suspirava, na real, estava era de olho na Soninha — a discreta, a que ninguém percebia até sorrir.
E enquanto isso, a Amanda, minha musa, virou personagem central de um script digno de novela da Manchete:
um triângulo amoroso entre eu, ela e o Xu — o sujeito de boné virado, sorriso fácil e coleção de LPs dos Engenheiros.


Amanda em Ferraz de Vasconcelos


🚲 O amor pedalado

Pra ver a Amanda, eu fazia o que hoje pareceria ficção:
atravessava cidades de bicicleta, da minha quebrada até Ferraz de Vasconcelos, só pra passar a tarde no quintal da casa dela.
O chão de cimento quente, o som da vitrolinha tocando “Biquíni Cavadão”, “Barão Vermelho” ou um “Rádio Táxi” meio arranhado, e aquele grupo de adolescentes debatendo a vida como se fosse um manifesto.

A gente falava de tudo — escola, música, amores, sonhos e tragédias inventadas.
E no meio disso, o amor parecia um jogo de tabuleiro:
cada jogada valia um beijo, uma DR ou uma semana de silêncio.


💞 Amanda, a bugadora de corações

A Amanda tinha aquele tipo de brilho que confundia o processador emocional de qualquer um.
Num dia, era poesia pura.
No outro, caos completo.
Ora ficava comigo, ora com o Xu, dependendo da fase lunar e do humor da vitrolinha.
A gente achava tudo isso o máximo — como se o amor fosse uma Olimpíada de egos e beijos roubados.

Mas o destino, esse programador irônico, guardava o plot twist:
num sábado qualquer, com cheiro de pastel de feira e fita rebobinando com caneta Bic, ela simplesmente apareceu de mãos dadas com um terceiro cara.
Um nome novo no elenco.
Fim de jogo.


🥀 O bug sentimental

Ali, entre o choque e a risada amarga, percebi o que ninguém ensina nos livros de autoajuda:
a adolescência não é sobre “felizes para sempre”.
É sobre sentir tudo, sem saber o que fazer com isso.
O coração era um HD pequeno demais pra tanta emoção, e o amor — esse programa experimental — vivia travando.

O Xu sumiu.
O Boris continuou seu rolê com a Soninha.
A Amanda virou lenda urbana dos bailinhos.
E eu?
Eu fiquei com uma lembrança que ainda hoje toca baixinho, feito vinil arranhado numa vitrolinha velha.


🖤 Epílogo de El Jefe

O tempo passou, o amor virou meme, e o coração — aquele adolescente doido — aprendeu a rir das próprias quedas.
Mas sempre que o cheiro de maresia e música dos 90 me encontra, eu lembro de Ferraz, do portão de ferro, da bicicleta cansada e da Amanda com seu sorriso que desafiava a lógica.

Porque no fim das contas, a gente não amava pessoas.
Amava o sentir — aquele bug doce e dolorido que fazia o mundo parecer possível.


☠️ Filosofia Bellacosa Mainframe:
O amor dos anos 90 não tinha WhatsApp, crush, nem ghosting.
Mas tinha carta, tinha espera, tinha emoção sem backup.
E quando travava, a gente não formatava o coração — só deixava ele descansar…
até o próximo play.


segunda-feira, 11 de maio de 2020

🎭 Crônicas da Noite Paulistana – Capítulo 2: A Vivi, o Boris e a Amanda

 


🎭 Crônicas da Noite Paulistana – Capítulo 2: A Vivi, o Boris e a Amanda


Existem histórias que não se contam — apenas se revivem com o gosto de guaraná quente e som de fita K7 rodando torta no walkman e aquela ressaca de vodka barata.
Essa começa num tempo em que o coração era um modem discando sem senha: barulhento, lento, mas sempre tentando conectar.
Ano de 1990, bairro extremo leste de São Paulo, noites cheirando a laquê e adolescência.


💋 A lógica vivianeriana

Minha irmã, Vivi, sempre teve um talento especial pra transformar o caos em estratégia.
E naquela época ela gostava de um rapaz — o tal Boris — figura clássica dos bailinhos suburbanos: cabelo platinado, topete, um skatista bonachão e cheio de amigos e coração de gelatina.
O problema, segundo a Vivi é que o Boris arrastava asa para Amanda, a musa de olhar misterioso e camiseta do The Smiths.

A Vivi, então, armou seu plano tático:

“Se o Boris gosta da Amanda, e a Amanda se interessar por você… o Boris olha pra mim!”

E assim, com toda a lógica vivianeriana que só uma mente de 15 anos é capaz de criar, fui arrastado pra dentro do enredo, juro que o intuito era ajudar minha maninha.


🧃 O estranho no ninho

De repente, lá estava eu — um invasor elegante um semi-góticos, entre skatistas.
Me sentia mais um bug num programa que não reconhecia meu formato.
Mas entre risadas, refrigerantes suspeitos e a trilha sonora de “Enjoy the Silence”, comecei a me enturmar.

Até que numa festinha de garagem, a dita festa da Soninha do poste anterior — luz piscando, pôster do Legião na parede e o som de vinil chiando — ela apareceu: Amanda.
Cabelo bagunçado, sorriso de quem sabia que podia causar pequenos desastres sentimentais e conseguiu.


🔮 O tarô, o beijo e o caos

Alguém cochichou pra ela:

“O Vagner lê tarô!”

E pronto.
Amanda veio até mim com aquele ar curioso, meio debochado:

“Lê meu destino, vai… quero saber se a noite promete.”

Dei risada, espalhei mentalmente as cartas — numa mesa de faz de conta improvisada, um baralho, um copo de bombeirinho e um universo de intenções não ditas.
Ela olhou as cartas, depois olhou pra mim.
Disse baixinho:

“Não precisa ler… já entendi.”

E antes que eu soubesse o que estava acontecendo, ela me beijou, sim, ela tomou a iniciativa.
Ali, entre o chiado da fita e o cheiro de perfume barato, o tempo travou.


💞 Romance de folhetim, versão 90’s

Começamos um namoro que parecia novela mexicana passada em FM estéreo.
Tinha ciúmes, bilhetinhos, sumiços, reconciliações e beijos roubados em pontos de ônibus.
Cada reencontro era uma trilha sonora — às vezes RPM, às vezes The Cure, às vezes Nenhum de Nós.

Eu, o intruso que virou protagonista.
A Amanda, o caos em forma de encanto.
E a Vivi, assistindo tudo, dividida entre o ciúme e a vitória parcial de seu plano torto.


🖤 Epílogo de El Jefe

O tempo passou, as tribos mudaram, o Boris sumiu no mapa, a Amanda virou lembrança com trilha sonora, e a Vivi — bom, a Vivi continua sendo aquela mente que transformava qualquer dor em teoria da conspiração emocional.

Mas toda vez que escuto o barulho de um walkman fechando, lembro daquela garagem abafada, do beijo inesperado, e do tarô que nunca previu que o destino também gosta de brincar com a gente.


☠️ Filosofia Bellacosa Mainframe:
Nos anos 90, a juventude era feita de planos malucos, beijos rápidos e emoções que não cabiam em stories.
E o tarô?
O tarô não mentia.
Só não avisava que a carta do Amor vinha sempre com juros de saudade.

🕶️ Memórias de uma festa muito louca – verão, vinil e caos adolescente de 1990




🕶️ Memórias de uma festa muito louca – verão, vinil e caos adolescente de 1990


Existem noites que não cabem em calendário — ficam ali, em loop dentro da memória, rodando como um vinil arranhado de The Cure, misturado com cheiro de cigarro, perfume barato e o zumbido dos amplificadores.
Essa história é de 1990, o ano em que tudo era possível: o Brasil redescobria a democracia, São Paulo fervia em tribos, e a juventude… bom, a juventude testava todos os limites da sanidade.


🎛️ O convite indecente da Vivi

Tudo começou com minha irmã, Vivi — a dona da bagunça, a curadora oficial da minha juventude desgovernada.
Ela apareceu certa noite dizendo:

“Você vai comigo numa festa. Vai ser diferente.”

Diferente era pouco.
A Vivi era do tipo que trocava o uniforme da escola por uma jaqueta militar cheia de patches, vivia entre bailinhos, matinês e o subterrâneo da cena carecas do subúrbio e eu no oposto na cena gótica paulistana.
Eu era o irmão mais velho, meio nerd e as vezes orbitava esse mundo underground— ora curioso, ora arrastado — até o dia em que ela resolveu que eu precisava “socializar com o grupo” da classe dela na escola..
Aceitei, meio sem saber no que estava me metendo.


🏚️ A casa, o som, o caos

A festa acontecia numa casa velha em Ferraz de Vasconcelos — paredes sem reboco, dessas com fios a mostra e construção sempre em curso.

As luzes eram fracas, o som era alto, e o repertório ia de Joy Division a Ira!, passando por Legião Urbana, Siouxsie and the Banshees e um lado B de Ultraje a Rigor que só DJ de fita cassete conhecia.

Foi lá, entre copos de refrigerante turvo e risadas nervosas, que eu conheci Amanda, mal sabia eu, que o treco era armado.
Ela tinha o cabelo cumprido no famoso corte Pigmalião, um brotinho bem graciosa, uma camiseta do The Smiths e um olhar que misturava desafio com tédio.
Falava pouco, ria pouco, mas quando ria, o tempo travava — como quando o walkman engole a fita.


💥 A noite que saiu do script

Tudo ia bem até que alguém trouxe uma garrafa suspeita, e a festa virou experimento social.
Tinha quem dançasse, quem chorasse, quem filosofasse sobre o fim do mundo.
Lá pelas duas da manhã, o quarto de hóspedes virou pista improvisada, o quintal virou confessionário, e o lider da patota— um skatista descolado chamado Boris — decidiu participar da coreografia.

Amanda me puxou pra varanda e disse:

“Essas festas são como a vida. Todo mundo acha que tem o controle, mas no fundo ninguém sabe o que tá fazendo.”

Naquele instante, entre o som distante de New Order e o frio cortando o ar, percebi que ela estava certa — e que a adolescência é isso: uma sucessão de erros bonitos e lembranças meio borradas que o tempo transforma em poesia.


🖤 Epílogo: AMANDA 

O sol nasceu como um deboche.
A casa parecia ter sido bombardeada por glitter e Marlboro.
A Vivi dormia abraçada numa caixa de vinil, e Amanda, ah Amanda curtimos um bom momento e a Amanda, entrou para a história como a garota que me pegou, misturada a cartas de Tarot, papos exotéricos e drinks de vodka barata...

Mas toda vez que ouço “Love Will Tear Us Apart”, o coração dá aquele segfault leve — tipo sistema tentando reler um setor antigo do disco rígido da memória.


🧃 Filosofia de Balcão do El Jefe

A juventude dos anos 90 foi o último sistema operacional analógico: instável, bonito, perigoso, cheio de vírus e músicas boas.
E as Amandas que passaram pela vida foram as atualizações que nunca mais vieram — mas deixaram log no coração.


☠️ Dica de El Jefe:
Se um dia você encontrar uma fita K7 velha com o nome “Festa da Soninha 1990”, não jogue fora.
Coloque pra tocar.
Deixe o chiado preencher o silêncio.
E lembre-se:

“A gente não viveu pra entender — viveu pra sentir.” 

Vagner Renato Bellacosa, IBM Champion e especialista em IBM Mainframe
IBM Z17 SYSTEM ONLINE
Sobre o autor

Vagner Renato Bellacosa

IBM Champion 2026 • Especialista em IBM Mainframe

Vagner Renato Bellacosa trabalha com IBM Mainframe desde 1988 , é IBM Champion e especialista em COBOL, CICS, Db2, z/OS e IBM Z. Compartilha experiências profissionais, conhecimento técnico, história da computação e práticas do universo mainframe para aproximar novas gerações das tecnologias que sustentam empresas, bancos e governos ao redor do mundo.

IBM Champion IBM Z COBOL CICS Db2 z/OS Mainframe desde 1988
GitHub LinkedIn
Inicializando conteúdo...