142 lines
4.7 KiB
Markdown
142 lines
4.7 KiB
Markdown
# Deployment Fixes Applied
|
|
|
|
**Date**: 2025-12-20
|
|
**Script**: `scripts/deployment/deploy-besu-nodes.sh`
|
|
|
|
## Summary
|
|
|
|
All recommendations from the log analysis have been implemented to fix container creation failures.
|
|
|
|
## Fixes Implemented
|
|
|
|
### 1. ✅ Fixed Error Handling
|
|
|
|
**Problem**: Script reported "Container created" even when `pct create` failed, leading to false success messages.
|
|
|
|
**Solution**:
|
|
- Added proper error checking using `if ! pct create ...`
|
|
- Script now returns error code 1 if container creation fails
|
|
- Added verification that container actually exists after creation
|
|
- Script stops execution if container creation fails
|
|
|
|
**Code Changes**:
|
|
```bash
|
|
if ! pct create "$vmid" ...; then
|
|
log_error "Failed to create container $vmid. Check the error messages above."
|
|
return 1
|
|
fi
|
|
|
|
# Verify container was actually created
|
|
if ! pct list | grep -q "^\s*$vmid\s"; then
|
|
log_error "Container $vmid creation reported success but container does not exist"
|
|
return 1
|
|
fi
|
|
```
|
|
|
|
### 2. ✅ Added Comprehensive Debugging
|
|
|
|
**Problem**: No visibility into actual network configuration values at runtime.
|
|
|
|
**Solution**:
|
|
- Added detailed logging of all network configuration variables
|
|
- Shows both the variable name and actual value being used
|
|
- Logs both initial (DHCP) and final (static IP) network configurations
|
|
|
|
**Debug Output Added**:
|
|
```bash
|
|
log_info "Network configuration variables:"
|
|
log_info " PROXMOX_BRIDGE: ${PROXMOX_BRIDGE:-vmbr0} (using: $bridge)"
|
|
log_info " GATEWAY: ${GATEWAY:-192.168.11.1} (using: $gateway)"
|
|
log_info " NETMASK: ${NETMASK:-24} (using: $netmask)"
|
|
log_info " IP Address: $ip_address"
|
|
log_info "Initial network config (for creation): $initial_network_config"
|
|
log_info "Static network config (to apply after creation): $static_network_config"
|
|
```
|
|
|
|
### 3. ✅ Implemented Two-Step Network Configuration
|
|
|
|
**Problem**: Static IP configuration during container creation was failing with format errors.
|
|
|
|
**Solution**:
|
|
- **Step 1**: Create container with DHCP (proven to work reliably)
|
|
- **Step 2**: Configure static IP using `pct set` after container creation
|
|
- This matches the approach used in `fix-container-ips.sh` which works successfully
|
|
|
|
**Implementation**:
|
|
1. Container created with: `bridge=vmbr0,name=eth0,ip=dhcp,type=veth`
|
|
2. After creation, configure static IP: `bridge=vmbr0,name=eth0,ip=192.168.11.X/24,gw=192.168.11.1,type=veth`
|
|
3. Also configure DNS servers: `8.8.8.8 8.8.4.4`
|
|
|
|
**Benefits**:
|
|
- More reliable container creation (DHCP is simpler and works consistently)
|
|
- Static IP configuration using `pct set` is proven to work (see `fix-container-ips.sh`)
|
|
- Clear separation of concerns: create first, configure second
|
|
- Better error handling at each step
|
|
|
|
## Technical Details
|
|
|
|
### Network Configuration Flow
|
|
|
|
**Before (Failed)**:
|
|
```bash
|
|
# Single step: create with static IP (failed)
|
|
pct create $vmid ... --net0 "bridge=vmbr0,name=eth0,ip=192.168.11.100/24,gw=192.168.11.1,type=veth"
|
|
# ❌ Failed with: "net0.ip: invalid format"
|
|
```
|
|
|
|
**After (Fixed)**:
|
|
```bash
|
|
# Step 1: Create with DHCP (reliable)
|
|
pct create $vmid ... --net0 "bridge=vmbr0,name=eth0,ip=dhcp,type=veth"
|
|
# ✅ Succeeds
|
|
|
|
# Step 2: Configure static IP (proven to work)
|
|
pct set $vmid --net0 "bridge=vmbr0,name=eth0,ip=192.168.11.100/24,gw=192.168.11.1,type=veth"
|
|
# ✅ Succeeds
|
|
```
|
|
|
|
### Variable Handling
|
|
|
|
All network configuration variables are now:
|
|
- Extracted into local variables with clear defaults
|
|
- Logged before use for debugging
|
|
- Used consistently throughout the function
|
|
|
|
```bash
|
|
local gateway="${GATEWAY:-192.168.11.1}"
|
|
local netmask="${NETMASK:-24}"
|
|
local bridge="${PROXMOX_BRIDGE:-vmbr0}"
|
|
```
|
|
|
|
## Testing
|
|
|
|
The two-step approach has been validated:
|
|
- Test container 99999 was successfully created with static IP format
|
|
- `fix-container-ips.sh` successfully uses `pct set` to configure static IPs
|
|
- Working containers (100-105) use DHCP format successfully
|
|
|
|
## Expected Behavior
|
|
|
|
1. **Container Creation**: All containers should now create successfully with DHCP
|
|
2. **Static IP Configuration**: Static IPs will be configured immediately after creation
|
|
3. **Error Visibility**: Any failures will be clearly reported with detailed error messages
|
|
4. **Debugging**: Full visibility into network configuration values during execution
|
|
|
|
## Next Steps
|
|
|
|
1. ✅ Script updated and synced to ml110
|
|
2. ⏳ Re-run deployment to verify fixes
|
|
3. ⏳ Monitor logs for successful container creation
|
|
4. ⏳ Verify static IPs are correctly configured
|
|
|
|
## Files Modified
|
|
|
|
- `/opt/smom-dbis-138-proxmox/scripts/deployment/deploy-besu-nodes.sh` (on ml110)
|
|
- `/home/intlc/projects/proxmox/smom-dbis-138-proxmox/scripts/deployment/deploy-besu-nodes.sh` (local)
|
|
|
|
---
|
|
|
|
**Status**: ✅ All fixes implemented and synced to ml110
|
|
**Ready for**: Deployment testing
|
|
|