- Refactor Makefile to enhance command structure, including clearer descriptions and usage examples for targets related to development, inventory, and monitoring tasks. - Update inventory files to ensure correct host configurations and user settings, including adjustments to ansible_user for specific hosts. - Modify group_vars to streamline Tailscale configuration and ensure proper handling of authentication keys. These changes improve the clarity and usability of the Makefile and inventory setup, facilitating smoother operations across the infrastructure.
148 lines
4.6 KiB
Bash
Executable File
148 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Dynamic inventory script - lists all installed tools and services
|
|
# Can be run on any managed host
|
|
|
|
# Colors
|
|
BOLD='\033[1m'
|
|
GREEN='\033[32m'
|
|
YELLOW='\033[33m'
|
|
BLUE='\033[34m'
|
|
RED='\033[31m'
|
|
RESET='\033[0m'
|
|
|
|
echo -e "${BOLD}=== Installed Software Inventory ===${RESET}\n"
|
|
|
|
# Function to check if command exists
|
|
cmd_exists() {
|
|
command -v "$1" >/dev/null 2>&1
|
|
}
|
|
|
|
# Function to get version
|
|
get_version() {
|
|
if cmd_exists "$1"; then
|
|
case "$1" in
|
|
node) node --version 2>/dev/null ;;
|
|
python3) python3 --version 2>/dev/null | awk '{print $2}' ;;
|
|
git) git --version 2>/dev/null | awk '{print $3}' ;;
|
|
docker) docker --version 2>/dev/null | awk '{print $3}' | tr -d ',' ;;
|
|
conda) conda --version 2>/dev/null | awk '{print $2}' ;;
|
|
jupyter) jupyter --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
R) R --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
yq) yq --version 2>/dev/null | awk '{print $NF}' ;;
|
|
btop) btop --version 2>/dev/null | head -1 | awk '{print $3}' ;;
|
|
cursor) echo "installed" ;;
|
|
*) echo "unknown" ;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
# Development Tools
|
|
echo -e "${YELLOW}Development Tools:${RESET}"
|
|
for tool in git node python3; do
|
|
version=$(get_version $tool)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s %s\n" "$tool" "not installed"
|
|
fi
|
|
done
|
|
|
|
# Data Science
|
|
echo -e "\n${YELLOW}Data Science Stack:${RESET}"
|
|
for tool in conda jupyter R; do
|
|
version=$(get_version $tool)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s %s\n" "$tool" "not installed"
|
|
fi
|
|
done
|
|
|
|
# Check Jupyter service
|
|
if systemctl is-active --quiet jupyter-notebook 2>/dev/null; then
|
|
echo -e " ${GREEN}✓${RESET} Jupyter service running"
|
|
else
|
|
echo -e " ${RED}✗${RESET} Jupyter service not running"
|
|
fi
|
|
|
|
# IDEs & Editors
|
|
echo -e "\n${YELLOW}IDEs & Editors:${RESET}"
|
|
for tool in cursor code; do
|
|
if cmd_exists $tool; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "$tool"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$tool"
|
|
fi
|
|
done
|
|
|
|
# Container Platform
|
|
echo -e "\n${YELLOW}Container Platform:${RESET}"
|
|
version=$(get_version docker)
|
|
if [ -n "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "docker" "$version"
|
|
if cmd_exists docker-compose; then
|
|
compose_version=$(docker-compose --version 2>/dev/null | awk '{print $NF}')
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "docker-compose" "$compose_version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "docker"
|
|
fi
|
|
|
|
# Monitoring Tools
|
|
echo -e "\n${YELLOW}Monitoring Tools:${RESET}"
|
|
for tool in htop btop iotop nethogs; do
|
|
if cmd_exists $tool; then
|
|
version=$(get_version $tool)
|
|
if [ "$version" = "unknown" ] || [ -z "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "$tool"
|
|
else
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$tool"
|
|
fi
|
|
done
|
|
|
|
# CLI Utilities
|
|
echo -e "\n${YELLOW}CLI Utilities:${RESET}"
|
|
for tool in jq yq ripgrep fd; do
|
|
if cmd_exists $tool; then
|
|
version=$(get_version $tool)
|
|
if [ "$version" = "unknown" ] || [ -z "$version" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "$tool"
|
|
else
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "$tool" "$version"
|
|
fi
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$tool"
|
|
fi
|
|
done
|
|
|
|
# Shell
|
|
echo -e "\n${YELLOW}Shell Environment:${RESET}"
|
|
current_shell=$(basename "$SHELL")
|
|
printf " ${GREEN}✓${RESET} %-15s %s\n" "current shell" "$current_shell"
|
|
|
|
if [ -d "$HOME/.oh-my-zsh" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "oh-my-zsh"
|
|
fi
|
|
|
|
if [ -d "$HOME/.oh-my-zsh/custom/themes/powerlevel10k" ]; then
|
|
printf " ${GREEN}✓${RESET} %-15s installed\n" "powerlevel10k"
|
|
fi
|
|
|
|
# Services
|
|
echo -e "\n${YELLOW}System Services:${RESET}"
|
|
for service in docker tailscaled fail2ban sshd; do
|
|
if systemctl is-active --quiet $service 2>/dev/null; then
|
|
printf " ${GREEN}✓${RESET} %-15s running\n" "$service"
|
|
elif systemctl list-unit-files | grep -q "^$service"; then
|
|
printf " ${BLUE}○${RESET} %-15s installed (not running)\n" "$service"
|
|
else
|
|
printf " ${RED}✗${RESET} %-15s not installed\n" "$service"
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
|