windows-iac-vm-tooling/docs/07-advanced/evaluation.md
root e4f03427b7
Some checks are pending
Build and Release / build-sign-package (push) Waiting to run
feat: Add professional hierarchical documentation
- Created comprehensive README.md with Mermaid diagrams, badges, and TOC
- Added docs/ directory with 7 sections and 14 markdown files
- Included architecture diagrams, flowcharts, and sequence diagrams
- All documentation is fully interlinked with cross-references
- Added ISO storage location on Proxmox development server
- Included troubleshooting guide and evaluation management docs
- All config files (Packer, Terraform, Ansible, Forgejo) documented
- Added icons and visual elements throughout documentation
2026-02-06 14:47:15 +00:00

4.9 KiB

90-Day Evaluation Management

Windows

Overview

Windows Evaluation editions expire after 90 days. This document explains the expiration mechanism and provides strategies for managing it in your automation pipeline.


Understanding Evaluation Expiration

flowchart LR
    subgraph Timeline["90-Day Timeline"]
        Start[Install Day 0] --> Day30[Day 30] --> Day60[Day 60] --> Day90[Day 90 - Expiration]
    end
    
    subgraph States["System States"]
        Active[✅ Active] --> Warning[⚠️ Warning 15 days] --> Expired[❌ Expired]
    end
    
    Timeline --> States
    
    style Timeline fill:#e3f2fd
    style States fill:#e8f5e9
Phase Duration Status
Full Activation Days 0-89 Fully functional
Warning Period Days 90-104 ⚠️ Countdown warnings
Grace Period Days 105-180 Extended grace
Expired Day 181+ System stops

Expiration Methods

Method 1: Rearm (Manual/Scripted)

The slmgr /rearm command resets the activation timer.

# Run as Administrator
slmgr /rearm

# Reboot required
shutdown /r /t 0

Limits:

  • Maximum 3 rearm attempts per installation
  • Each rearm resets to 90 days
  • Total: 360 days maximum

The recommended approach is to rebuild the golden image monthly.

flowchart TB
    subgraph Monthly["Monthly Schedule"]
        direction LR
        Week1[Week 1: Packer Build] --> Week2[Week 2-4: Use Template]
    end
    
    subgraph Process["Rebuild Process"]
        Destroy[Destroy Old Template] --> Create[Create New Template] --> Verify[Test New Template]
    end
    
    Monthly --> Process
    
    style Monthly fill:#e3f2fd
    style Process fill:#e8f5e9

Benefits:

  • Fresh timer each month
  • Latest Windows updates baked in
  • Consistent baseline
  • No rearm limitations

Implementation Strategy

Automated Monthly Rebuild

Configure a scheduled workflow in Forgejo:

# .forgejo/workflows/monthly-rebuild.yml
name: Monthly Template Rebuild
on:
  schedule:
    - cron: '0 0 1 * *'  # First day of each month at midnight

jobs:
  rebuild-template:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      
      - name: Build New Template
        run: |
          cd packer
          packer build -timestamp-ui windows.pkr.hcl
      
      - name: Cleanup Old Template
        run: |
          # Script to remove template older than 45 days
          ./scripts/cleanup-old-templates.sh --older-than 45d

Rebarm as Backup

For emergency extension:

# emergency-rearm.ps1
# Run via Ansible or manually

if ((slmgr /dlv) -match "Remaining: 0") {
    Write-Host "Rearming system..."
    slmgr /rearm
    shutdown /r /t 0
} else {
    Write-Host "Not yet expired, no action needed"
}

Monitoring Expiration

Check Current Status

# Method 1: slmgr
slmgr /dlv

# Method 2: PowerShell
(Get-CimInstance -Query "SELECT * FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL").RemainingGracePeriod

Automated Monitoring Script

#!/bin/bash
# check-expiration.sh - Run via Ansible monthly

VM_ID="9000"
PROXMOX_HOST="la-vmh-07"

# Get VM's Windows activation status
ssh root@$PROXMOX_HOST "qm agent $VM_ID exec-win32 powershell -Command '(Get-CimInstance -Query \"SELECT * FROM SoftwareLicensingProduct WHERE PartialProductKey IS NOT NULL\").RemainingGracePeriod'"

# Alert if less than 7 days
if [ $DAYS_REMAINING -lt 7 ]; then
    echo "⚠️ ALERT: Template expires in $DAYS_REMAINING days"
    # Send notification
fi

Best Practices

Practice Description Priority
Monthly rebuild Schedule automatic Packer build 🔴 High
Monitor expiration Check status weekly 🟡 Medium
Test new templates Verify before production use 🔴 High
Document rebuilds Log template versions 🟢 Low

Troubleshooting

Issue Cause Solution
Rearm failed Already rearmed 3 times Rebuild with Packer
VM won't boot after rearm Activation issues Rebuild template
Updates not installing WSUS offline Include updates in Packer build

Next Steps

Goal Next Document
View troubleshooting Troubleshooting
Configure pipeline Forgejo Workflows
View architecture Architecture Overview

← Documentation Index | → Troubleshooting | ← Forgejo Workflows