Newer Older
f16725e 3 months ago History
98 lines | 2.829kb
Bogdan Timofte authored 3 months ago
1
#!/bin/bash
2

            
3
# autoSMART Production Deployment Script
4
# Version: 1.0
5
# Description: Deploy autoSMART system to Proxmox cluster
6

            
7
set -e
8

            
9
# Configuration
10
DB_HOST="192.168.2.102"
11
DB_USER="autosmart"
12
DB_PASS="autoSMART2025!"
13
DB_NAME="autosmart"
14

            
15
CLUSTER_JSON="$(dirname "$0")/../cluster.json"
16
NODES=()
17
NODE_IPS=()
18
if [[ -f "$CLUSTER_JSON" ]] && command -v jq &> /dev/null; then
19
  while IFS= read -r node; do
20
    NODES+=("$(echo "$node" | jq -r '.hostname')")
21
    NODE_IPS+=("$(echo "$node" | jq -r '.ip')")
22
  done < <(jq -c '.cluster.nodes[]' "$CLUSTER_JSON")
23
fi
24
DEPLOY_DIR="/opt/autoSMART"
25
CONFIG_DIR="/etc/pve/autoSMART"
26

            
27
echo "🚀 autoSMART Production Deployment"
28
echo "=================================="
29

            
30
for idx in "${!NODES[@]}"; do
31
  NODE="${NODES[$idx]}"
32
  NODE_IP="${NODE_IPS[$idx]}"
33
  echo ""
34
  echo "🔧 Deploying to node: $NODE ($NODE_IP)"
35
  echo "------------------------"
36

            
37
  # Create directories
38
  ssh root@$NODE_IP "mkdir -p $DEPLOY_DIR $CONFIG_DIR"
39

            
40
  # Copy files
41
  scp -r /tmp/autoSMART-deploy/* root@$NODE_IP:$DEPLOY_DIR/
42

            
43
  # Install Perl dependencies
44
  ssh root@$NODE_IP "
45
    apt-get update -qq
46
    apt-get install -y libdbi-perl libdbd-pg-perl libjson-perl libfile-slurp-perl smartmontools
47
  "
48

            
49
  # Make scripts executable
50
  ssh root@$NODE_IP "chmod +x $DEPLOY_DIR/scripts/*.sh $DEPLOY_DIR/scripts/*.pl"
51

            
52
  # Create node-specific configuration
53
  ssh root@$NODE_IP "cat > $CONFIG_DIR/cluster-$NODE.conf << EOF
54
# autoSMART Configuration for $NODE
55
ExecStart=$DEPLOY_DIR/scripts/smart-collector-daemon.pl --config $CONFIG_DIR/cluster-$NODE.conf
56
Restart=always
57
RestartSec=30
58
User=root
59

            
60
[Install]
61
WantedBy=multi-user.target
62
EOF"
63

            
64
    # Enable service (but don't start yet)
65
    ssh root@192.168.2.$NODE "systemctl daemon-reload && systemctl enable autosmart"
66

            
67
    echo "✅ Node $NODE deployment complete"
68
done
69

            
70
# Test database connectivity
71

            
72
  # Install systemd service
73
  ssh root@$NODE_IP "cat > /etc/systemd/system/autosmart.service << EOF
74
echo ""
75
echo "🔍 Testing database connectivity..."
76
PGPASSWORD="$DB_PASS" psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "
77
SELECT
78
    COUNT(*) as total_drives,
79
    COUNT(DISTINCT current_node_id) as active_nodes
80
FROM hdd_inventory;
81
"
82

            
83
echo ""
84
echo "🎉 Production deployment complete!"
85
echo ""
86
echo "To start services on all nodes:"
87
echo "  for node in ebony ivory obsidian; do ssh root@192.168.2.\$node 'systemctl start autosmart'; done"
88
echo ""
89
echo "To monitor services:"
90
echo "  for node in ebony ivory obsidian; do echo \"=== \$node ===\"; ssh root@192.168.2.\$node 'systemctl status autosmart'; done"
91
echo ""
92
echo "Database monitoring:"
93
echo "  PGPASSWORD='$DB_PASS' psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c 'SELECT * FROM storage_efficiency_stats;'"
94

            
95
# Cleanup
96
rm -rf /tmp/autoSMART-deploy
97

            
98
echo "✅ Deployment script complete!"