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.
Alvos principais:
make build [TAG=vX.Y.Z]cria a imagemmarioaugustorama/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-latestmarca a imagem atual comolateste envia.make run [TAG=...]sobe o container viarun.shcomIMAGE/TAGdefinidos.- Bumps de versão:
make bump-patch|bump-minor|bump-major(atualizamversionviascripts/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-
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.
-
Hashicorp
-
Ansible
-
OpenTofu
- OpenTofu: Uma ferramenta de automação para instalação e configuração de ferramentas.
-
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!
-
Utilitários
-
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.
- 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.
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-webCom token (recomendado):
BACKUP_WEB_TOKEN='troque-este-token' ./run.sh backup-webAuto-start ao entrar no container:
- Por padrão, ao abrir shell interativo (
./run.shsem comando), obackup-websobe em background automaticamente. - Para desativar:
BACKUP_WEB_AUTOSTART=0 ./run.sh - Log padrão:
/var/log/backup-web.log(configurável emBACKUP_WEB_LOG). Se não houver permissão, usa fallback em/tools/.backup-web.log
Endpoints principais:
GET /interface web simplesPOST /api/backupexecuta backupGET /api/backupslista backupsGET /api/backups/<arquivo>faz downloadGET /api/backups/<arquivo>/contentslista o conteúdo do arquivo tarDELETE /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 emX-Backup-TokenouAuthorization: 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:20segundos para leitura de conteúdo)
- 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--forcepara 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.
- Arquivos persistentes (montados em
/var/lib/devops-pkg, diretóriopkg_state/no host):pkg_state/auto-install.list(pkg_add) epkg_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,k9spkg_state/apt-packages.list:traceroute,nmap
- Suba o container com
PKG_AUTO_RESTORE=1 ./run.sh ...para aplicar essas listas automaticamente. Combine comPKG_LAZY_INSTALL=0se não quiser instalação sob demanda viacommand_not_found.
- Criar o instalador em
scripts/<nome>.sh(bash,set -euo pipefail, idempotente). - Adicionar o pacote ao manifesto
scripts/packages.tsvcom uma descrição curta. - Opcional: testar no container com
pkg_add install <nome>e confirmar que roda repetidamente sem falhar. - Atualizar a imagem ou rodar
run_all.shpara incluir no build.
#!/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- Evite falhar se já instalado (detectar binário/versão e sair cedo quando apropriado).
- Use
set -euo pipefaileerror_exitpara mensagens claras. - Limpe artefatos temporários mesmo em reexecuções (remova antes de extrair).
- Prefira URLs versionadas e validação (checksum) quando possível.
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.
- Rode
sudo enable-docspara remover a exclusão de documentação e instalarman-db+manpages. - Depois teste com
man lsouman vim.
- 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_FILEpara usar outro arquivo (ex.:HOSTS_FILE=./home/hosts hosts-editor add ...); use--no-backuppara pular backup automático. - Por padrão cria um
.bakcom timestamp ao lado do arquivo alterado; alterar/etc/hostspede permissão (sudo).
- Pacote:
wireguard-toolsno catálogo (pkg_add install wireguard-toolsoupkg_apt add wireguard-tools). - Configs e chave: monte
./vpn-configsem/etc/wireguarde use./wireguard-keyspara guardar a chave fornecida pelo servidor (montado em/etc/wireguard/keys). - Execução:
./run.shjá adicionaNET_ADMIN,/dev/net/tune monta os volumes acima. Se precisar rotear tráfego (NAT/forwarding), suba comENABLE_WG_FORWARDING=1 ./run.sh ...para aplicar os sysctls. - Uso dentro do container:
wg-quick up wg0/wg-quick down wg0(conf comPrivateKey = /etc/wireguard/keys/<arquivo>).