Mostrando postagens com marcador Linux. Mostrar todas as postagens
Mostrando postagens com marcador Linux. Mostrar todas as postagens

terça-feira, 29 de abril de 2025

Waiting for confirmation of MySQL service startup...

Docker travado em “Waiting for confirmation of MySQL service startup”

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Docker travado em “Waiting for confirmation of MySQL service startup”

Esse erro, apesar de simples à primeira vista, é um dos travamentos mais silenciosos e frustrantes ao tentar migrar containers MySQL. Logo após o primeiro docker run, o container trava antes mesmo de subir:

Waiting for confirmation of MySQL service startup

Esse tipo de erro normalmente indica que algo no volume de dados está impedindo a inicialização do banco, e o entrypoint padrão do container está preso esperando algo que não virá.

🔍 Possíveis causas

  • Volume com dados parcialmente migrados ou corrompidos
  • Permissões erradas nos arquivos do MySQL
  • Arquivos de instalação (como ibdata1, auto.cnf) presentes mas inválidos
  • Configuração personalizada my.cnf quebrada ou incompatível

🛠️ Como resolver

1️⃣ Testar sem volume

Rode o container limpo, sem montar volume. Se funcionar, o problema está nos dados:

docker run -e MYSQL_ROOT_PASSWORD=test --rm mysql:5.7

2️⃣ Verificar estrutura do volume

Confira se o volume está realmente com os arquivos corretos do MySQL:

ls -la /var/lib/mysql

Se necessário, corrija permissões:

chown -R mysql:mysql /var/lib/mysql

3️⃣ Apagar arquivos de PID ou socket

Se você migrou arquivos com o banco ligado, talvez arquivos "fantasmas" estejam bloqueando o start:

rm -f /var/run/mysqld/mysqld.pid
rm -f /var/run/mysqld/mysqld.sock

4️⃣ Ver logs detalhados

Use essas variáveis para visualizar o que está acontecendo:

-e MYSQL_LOG_CONSOLE=true
--log-error-verbosity=3

5️⃣ Teste interativo

Entre no container antes do daemon tentar iniciar:

docker run -it --rm -e MYSQL_ROOT_PASSWORD=test mysql:5.7 bash
mysqld --initialize --user=mysql
mysqld
  

Isso revelará erros internos antes que o script padrão tente inicializar o banco e trave.

"Nem sempre o MySQL trava por estar corrompido. Às vezes ele só está perdido em um novo lugar, tentando achar o caminho de casa."

Ao migrar um container MySQL, certifique-se de que os dados estão íntegros, as permissões corretas e o ambiente limpo. Um banco de dados exige cuidado — mesmo em um mundo de containers descartáveis.

segunda-feira, 28 de abril de 2025

Migrando Containers

Como Migrar um Container Docker para Outro Servidor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como Migrar um Container Docker para Outro Servidor

Saiba como transportar containers e volumes com segurança entre máquinas diferentes usando comandos simples.

📦 Método 1: Exportar container e volumes manualmente

1. Crie a imagem a partir do container

docker commit meu_container minha_imagem:latest

2. Exporte a imagem para um arquivo

docker save minha_imagem:latest -o minha_imagem.tar

3. Exporte dados do volume (se aplicável)

tar czf meus_dados.tar.gz /caminho/do/volume

4. Transfira para o novo servidor

scp minha_imagem.tar meus_dados.tar.gz usuario@servidor:/caminho/destino

5. Importe a imagem e os dados no novo host

docker load -i minha_imagem.tar
tar xzf meus_dados.tar.gz -C /caminho/destino

6. Suba novamente o container

docker run -d -v /caminho/destino:/dados minha_imagem

🧩 Método 2: Usando Docker Compose (ideal para múltiplos serviços)

1. Copie o arquivo docker-compose.yml e os volumes

Garanta que os dados estejam compactados ou montados via diretórios locais.

2. No novo servidor, execute:

docker-compose up -d

Essa abordagem é mais prática para aplicações complexas ou multi-containers.

"Containers são passageiros, mas dados são valiosos. Cuide da migração de ambos."

Sobre o Sysadmin Urbano

O Sysadmin Urbano nasceu da vivência real no front das operações de infraestrutura moderna. Aqui falamos de servidores, containers, automação, boas práticas e também dos desafios invisíveis da rotina de quem mantém sistemas vivos. Sem fórmulas mágicas, sem tutoriais pela metade — apenas conteúdo prático, direto e feito para quem sabe que a TI é tanto técnica quanto sobrevivência.

🔗 Confira mais artigos ou volte para a página inicial.

Gostou deste conteúdo?

Siga o Sysadmin Urbano para mais artigos técnicos sobre Infraestrutura, SysOps e DevOps.

Voltar para a página inicial

domingo, 27 de abril de 2025

Como expurgar binlogs do MySQL

Como expurgar binlogs do MySQL com a partição cheia

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como expurgar binlogs do MySQL quando a partição está 100% cheia

O que fazer quando o disco enche e o MySQL trava por conta dos binlogs acumulados.

📦 O problema

Quando a partição do servidor MySQL atinge 100% de uso, o banco de dados não consegue mais gravar novos arquivos binários nem atualizar o index (mysql-bin.index), impedindo o expurgo automático dos binlogs antigos.

🔧 Solução recomendada (com MySQL parado)

1. Pare o MySQL

sudo systemctl stop mysql

2. Acesse a pasta dos binlogs

cd /var/lib/mysql

3. Liste os arquivos e remova os antigos manualmente

ls -lh mysql-bin.*
sudo rm mysql-bin.000001 mysql-bin.000002

4. Edite o index mysql-bin.index

Remova as linhas que apontam para os arquivos deletados:

sudo nano mysql-bin.index

5. Inicie novamente o MySQL

sudo systemctl start mysql

💡 Alternativa com o MySQL em execução

Caso o MySQL ainda esteja rodando (com algum espaço livre):

PURGE BINARY LOGS TO 'mysql-bin.000010';

ou:

PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;

✅ Dica de prevenção

Adicione ao seu my.cnf:

expire_logs_days = 7
max_binlog_size = 100M
"Às vezes, apagar com cuidado é a melhor forma de manter o controle."

sábado, 26 de abril de 2025

API do Zabbix via Bash

Testando a API do Zabbix via Bash

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Testando a Conexão com a API do Zabbix via Bash

Autenticação simples usando curl para validar acesso à API JSON-RPC do Zabbix.

📡 O que estamos testando?

A API do Zabbix é baseada em JSON-RPC e exige autenticação com o método user.login. O teste mais direto é enviar uma requisição POST para verificar se sua URL e credenciais estão corretas.

🧪 Comando para testar via bash:

curl -X POST https://SEU_ZABBIX/zabbix/api_jsonrpc.php \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
      "user": "Admin",
      "password": "zabbix"
    },
    "id": 1,
    "auth": null
  }'

Substitua SEU_ZABBIX pela URL do seu servidor Zabbix e ajuste o usuário/senha conforme sua configuração.

📥 Resposta esperada:

{
  "jsonrpc": "2.0",
  "result": "ca5386cf6d9e8d8c4c802dc670d7b647",
  "id": 1
}

O campo result traz o token de autenticação para futuras requisições.

🔐 Dica de segurança:

Evite deixar senhas no histórico do terminal. Para ambientes mais seguros, utilize variáveis de ambiente ou arquivos .env.

"Entender como sua API responde é o primeiro passo para automatizar, monitorar e controlar."

sexta-feira, 25 de abril de 2025

Como inicializar o Oracle Linux 8 em modo de segurança (rescue ou single-user mode)

Modo de Segurança no Oracle Linux 8

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como inicializar o Oracle Linux 8 em modo de segurança

GRUB com parâmetro rescue.target

O modo de segurança (rescue mode ou single-user) é útil para recuperar o sistema após falhas críticas, redefinir senhas, corrigir falhas no fstab ou desabilitar serviços que impedem a inicialização.

🛠️ Passo a passo para entrar no modo de segurança

  1. Reinicie o servidor
  2. Na tela do GRUB, selecione a entrada padrão e pressione e para editar
  3. Localize a linha que começa com linux ou linuxefi
  4. Adicione ao final da linha:
    systemd.unit=rescue.target
  5. Pressione Ctrl + X ou F10 para iniciar

🔒 Senha de root

Você será levado a um prompt com acesso root (após digitar a senha). Se não lembrar a senha de root, use o modo de emergência para redefinir.

🆘 Alternativa: Modo de emergência

Substitua rescue.target por emergency.target no passo 4 para um modo ainda mais restrito (sem montar partições adicionais).

⚠️ Importante

  • Evite editar arquivos críticos sem backup
  • Use journalctl para verificar erros recentes
  • Use mount -o remount,rw / se o sistema estiver montado como somente leitura

“No modo mais silencioso do sistema, ouvimos o que realmente falhou.”

quinta-feira, 24 de abril de 2025

É possível desativar o auditd via GRUB no Oracle Linux 8?

Desativando auditd via GRUB no Oracle Linux 8

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como desativar o auditd via GRUB no Oracle Linux 8

GRUB com audit=0 configurado

O serviço auditd é usado para auditoria de eventos no Linux. Em alguns sistemas, especialmente quando há problemas de performance ou erros como “auditd: backlog limit exceeded”, pode ser necessário desativá-lo.

⚙️ Desativando via GRUB (temporário ou persistente)

Você pode desativar o auditd adicionando o parâmetro audit=0 na linha do kernel.

🔧 Passo a passo:

  1. Reinicie o sistema
  2. Na tela do GRUB, pressione e para editar a entrada do kernel
  3. Localize a linha que começa com linux ou linuxefi
  4. Adicione ao final: audit=0
  5. Pressione Ctrl + X ou F10 para bootar

💾 Para tornar permanente:

Edite o arquivo de configuração do GRUB:

sudo nano /etc/default/grub

Adicione o parâmetro em:

GRUB_CMDLINE_LINUX="... audit=0"

Salve e atualize o GRUB:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

⚠️ Atenção

  • Desabilitar o auditd pode impactar logs de segurança
  • Evite em ambientes que exigem compliance (PCI, HIPAA, etc.)
  • Para desabilitar o serviço por completo:
    sudo systemctl disable auditd
    sudo systemctl mask auditd

“Nem toda segurança vem sem custo — e nem todo sistema aguenta auditoria sem limites.”

quarta-feira, 23 de abril de 2025

Como verificar a limitação de threads em um container Docker quando não existe a pasta /sys/fs/cgroup/docker (ou cgroups padrão)

Verificando limite de threads em container Docker

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como verificar limitação de threads em container Docker

Verificando limites com cat /proc/self/limits no Docker

Se você está tentando identificar quantas threads ou processos um container pode criar, mas não encontrou a pasta /sys/fs/cgroup/docker, saiba que é possível obter essa informação por outros meios.

🔧 Por que a pasta pode não existir?

  • O sistema está usando cgroups v2, que tem um layout diferente
  • O container está em um ambiente minimalista, sem montar o cgroup completo
  • O Docker foi configurado com outro caminho de cgroup

✅ Método alternativo: /proc/self/limits

Dentro do container, execute:

cat /proc/self/limits

Procure pela linha:

Max processes    4096    4096    processes

Esse número indica quantos processos (e portanto, threads) você pode criar dentro do container.

📦 Usando docker inspect

Do host, verifique o container:

docker inspect --format='{{.HostConfig.PidsLimit}}' nome_ou_id

Se estiver em branco, o limite está herdando do sistema (normalmente ilimitado).

🧠 Dica avançada (cgroup v2)

Se estiver usando cgroups v2, verifique o caminho:

cat /sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/pids.max

Ou use:

systemd-cgls
systemctl status docker

“Nem toda limitação está visível — mas os processos sempre revelam suas fronteiras.”

terça-feira, 22 de abril de 2025

Docker error: “Cannot initialize async manager: cannot create thread – operation not permitted”

Erro Docker no CentOS: cannot create thread

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Erro Docker no CentOS: cannot create thread – operation not permitted

Erro Docker no terminal CentOS

Se ao tentar iniciar um container no Docker você se deparou com a mensagem:

Cannot initialize async manager: cannot create thread – operation not permitted

Esse erro geralmente está relacionado a limites de sistema (ulimit) ou restrições de segurança no CentOS ou Red Hat-based systems.

🔍 Possíveis causas

  • Limite de threads (max user processes) está muito baixo
  • Docker sendo executado em um ambiente restrito (como contêiner ou com SELinux/apparmor ativo)
  • Container tentando criar mais threads do que o sistema permite

✅ Como resolver

1. Aumentar o limite de threads (ulimit)

ulimit -u 65535

Ou edite o arquivo /etc/security/limits.conf:

* soft nproc 65535
* hard nproc 65535

2. Ajustar systemd

Se o Docker for iniciado via systemd:

sudo systemctl edit docker

Adicione:

[Service]
LimitNPROC=infinity

Depois reinicie o serviço:

sudo systemctl daemon-reexec
sudo systemctl restart docker

3. SELinux (se ativado)

Para testar, você pode temporariamente desabilitar:

sudo setenforce 0

(⚠️ use com cautela — preferencialmente ajuste permissões via audit2allow)


“Limitações silenciosas do sistema podem se tornar barreiras para contêineres. Saber onde mexer é a chave.”

sábado, 19 de abril de 2025

É possível desativar o auditd via GRUB?

Como desativar o auditd via GRUB no Linux

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como desativar o auditd via GRUB no Linux

O auditd é o serviço de auditoria do Linux, responsável por registrar eventos críticos no sistema. No entanto, em alguns casos (como falhas de boot ou sistemas de baixo desempenho), pode ser necessário desativá-lo temporariamente.

🛠️ Como desativar temporariamente pelo GRUB

  1. Reinicie o sistema.
  2. Na tela do GRUB, selecione a entrada de boot e pressione e.
  3. Encontre a linha que começa com linux.
  4. Adicione ao final da linha:
    audit=0
  5. Pressione Ctrl + X ou F10 para iniciar.

🔧 Como desativar permanentemente

Para tornar essa configuração persistente:

  1. Abra o terminal como root.
  2. Edite o arquivo:
    /etc/default/grub
  3. Na linha:
    GRUB_CMDLINE_LINUX=
    adicione audit=0 dentro das aspas.
  4. Atualize o GRUB com:
    grub2-mkconfig -o /boot/grub2/grub.cfg
    ou update-grub dependendo da distribuição.
  5. Reinicie o sistema.

⚠️ Considerações de segurança

  • Desativar o auditd pode afetar conformidade com normas de segurança.
  • Se o sistema exige logs de auditoria (como em servidores de produção), use essa solução apenas para diagnóstico.

“Nem todo log precisa ser registrado, mas todo erro precisa ser resolvido.”

sexta-feira, 18 de abril de 2025

Como inicializar o Oracle Linux 8 em modo de segurança?

Como iniciar o Oracle Linux 8 em modo de segurança

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Como iniciar o Oracle Linux 8 em modo de segurança

Precisa acessar o sistema Oracle Linux 8 para corrigir falhas, redefinir senhas ou desativar serviços? O modo de segurança (single-user/rescue) é ideal para isso.

📌 O que é o modo de segurança?

É um ambiente mínimo de manutenção com acesso root sem interface gráfica, usado para:

  • Reparar sistemas danificados
  • Desabilitar serviços corrompidos
  • Redefinir senhas
  • Editar arquivos de configuração

🧭 Passo a passo para acessar:

  1. Reinicie o computador/servidor.
  2. Na tela do GRUB, use as teclas direcionais para selecionar a entrada padrão (geralmente a primeira).
  3. Pressione e para editar os parâmetros de boot.
  4. Encontre a linha que começa com linux ou linux16.
  5. Ao final da linha, adicione:
    systemd.unit=rescue.target
    ou para modo ainda mais restrito:
    systemd.unit=emergency.target
  6. Pressione Ctrl + X ou F10 para iniciar com essa configuração.

🔐 Acesso root

Você será levado a um terminal com permissão root. A partir daí, pode usar comandos como:

  • passwd – para alterar senha de root
  • systemctl disable nome-do-serviço – para impedir travamentos no boot
  • mount -o remount,rw / – caso precise editar arquivos do sistema

⚠️ Cuidados

  • Evite fazer alterações permanentes se não tiver certeza.
  • Reinicie com reboot após a manutenção.

“Resgatar um sistema também é resgatar o controle sobre ele.”

quinta-feira, 17 de abril de 2025

O que fazer quando um sistema Linux não me deixa logar por causa de "auditd: backlog limit exceeded"?

Erro "auditd: backlog limit exceeded" no Linux

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Erro "auditd: backlog limit exceeded" no Linux

Ao tentar iniciar ou acessar um sistema Linux, especialmente em ambientes como Oracle Linux, RHEL ou CentOS, você pode se deparar com a seguinte mensagem:

auditd: backlog limit exceeded

Esse erro pode impedir o sistema de inicializar corretamente ou bloquear o login em modo gráfico ou console.

🧠 O que significa esse erro?

O auditd é o daemon responsável pelo sistema de auditoria do Linux. Ele monitora e registra eventos importantes para segurança e conformidade.

Quando muitos eventos acontecem em sequência e o sistema não consegue processar todos, o backlog (fila de eventos) estoura o limite definido — e o kernel considera isso uma falha de segurança.

🛠️ Soluções temporárias

  • Reinicie o sistema e entre no modo de emergência ou rescue.
  • Edite o GRUB temporariamente durante o boot:
    • Pressione e na entrada do GRUB.
    • Adicione o seguinte ao final da linha linux:
      audit=0
    • Pressione Ctrl + X ou F10 para iniciar com essa opção.
  • Isso desativa o audit temporariamente e pode permitir o login.

⚙️ Correção permanente

Se for seguro desabilitar o auditd no seu caso, você pode editar a configuração do GRUB:

  1. Abra o arquivo /etc/default/grub como root.
  2. Adicione audit=0 à variável GRUB_CMDLINE_LINUX
  3. Atualize o GRUB com:
    grub2-mkconfig -o /boot/grub2/grub.cfg
    (ou equivalente na sua distro)
  4. Reinicie o sistema.

📌 Alternativas

  • Aumentar o limite de backlog com:
    audit_backlog_limit=8192
    no GRUB
  • Corrigir travamentos causados por excesso de logs ou configurações excessivas do auditd

“Em sistemas auditáveis, o silêncio também pode ser interpretado como falha.”

quarta-feira, 9 de abril de 2025

Usando Podman + Podman Compose com Imagens do Harbor

Podman + Podman Compose com Harbor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Usando Podman e Podman Compose com Imagens do Harbor: Configurações, Alternativas e Boas Práticas

Introdução

Em ambientes modernos de DevOps e infraestrutura como código, o uso de containers é central para isolar serviços, distribuir aplicações e garantir portabilidade. Enquanto o Docker é amplamente conhecido, o Podman tem se consolidado como uma alternativa sólida e mais segura. Ele elimina o daemon, permite execução rootless e segue o padrão OCI.

Neste artigo, vamos integrar o Harbor (registry privado de containers) com o Podman, abordando duas abordagens distintas:

  • Uso direto com o Podman
  • Gerenciamento orquestrado com o Podman Compose

Além disso, vamos configurar corretamente o uso de registries privados (com ou sem TLS), ajustar permissões, discutir boas práticas e entender quando usar cada modelo.

1. Instalando o Podman

RHEL / Oracle Linux / CentOS

sudo dnf install -y podman

Ubuntu / Debian

sudo apt update
sudo apt install -y podman

Verifique a instalação:

podman --version

2. Configurando acesso ao Harbor

Faça login (se necessário):

podman login harbor.seuservidor.com

2.1 Usando registries sem HTTPS (HTTP)

sudo mkdir -p /etc/containers/registries.conf.d
sudo nano /etc/containers/registries.conf.d/harbor.conf

Adicione:

[[registry]]
prefix = "harbor.seuservidor.com"
location = "harbor.seuservidor.com"
insecure = true

3. Puxando e rodando imagens do Harbor com Podman

podman pull harbor.seuservidor.com/devops/nginx-custom:1.0
podman run -d --name webapp \
  -p 8080:80 \
  harbor.seuservidor.com/devops/nginx-custom:1.0
  • -d: executa o container em segundo plano (detached mode)
  • --name: define um nome identificável para o container
  • -p 8080:80: expõe a porta 80 do container na porta 8080 do host

Verificando a execução

podman ps

Isso mostrará todos os containers em execução, com ID, nome e portas mapeadas.

Acessando o serviço

Se o container oferece uma API ou serviço web, você pode testá-lo com:

curl http://localhost:8080

Ou acessando diretamente pelo navegador: http://localhost:8080

4. Alternativa: Usando Podman Compose

Para projetos com múltiplos serviços:

4.1 Instalação

pip install podman-compose
python3 -m venv venv
source venv/bin/activate
pip install podman-compose

5. Estrutura de Projeto

meu-app/
├── docker-compose.yml
└── .env (opcional)

Exemplo de docker-compose.yml

version: "3"
services:
  web:
    image: harbor.seuservidor.com/devops/nginx-custom:1.0
    ports:
      - "8080:80"
    restart: always

6. Subindo os serviços

podman-compose up -d
podman-compose logs
podman ps
podman-compose down

7. Comparativo: Podman direto vs Podman Compose

Critério Podman (direto) Podman Compose
Complexidade Baixa Média
Multi-serviços Manual Gerenciado via YAML
Escalabilidade Limitada Modular
Controle de rede Simples Mais granular
Ideal para Containers isolados Projetos multi-serviço

8. Boas práticas

  • Armazene as credenciais com segurança.
  • Evite usar a tag latest em produção.
  • Use versões fixas para garantir reprodutibilidade.
  • Crie redes próprias para isolar serviços:
podman network create meu_rede

Conclusão

Integrar o Harbor com Podman (com ou sem Compose) permite controle total sobre suas imagens, com mais segurança e independência do Docker daemon. O Podman direto é ideal para containers rápidos e isolados, enquanto o Compose se destaca em ambientes mais complexos.

Nos próximos capítulos, vamos explorar volumes persistentes, redes customizadas e estratégias de deploy em produção.

sexta-feira, 4 de abril de 2025

IPv6 em Datacenters – Parte 2

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

IPv6 em Datacenters – Parte 2: Integração com Monitoramento, Automação e Segurança

Após estruturar a arquitetura de endereçamento com IPv6 em um datacenter, o próximo passo é integrar esse ecossistema com as ferramentas de gestão, automação e segurança já utilizadas no ambiente. Essa etapa é essencial para garantir visibilidade, controle e estabilidade operacional.

📊 Integração com ferramentas de monitoramento

Zabbix

  • O Zabbix suporta IPv6 nativamente, tanto para agentes quanto servidores.
  • No zabbix_agentd.conf, use ListenIP=:: para aceitar conexões IPv6.
  • No frontend, cadastre os hosts com IPs IPv6 diretamente ou use DNS AAAA.
# Exemplo de item com IPv6
zabbix_get -s fd00:abcd::1001 -k system.uptime

Prometheus

  • Configure os targets com IPs IPv6 dentro de colchetes: [fd00::2001]:9100
  • Certifique-se de que os node_exporters estão escutando em [::]:9100

Grafana e InfluxDB

  • Suporte total a conexões em IPv6 se as ferramentas forem configuradas para escutar em [::]
  • Use proxies reversos (como Nginx) para centralizar acessos IPv6/IPv4.

⚙️ Automação com Ansible e Shell

  • Adicione hosts em IPv6 no inventário: [meus_servers]
    [fd00::1001]
  • Use o parâmetro ansible_ssh_extra_args='-6' para forçar IPv6.
  • Evite dependência de DNS se usar endereços diretos.
[web_ipv6]
fd00:abcd::10 ansible_user=admin ansible_ssh_extra_args='-6'

🛡️ Segurança e firewalls para IPv6

  • Use nftables ou ip6tables separadamente do IPv4.
  • Habilite ICMPv6 essencial para funcionamento correto da rede (RA, ND).
  • Crie regras por prefixo e não apenas por IP direto, ex: fd00::/8
  • Bloqueie endereços de escopo global para tráfego interno não autorizado.

🔐 Validações e auditoria

  • ping6 e traceroute6 para diagnóstico de latência e roteamento
  • nmap -6 para varredura de portas e validação de exposição de serviços
  • Ferramentas como tcpdump -i eth0 ip6 são vitais para depuração

📌 Dica importante

Evite misturar stacks duplas mal configuradas (dual-stack desbalanceado) em serviços críticos. Priorize ambientes 100% IPv6 ou 100% IPv4 onde for possível.

🧭 Conclusão

Integrar IPv6 não é apenas configurar IPs. Envolve ajustar toda a cadeia de operações — do monitoramento à automação, da segurança à validação. Com isso, o datacenter se torna mais escalável, moderno e pronto para o futuro.

quinta-feira, 3 de abril de 2025

IPv6 para Datacenters - parte 1

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Implementação Completa de IPv6 para Datacenters

No universo moderno de redes, o suporte ao IPv6 deixou de ser uma opção e passou a ser uma necessidade real para ambientes de datacenter, especialmente com a escassez de IPv4 e o crescimento de ambientes escaláveis em cloud e bare metal.

📌 Divisão lógica: Pública e Privada

Ao contrário do IPv4, o IPv6 não possui faixas NAT privadas clássicas. Mas é possível utilizar as faixas fd00::/8 para simular redes internas privadas (ULA – Unique Local Address).

  • Rede pública: usada para frontend, acesso externo, APIs abertas.
  • Rede ULA (fd00): usada para comunicação entre bancos de dados, aplicações, serviços internos e recursivos (como DNS).

🔧 Configuração típica de componentes internos

  • Servidores e VMs: Defina endereços ULA por interface, ex: fd00:abcd:1234::10
  • Bancos de Dados: Vincule ao IP ULA e restrinja conexões com bind-address ou listen_address
  • DNS Recursivo (ex: Unbound): Use somente ULA como origem permitida e configure escopo local
  • Hypervisores e switches virtuais: Separe VLANs ou bridges por finalidade (pública / interna)
  • Firewalls: Permita ICMPv6 e controle com precisão os escopos de IP

🧪 Exemplo de configuração prática

# Interface interna
iface eth1 inet6 static
  address fd00:abcd:1234::1
  netmask 64

# Exemplo de configuração no Postgres
listen_addresses = 'fd00:abcd:1234::10'

🛡️ Segurança e performance

  • Utilize ip6tables ou nftables com políticas explícitas.
  • Monitore tráfego com tcpdump -i eth0 ip6 ou iftop.
  • Prefira endereços estáticos para facilitar debugging e regras claras.

📐 Diagramas e hierarquia

Uma estrutura bem pensada facilita a escalabilidade e troubleshooting. Exemplo:

  • Hypervisor: fd00:1000::1
  • VM Web: fd00:1000::10
  • DB: fd00:1000::20
  • DNS interno: fd00:1000::53

✅ Validação da estrutura

  • Ping ULA entre serviços: ping6 fd00:abcd:1234::10
  • Valide com traceroute6, nmap -6, e testes de aplicação
  • Documente rotas e relacionamentos lógicos (topologias simples ajudam muito)

📌 Conclusão

O uso de IPv6 vai além da camada de acesso externo. Integrá-lo de forma completa no ambiente interno — com camadas de segurança e isolamento — é o próximo passo na evolução de um datacenter moderno.

IPv6 pode parecer complexo no início, mas ao entender seus conceitos fundamentais, ele se torna um aliado poderoso em ambientes escaláveis e limpos.

quarta-feira, 14 de setembro de 2016

Python - Hello World

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Programação Python

Conceitos

Como usarei aqui apenas de diário de bordo para meus estudos, não ficarei conceituando ou nada parecido, caso você queira me acompanhar e estudarmos juntos, seja bem vindo, porém aqui neste espaço teremos mais prática do que teoria. 

Hello World

Toda programação se inicia com um hello world, segue código em python:

>>> print 'Hello World !'

Instalando PyCharm no Ubuntu 16.04

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Estudando Python

Iniciando meus estudos em Python, para isto escolhi a IDE PyCharm, abaixo descrevo o como instalá-la no Ubuntu 16.0

Instalando PyCharm no Ubuntu

A IDE PyCharm tem uma versão paga e uma versão community. Neste tutorial iremos instalar a versão Community.

- Primeiro instalaremos o repositório:

sudo add-apt-repository ppa:mystic-mirage/pycharm
Depois fazemos o update e mandamos instalar o PyCharm:
sudo apt-get update

sudo apt-get install pycharm-community
Caso queira instalar a versão paga dê o comando: sudo apt-get install pycharm

terça-feira, 13 de setembro de 2016

Instalando MariaDB no CentOS 7

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Instalando MariaDB

MariaDB é um SGBD que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle.
Nesse artigo faremos uma instalação básica do MariaDB num Servidor CentOS 7, caso queiram ler sobre a instalação básica de um Servidor CentOS 7 já escrevi um artigo em: http://bit.ly/2c1sM3r

Instalando o MariaDB:

yum install mariadb mariadb-devel mariadb-server -y
Inicializando o mariadb:
systemctl start mariadb
Utilizando Script de Inicialização segura:
mysql_secure_installation 
Siga as instruções do script:
# mysql_secure_installation 
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: comando não encontrado

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

SysadminUrbano • Guia Técnico: Migração Windows 10 -> Windows 11 com Backup Completo

Migração Windows 10 → Windows 11: Backup completo e restauração sem perdas Checklist técnico com comandos, exportações e reaproveit...