Skip to content

marioaugustorama/devops-tools

Repository files navigation

DevOps - Tools

A distribuição foi projetada para atender às necessidades de profissionais e estudantes de DevOps e Networking, oferecendo uma seleção abrangente e atualizada das melhores ferramentas disponíveis no mercado. Ao reunir todas essas ferramentas em um único local, a distribuição visa agilizar o processo de configuração e implantação de ambientes DevOps. Isso elimina a necessidade de procurar e instalar cada ferramenta individualmente, proporcionando conveniência e economizando tempo. Com uma variedade de ferramentas essenciais já integradas e prontas para uso, os usuários podem começar a trabalhar rapidamente em seus projetos DevOps, aumentando sua produtividade e eficiência.

Makefile (build/push/run)

Alvos principais:

  • make build [TAG=vX.Y.Z] cria a imagem marioaugustorama/devops-tools:<TAG> (usa rede host). Variáveis úteis: IMAGE, TAG, APT_MIRROR, APT_SECURITY_MIRROR, STRICT_CHECKSUM=0|1, BUILD_OPTS="--network=host".
  • make push [TAG=...] publica a imagem atual.
  • make tag-latest marca a imagem atual como latest e envia.
  • make run [TAG=...] sobe o container via run.sh com IMAGE/TAG definidos.
  • Bumps de versão: make bump-patch|bump-minor|bump-major (atualizam version via scripts/version.sh).
  • Auxiliares: make build-br (espelho BR), make build-insecure (sem checksum estrito), make version (mostra versão), make clean (limpa cache Docker).

Exemplos rápidos:

# Build com tag atual do arquivo version
make build
# Build com mirror BR e tag específica
make build TAG=v1.18.5 APT_MIRROR=http://br.archive.ubuntu.com/ubuntu
# Publicar a tag e marcar latest
make push TAG=v1.18.5
make tag-latest TAG=v1.18.5
# Rodar localmente a imagem recém-buildada
make run TAG=v1.18.5

Ferramentas Disponíveis

  1. Kubernetes

    • Kubectl: Uma ferramenta de linha de comando para interagir com clusters Kubernetes.
    • K9S: Uma interface de terminal para Kubernetes.
    • Kubebox: Uma ferramenta de linha de comando para visualizar e interagir com clusters Kubernetes.
    • Kubespy: Uma ferramenta para monitorar eventos de recursos Kubernetes em tempo real.
    • Helm: Um gerenciador de pacotes para Kubernetes.
    • Eksctl: Utilitário cli para criação e gerẽncia de cluster EKS na AWS.
  2. Hashicorp

    • Terraform: Uma ferramenta para provisionamento de infraestrutura.
    • Vault: Uma ferramenta para gerenciamento de segredos e chaves de criptografia.
  3. Ansible

  4. OpenTofu

    • OpenTofu: Uma ferramenta de automação para instalação e configuração de ferramentas.
  5. Providers

    • AWS Cli: Uma interface de linha de comando para AWS.
    • Digital Ocean Cli: Uma interface de linha de comando para DigitalOcean.
    • Azure: Ferramenta para acesso aos serviços da Microsoft Azure!
  6. Utilitários

    • Rclone: Uma ferramenta para sincronização de arquivos.
    • Minio: Um servidor de armazenamento de objetos de código aberto compatível com a API S3 da Amazon.
    • AzCopy: Ferramenta para cópiar facilmente de/para blobs e conta de armazenamento na Azure
  7. Programas diversos

    • iputils-ping
    • net-tools
    • iproute2
    • traceroute
    • telnet
    • whois
    • ipcalc: Ferramenta para calculo de redes.
    • tmux: Terminal Multiplexer
    • mtr: Ferramenta para diagnóstico de rede.
    • pwgen: Gerador de senhas.
    • jq: Json Parser para linha de comando.
    • curl
    • wget
    • rsync
    • aria2: Ferramenta de Download, suporte a HTTP, HTTPS, FTP, SFTP, BitTorrent e Metalink
    • git
    • unzip
    • file
    • vim
    • mysql-client
    • postgresql-client

Para a rápida execução basta que seja executado o seguinte comando.

curl -LO https://raw.githubusercontent.com/marioaugustorama/devops-tools/main/run.sh && chmod +x run.sh

Será feito o download e dado permissão de execução ao script.

É requerido que já tenha o docker instalado em sua máquina.

Será criado um diretório nomeado como home, onde todo seu histórico do shell, tal como arquivos de configuração criados pelos programas serão armazenados.

Portanto o máximo de cuidado com esse diretório, recomendo até que seja um volume criptografado com o Luks, nas futuras versão já virá com o software que prepara esse ambiente automaticamente.

Scripts adicionados a imagem para tarefas corriqueiras.

  1. Backup

Scripts para backup do profile:

Execução:

A partir do Host:

./run.sh backup

Vai gerar um backup com data e hora da execução, permitindo assim salvar seus dados e configurações gerados a partir do container.

Serviço web de backup (executar e baixar no navegador)

Você pode subir um endpoint HTTP dentro do container para criar e baixar backups:

# Sobe o serviço em http://localhost:30000
./run.sh backup-web

Com token (recomendado):

BACKUP_WEB_TOKEN='troque-este-token' ./run.sh backup-web

Auto-start ao entrar no container:

  • Por padrão, ao abrir shell interativo (./run.sh sem comando), o backup-web sobe em background automaticamente.
  • Para desativar: BACKUP_WEB_AUTOSTART=0 ./run.sh
  • Log padrão: /var/log/backup-web.log (configurável em BACKUP_WEB_LOG). Se não houver permissão, usa fallback em /tools/.backup-web.log

Endpoints principais:

  • GET / interface web simples
  • POST /api/backup executa backup
  • GET /api/backups lista backups
  • GET /api/backups/<arquivo> faz download
  • GET /api/backups/<arquivo>/contents lista o conteúdo do arquivo tar
  • DELETE /api/backups/<arquivo> exclui backup

Variáveis úteis:

  • BACKUP_WEB_HOST (padrão: 0.0.0.0)
  • BACKUP_WEB_PORT (padrão: 30000)
  • BACKUP_WEB_TOKEN (se definido, exige token em X-Backup-Token ou Authorization: Bearer ...)
  • BACKUP_DIR (padrão: /backup)
  • BACKUP_ARCHIVE_LIST_MAX_LINES (padrão: 5000, limite de linhas ao listar conteúdo)
  • BACKUP_ARCHIVE_LIST_TIMEOUT (padrão: 20 segundos para leitura de conteúdo)

Gerenciador de pacotes interno (pkg_add)

  • Listar catálogo: pkg_add list
  • Listar apenas instalados (persistidos): pkg_add list --installed
  • Ver status (instalado/pendente): pkg_add status
  • Detalhar um pacote: pkg_add info <nome>
  • Instalar tudo: pkg_add install --all
  • Instalar pacotes específicos: pkg_add install kubectl helm doctl (use --force para reinstalar)
  • Desabilitar marcação de instalado (não desinstala): pkg_add disable eksctl

Os pacotes são definidos em scripts/packages.tsv (nome + descrição) e cada instalador mora em scripts/<nome>.sh.

Auto-instalação na subida do container

  • Arquivos persistentes (montados em /var/lib/devops-pkg, diretório pkg_state/ no host): pkg_state/auto-install.list (pkg_add) e pkg_state/apt-packages.list (apt). Linhas em branco ou começando com # são ignoradas.
  • Edite esses arquivos no host para listar apenas o que quer auto-instalar. Exemplos:
    • pkg_state/auto-install.list: kubectl, helm, k9s
    • pkg_state/apt-packages.list: traceroute, nmap
  • Suba o container com PKG_AUTO_RESTORE=1 ./run.sh ... para aplicar essas listas automaticamente. Combine com PKG_LAZY_INSTALL=0 se não quiser instalação sob demanda via command_not_found.

Como adicionar um novo pacote

  1. Criar o instalador em scripts/<nome>.sh (bash, set -euo pipefail, idempotente).
  2. Adicionar o pacote ao manifesto scripts/packages.tsv com uma descrição curta.
  3. Opcional: testar no container com pkg_add install <nome> e confirmar que roda repetidamente sem falhar.
  4. Atualizar a imagem ou rodar run_all.sh para incluir no build.

Boilerplate para novo instalador (scripts/exemplo.sh)

#!/bin/bash
set -euo pipefail
source /usr/local/bin/utils.sh

APP_VERSION="1.2.3"
URL="https://exemplo.com/app-${APP_VERSION}-linux-amd64.tar.gz"
TMP="app.tar.gz"

echo "Baixando app ${APP_VERSION}..."
curl -fLs "$URL" -o "$TMP" || error_exit "download falhou"

echo "Extraindo..."
tar xzf "$TMP"

echo "Instalando..."
install -o root -g root -m 0755 app /usr/local/bin/app || error_exit "install falhou"

echo "Limpando..."
rm -rf "$TMP" app

Checklist de idempotência

  • Evite falhar se já instalado (detectar binário/versão e sair cedo quando apropriado).
  • Use set -euo pipefail e error_exit para mensagens claras.
  • Limpe artefatos temporários mesmo em reexecuções (remova antes de extrair).
  • Prefira URLs versionadas e validação (checksum) quando possível.

Pacotes apt persistentes do dia a dia

Use o helper pkg_apt (estado em pkg_state/apt-packages.list, montado em /var/lib/devops-pkg):

  • Adicionar pacote(s): pkg_apt add traceroute nmap
  • Ver lista: pkg_apt list
  • Remover: pkg_apt remove nmap
  • Aplicar/instalar todos os listados: pkg_apt apply (automático no start do container)

Os pacotes listados serão reinstalados automaticamente quando o container subir novamente, sem rebuild da imagem.

Habilitar manuais (man)

  • Rode sudo enable-docs para remover a exclusão de documentação e instalar man-db + manpages.
  • Depois teste com man ls ou man vim.

Editor de hosts (hosts-editor)

  • Adicionar entrada: sudo hosts-editor add 127.0.0.1 meu.servico.local api.local
  • Remover host(s): sudo hosts-editor remove meu.servico.local api.local
  • Listar atual: hosts-editor list
  • Variáveis úteis: HOSTS_FILE para usar outro arquivo (ex.: HOSTS_FILE=./home/hosts hosts-editor add ...); use --no-backup para pular backup automático.
  • Por padrão cria um .bak com timestamp ao lado do arquivo alterado; alterar /etc/hosts pede permissão (sudo).

VPN dentro do container (WireGuard)

  • Pacote: wireguard-tools no catálogo (pkg_add install wireguard-tools ou pkg_apt add wireguard-tools).
  • Configs e chave: monte ./vpn-configs em /etc/wireguard e use ./wireguard-keys para guardar a chave fornecida pelo servidor (montado em /etc/wireguard/keys).
  • Execução: ./run.sh já adiciona NET_ADMIN, /dev/net/tun e monta os volumes acima. Se precisar rotear tráfego (NAT/forwarding), suba com ENABLE_WG_FORWARDING=1 ./run.sh ... para aplicar os sysctls.
  • Uso dentro do container: wg-quick up wg0 / wg-quick down wg0 (conf com PrivateKey = /etc/wireguard/keys/<arquivo>).

About

Container Docker com um canivete suiço de ferramentas para DevOps.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors