ansible/scripts/inventory.sh
ilia 579f0709ce Update Makefile and inventory configurations for improved task execution and organization
- 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.
2025-10-09 21:24:45 -04:00

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 ""