[PY] Planned

NetDevOps Scripts

#python#netmiko#automation

Aqui está um texto de teste estruturado especificamente para acionar todas as regras do seu novo CSS brutalista. O tema é baseado em um cenário de laboratório de redes e self-hosting, ideal para o seu projeto de documentação.


Preparando o Ambiente (Oracle Cloud)

Para iniciar o deploy deste laboratório, precisamos garantir que o host de destino esteja corretamente provisionado e acessível via SSH. A arquitetura deste projeto foi desenhada para rodar com o mínimo de overhead possível.

AVISO DO SISTEMA: Antes de iniciar o deploy dos novos contêineres, verifique o consumo de recursos da sua instância no Oracle Cloud. Embora o Free Tier ofereça 12GB de RAM, o acúmulo de serviços ativos pode causar gargalos na rede e travamentos inesperados.

Dependências de Rede

Antes de prosseguir para a execução dos scripts, certifique-se de que os seguintes itens estão configurados na sua máquina local e no servidor:

  • Acesso root ou privilégios de sudo configurados no servidor de destino.
  • Docker e Docker Compose devidamente instalados e atualizados na máquina.
  • Regras de Ingress do firewall da Oracle configuradas para permitir tráfego na porta 8443.
  • Chaves SSH RSA trocadas e validadas para automação sem senha.

Deploy da Infraestrutura

Abaixo está o manifesto necessário para subir os serviços do laboratório. Copie o arquivo e salve-o no seu diretório /opt/lab-infra/.

Topologia e Roteamento

A rede em bridge (isolada) garante que o nosso serviço de monitoramento não conflite com outras aplicações que já estão rodando na instância.

Automação de Checagem (Python)

Para não termos que validar o status do serviço manualmente toda vez, criei um script de automação básico. Ele faz o bypass das checagens manuais e retorna o status code do nosso novo serviço rodando no contêiner.

import requests
import time

def check_service_status(target_ip, port=8443):
    url = f"https://{target_ip}:{port}/health"
    
    try:
        response = requests.get(url, verify=False, timeout=5)
        if response.status_code == 200:
            print(f"[+] SUCCESS: Serviço respondendo em {target_ip}:{port}")
        else:
            print(f"[-] ERROR: Status {response.status_code} recebido.")
    except requests.ConnectionError:
        print("[!] FATAL: Conexão recusada. Verifique o firewall ou o contêiner.")

if __name__ == "__main__":
    server_ip = "129.150.xxx.xxx"
    check_service_status(server_ip)