Post

I Won An Auction For What I Thought Was A Single Pc But No

I Won An Auction For What I Thought Was A Single Pc But No

I Won An Auction For What I Thought Was A Single PC But No

Introduction

Picture this: You’re browsing government auction sites for spare hardware, place a casual $110 bid on what appears to be a single Dell OptiPlex workstation, only to discover days later you’ve acquired an entire fleet of decommissioned systems. This real-world scenario from a Reddit user perfectly encapsulates the infrastructure management challenges DevOps professionals face daily - just on a smaller scale.

For homelab enthusiasts and self-hosted infrastructure operators, unexpected hardware windfalls present both opportunities and operational nightmares. Suddenly managing multiple systems requires immediate decisions about provisioning, orchestration, and lifecycle management - decisions with lasting technical debt implications. According to Spiceworks’ 2024 State of IT report, 63% of organizations now manage hybrid infrastructure spanning physical and cloud environments.

This comprehensive guide will transform your accidental hardware acquisition into a masterclass in modern infrastructure management. You’ll learn:

  1. Efficient provisioning techniques for heterogeneous hardware
  2. Container orchestration strategies for mixed environments
  3. Automated monitoring and maintenance workflows
  4. Cost-effective repurposing of aging hardware
  5. Security hardening for self-hosted environments

Whether you’re managing 5 unexpected OptiPlex units or 500 cloud instances, these battle-tested DevOps practices apply equally to homelabs and enterprise environments.

Understanding Infrastructure Management

What is Modern Infrastructure Management?

Infrastructure management encompasses the tools, processes, and methodologies for provisioning, maintaining, and optimizing computing resources. In our auction scenario, this means transforming a pile of Dell OptiPlex 7020 SFF units into a coordinated computing environment.

Key components include:

  • Provisioning Systems: Tools like Terraform and Ansible for automated deployment
  • Orchestration Platforms: Kubernetes, Docker Swarm, or HashiCorp Nomad
  • Monitoring Stack: Prometheus/Grafana or ELK for observability
  • Lifecycle Management: Automated patching and retirement workflows

Evolution of Infrastructure Paradigms

The progression from physical to virtual to containerized infrastructure directly impacts how we handle unexpected hardware:

  1. Bare Metal Era (Pre-2010): Manual OS installations, physical cabling
  2. Virtualization Wave (2010-2015): VMware/Hyper-V enabling resource pooling
  3. Container Revolution (2015-Present): Docker/Kubernetes abstracting from hardware
  4. GitOps Future (2020+): Infrastructure-as-Code (IaC) managing everything declaratively

Technical Tradeoffs for Homelabs

When repurposing auction hardware, consider these technical tradeoffs:

ApproachProsCons
Bare MetalMaximum performanceManual management overhead
Type 1 HypervisorHardware isolation5-15% performance penalty
ContainersRapid deploymentLimited Windows support
ServerlessZero maintenanceCold starts on idle hardware

For our Dell OptiPlex scenario, a hybrid approach combining Proxmox VE (Type 1 hypervisor) with LXC containers offers optimal resource utilization while maintaining flexibility.

Prerequisites

Before repurposing auction hardware, verify these fundamentals:

Hardware Requirements

  • Minimum for Hypervisor Host:
    • CPU: Intel VT-x/AMD-V support (most OptiPlex 7020 units have this)
    • RAM: 8GB+ (16GB recommended)
    • Storage: SSD boot drive + secondary storage
    • Networking: Gigabit Ethernet (Intel NICs preferred)
  • Recommended for Container Host:
    • CPU: 4+ physical cores
    • RAM: 2GB per expected container
    • Storage: NVMe SSD for /var/lib/docker

Software Requirements

  • Hypervisor Options:
  • Container Runtimes:
    • Docker CE 24.0+
    • Podman 4.6+
  • Management Tools:
    • Ansible Core 2.15+
    • Terraform v1.6+

Security Considerations

  1. Physical Security:
    • Disable unused hardware ports in BIOS
    • Remove unnecessary peripherals
  2. Network Security:
    1
    2
    3
    4
    5
    
    # Basic UFW firewall setup
    sudo ufw default deny incoming
    sudo ufw default allow outgoing
    sudo ufw allow ssh
    sudo ufw enable
    
  3. Access Controls:
    • Full disk encryption (LUKS for Linux, BitLocker for Windows)
    • SSH key authentication only:
      1
      2
      3
      4
      
      # /etc/ssh/sshd_config
      PasswordAuthentication no
      PermitRootLogin no
      AllowUsers your_admin_user
      

Installation & Setup

Proxmox VE Deployment

  1. Prepare installation media:
    1
    2
    3
    
    # Linux workstation
    wget https://download.proxmox.com/iso/proxmox-ve_8.1-1.iso
    sudo dd if=proxmox-ve_8.1-1.iso of=/dev/sdX bs=4M status=progress
    
  2. Install on first OptiPlex unit:
    • Select ZFS (RAIDZ1 if multiple disks)
    • Set static IP for management interface
    • Enable hardware virtualization in BIOS
  3. Post-install configuration:
    1
    2
    3
    
    # Join Proxmox cluster (repeat for each node)
    pvecm create YOUR_CLUSTER_NAME
    pvecm add IP_OF_FIRST_NODE
    

Docker Swarm Initialization

For container orchestration across nodes:

1
2
3
4
5
# On first node (manager)
docker swarm init --advertise-addr 192.168.1.50

# On worker nodes
docker swarm join --token SWMTKN-1-0v8... 192.168.1.50:2377

Verify node status:

1
docker node ls

Automated Provisioning with Ansible

Create inventory file inventory.yml:

1
2
3
4
5
6
7
8
9
10
11
12
all:
  children:
    proxmox_hosts:
      hosts:
        optiplex01:
          ansible_host: 192.168.1.51
        optiplex02:
          ansible_host: 192.168.1.52
    docker_workers:
      hosts:
        optiplex03:
          ansible_host: 192.168.1.53

Sample playbook provision.yml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
---
- name: Base system configuration
  hosts: all
  become: true
  tasks:
    - name: Update apt cache
      apt:
        update_cache: yes
        cache_valid_time: 3600

    - name: Install baseline packages
      apt:
        name:
          - tmux
          - htop
          - net-tools
        state: present

Configuration & Optimization

Storage Optimization

For maximum IOPS from aging OptiPlex SSDs:

1
2
3
# /etc/fstab optimizations for SSD
UUID=xxxx-xxxx-xxxx / ext4 defaults,noatime,nodiratime,discard 0 1
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0

Network Tuning

Improve container networking performance:

1
2
3
4
# /etc/sysctl.conf
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_fastopen=3

Security Hardening

Implement CIS benchmarks for Docker:

1
2
3
4
5
6
7
8
9
10
11
# /etc/docker/daemon.json
{
  "userns-remap": "default",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "live-restore": true,
  "no-new-privileges": true
}

Usage & Operations

Daily Management Tasks

  1. Cluster health check:
    1
    2
    3
    
    docker node ls
    docker service ls
    pvecm status
    
  2. Resource monitoring:
    1
    2
    
    # Live container resource usage
    docker stats --format "table \t\t"
    
  3. Rolling updates:
    1
    
    docker service update --image new_image:tag $SERVICE_NAME
    

Backup Strategy

Implement 3-2-1 backup rule:

  1. Local ZFS snapshots:
    1
    2
    
    # Proxmox VE snapshot
    zfs snapshot tank/vm-100-disk-0@$(date +%Y%m%d)
    
  2. Offsite backups with Rclone:
    1
    2
    3
    4
    5
    
    rclone sync /var/lib/vz/dump remote:backups/proxmox \
      --transfers 4 \
      --checkers 8 \
      --fast-list \
      --verbose
    

Troubleshooting

Common Issues and Solutions

Problem: Docker containers unable to connect to external networks
Solution: Check FORWARD chain rules:

1
2
sudo iptables -L FORWARD -v -n
sudo iptables -P FORWARD ACCEPT

Problem: High CPU usage on older OptiPlex units
Diagnosis:

1
2
docker stats --no-stream | sort -k3 -h
perf top -g -p $(pidof dockerd)

Problem: Swarm node leaving unexpectedly
Recovery:

1
2
3
4
# Force remove node
docker node rm --force $NODE_ID
# Rejoin with fresh token
docker swarm join-token worker

Conclusion

Accidental infrastructure acquisition presents both challenges and opportunities for DevOps practitioners. By applying enterprise-grade tooling like Proxmox, Docker Swarm, and Ansible to humble OptiPlex hardware, we’ve demonstrated how to:

  1. Rapidly deploy hybrid virtualization environments
  2. Implement container orchestration on bare metal
  3. Automate lifecycle management tasks
  4. Maintain security compliance in self-hosted setups

These skills directly translate to professional environments where unexpected infrastructure changes are commonplace. As edge computing gains prominence, the ability to manage distributed, heterogeneous hardware becomes increasingly valuable.

For further learning:

The next frontier? Extending this architecture with GitOps workflows using FluxCD or ArgoCD, treating physical hardware with the same declarative approach as cloud infrastructure. The auction surprise that started as a potential burden has transformed into a powerful learning environment - exactly the type of hands-on experience that distinguishes competent system administrators from exceptional infrastructure engineers.

This post is licensed under CC BY 4.0 by the author.