summaryrefslogtreecommitdiff
path: root/packer
diff options
context:
space:
mode:
authorheqnx <root@heqnx.com>2025-07-11 21:50:55 +0300
committerheqnx <root@heqnx.com>2025-07-11 21:50:55 +0300
commit8cf16b5c899a60ea5982c5d8dc042153daf6ac5b (patch)
treed64092854fe32f4630f514b93b244b0b5eddc5d1 /packer
parent54ecdd04947e70026c96365ea29463f8b435c1aa (diff)
downloadansible-active-directory-range-8cf16b5c899a60ea5982c5d8dc042153daf6ac5b.tar.gz
ansible-active-directory-range-8cf16b5c899a60ea5982c5d8dc042153daf6ac5b.zip
added packer templates
Diffstat (limited to 'packer')
-rw-r--r--packer/files/answer_files/linux/ubuntu/24.04-server/meta-data0
-rw-r--r--packer/files/answer_files/linux/ubuntu/24.04-server/user-data39
-rw-r--r--packer/files/answer_files/windows/2019/autounattend.xml176
-rw-r--r--packer/files/drivers/amd64/w10/balloon.catbin0 -> 8924 bytes
-rw-r--r--packer/files/drivers/amd64/w10/balloon.inf105
-rw-r--r--packer/files/drivers/amd64/w10/balloon.sysbin0 -> 47176 bytes
-rw-r--r--packer/files/drivers/amd64/w10/blnsvr.exebin0 -> 166568 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/netkvm.catbin0 -> 9723 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/netkvm.inf327
-rwxr-xr-xpacker/files/drivers/amd64/w10/netkvm.sysbin0 -> 143048 bytes
-rw-r--r--packer/files/drivers/amd64/w10/viorng.catbin0 -> 9772 bytes
-rw-r--r--packer/files/drivers/amd64/w10/viorng.inf117
-rw-r--r--packer/files/drivers/amd64/w10/viorng.sysbin0 -> 43080 bytes
-rw-r--r--packer/files/drivers/amd64/w10/viorngci.dllbin0 -> 96424 bytes
-rw-r--r--packer/files/drivers/amd64/w10/viorngum.dllbin0 -> 96424 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/vioscsi.catbin0 -> 9733 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/vioscsi.inf123
-rwxr-xr-xpacker/files/drivers/amd64/w10/vioscsi.sysbin0 -> 63688 bytes
-rw-r--r--packer/files/drivers/amd64/w10/vioser.catbin0 -> 8916 bytes
-rw-r--r--packer/files/drivers/amd64/w10/vioser.inf107
-rw-r--r--packer/files/drivers/amd64/w10/vioser.sysbin0 -> 70728 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/viostor.catbin0 -> 9733 bytes
-rwxr-xr-xpacker/files/drivers/amd64/w10/viostor.inf121
-rwxr-xr-xpacker/files/drivers/amd64/w10/viostor.sysbin0 -> 62664 bytes
-rw-r--r--packer/files/drivers/redhat-cert-old.cerbin0 -> 1290 bytes
-rw-r--r--packer/files/drivers/redhat-cert.cerbin0 -> 1242 bytes
-rwxr-xr-xpacker/files/scripts/create-checksums.sh41
-rw-r--r--packer/files/scripts/linux/init.sh4
-rw-r--r--packer/files/scripts/linux/setup-qemu-guest-agent.sh11
-rw-r--r--packer/files/scripts/linux/sysprep.sh271
-rw-r--r--packer/files/scripts/windows/cleanup.ps1132
-rw-r--r--packer/files/scripts/windows/disable-updates.ps113
-rw-r--r--packer/files/scripts/windows/enable-winrm-http.ps129
-rw-r--r--packer/files/scripts/windows/init.ps125
-rw-r--r--packer/files/scripts/windows/setup-qemu-guest-agent.ps114
-rw-r--r--packer/files/scripts/windows/sysprep-shutdown.bat6
-rw-r--r--packer/ubuntu-24.04-server.json90
-rw-r--r--packer/winserver2019.json130
38 files changed, 1881 insertions, 0 deletions
diff --git a/packer/files/answer_files/linux/ubuntu/24.04-server/meta-data b/packer/files/answer_files/linux/ubuntu/24.04-server/meta-data
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packer/files/answer_files/linux/ubuntu/24.04-server/meta-data
diff --git a/packer/files/answer_files/linux/ubuntu/24.04-server/user-data b/packer/files/answer_files/linux/ubuntu/24.04-server/user-data
new file mode 100644
index 0000000..5e02023
--- /dev/null
+++ b/packer/files/answer_files/linux/ubuntu/24.04-server/user-data
@@ -0,0 +1,39 @@
+#cloud-config
+autoinstall:
+ version: 1
+ early-commands:
+ - systemctl stop ssh
+ locale: en_US.UTF-8
+ keyboard:
+ layout: us
+ variant: ""
+ storage:
+ layout:
+ name: lvm
+ identity:
+ hostname: ubuntu
+ username: ubuntu
+ password: "$6$R9142dko7PYoTTJP$o19g/Av.dsI/fVEF4SJ8v0XqRcG6YdhQRGYLFrW2X4BG4gO2z3dWyOwio3pRrFXBMHNZHJlZPUp9yvR7elRKs0"
+ ssh:
+ allow-pw: true
+ install-server: true
+ user-data:
+ disable_root: false
+ runcmd:
+ - 'echo "root:root" | chpasswd'
+ late-commands:
+ - rm -rf /target/etc/apt/preferences.d/90curtin.pref
+ - curtin in-target --target=/target -- lvextend --extents +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
+ - curtin in-target --target=/target -- resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
+ - echo 'PermitRootLogin yes' >> /target/etc/ssh/sshd_config
+ - chmod -x /target/etc/update-motd.d/*
+ - |
+ cat << EOF > /target/etc/netplan/99-dhcp-any-interface.yaml
+ network:
+ ethernets:
+ any_interface:
+ match:
+ name: "e*"
+ dhcp4: true
+ version: 2
+ EOF
diff --git a/packer/files/answer_files/windows/2019/autounattend.xml b/packer/files/answer_files/windows/2019/autounattend.xml
new file mode 100644
index 0000000..1f87720
--- /dev/null
+++ b/packer/files/answer_files/windows/2019/autounattend.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="utf-8"?>
+<unattend xmlns="urn:schemas-microsoft-com:unattend">
+ <settings pass="windowsPE">
+ <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <SetupUILanguage>
+ <UILanguage>en-US</UILanguage>
+ </SetupUILanguage>
+ <InputLocale>en-US</InputLocale>
+ <SystemLocale>en-US</SystemLocale>
+ <UILanguage>en-US</UILanguage>
+ <UserLocale>en-US</UserLocale>
+ </component>
+ <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" language="neutral" name="Microsoft-Windows-PnpCustomizationsWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" versionScope="nonSxS">
+ <DriverPaths>
+ <PathAndCredentials wcm:action="add" wcm:keyValue="1">
+ <Path>e:\</Path>
+ </PathAndCredentials>
+ </DriverPaths>
+ </component>
+ <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <DiskConfiguration>
+ <Disk wcm:action="add">
+ <CreatePartitions>
+ <CreatePartition wcm:action="add">
+ <Type>Primary</Type>
+ <Order>1</Order>
+ <Size>350</Size>
+ </CreatePartition>
+ <CreatePartition wcm:action="add">
+ <Order>2</Order>
+ <Type>Primary</Type>
+ <Extend>true</Extend>
+ </CreatePartition>
+ </CreatePartitions>
+ <ModifyPartitions>
+ <ModifyPartition wcm:action="add">
+ <Active>true</Active>
+ <Format>NTFS</Format>
+ <Label>boot</Label>
+ <Order>1</Order>
+ <PartitionID>1</PartitionID>
+ </ModifyPartition>
+ <ModifyPartition wcm:action="add">
+ <Format>NTFS</Format>
+ <Label>Windows 2019</Label>
+ <Letter>C</Letter>
+ <Order>2</Order>
+ <PartitionID>2</PartitionID>
+ </ModifyPartition>
+ </ModifyPartitions>
+ <DiskID>0</DiskID>
+ <WillWipeDisk>true</WillWipeDisk>
+ </Disk>
+ </DiskConfiguration>
+ <ImageInstall>
+ <OSImage>
+ <InstallFrom>
+ <MetaData wcm:action="add">
+ <Key>/IMAGE/NAME</Key>
+ <Value>Windows Server 2019 SERVERSTANDARD</Value>
+ </MetaData>
+ </InstallFrom>
+ <InstallTo>
+ <DiskID>0</DiskID>
+ <PartitionID>2</PartitionID>
+ </InstallTo>
+ </OSImage>
+ </ImageInstall>
+ <UserData>
+ <AcceptEula>true</AcceptEula>
+ </UserData>
+ </component>
+ </settings>
+ <settings pass="oobeSystem">
+ <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <OOBE>
+ <HideEULAPage>true</HideEULAPage>
+ <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
+ <HideOnlineAccountScreens>true</HideOnlineAccountScreens>
+ <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE>
+ <ProtectYourPC>3</ProtectYourPC>
+ </OOBE>
+ <UserAccounts>
+ <LocalAccounts>
+ <LocalAccount wcm:action="add">
+ <Password>
+ <Value>packer</Value>
+ <PlainText>true</PlainText>
+ </Password>
+ <Group>Administrators</Group>
+ <Name>packer</Name>
+ <DisplayName>packer</DisplayName>
+ </LocalAccount>
+ </LocalAccounts>
+ <AdministratorPassword>
+ <Value>packer</Value>
+ <PlainText>true</PlainText>
+ </AdministratorPassword>
+ </UserAccounts>
+ <AutoLogon>
+ <Username>packer</Username>
+ <Enabled>true</Enabled>
+ <Password>
+ <Value>packer</Value>
+ <PlainText>true</PlainText>
+ </Password>
+ </AutoLogon>
+ <FirstLogonCommands>
+ <SynchronousCommand wcm:action="add">
+ <Order>1</Order>
+ <Description>Disable the network discovery prompt window</Description>
+ <RequiresUserInput>false</RequiresUserInput>
+ <CommandLine>reg.exe add HKLM\System\CurrentControlSet\Control\Network\NewNetworkWindowOff</CommandLine>
+ </SynchronousCommand>
+ <SynchronousCommand wcm:action="add">
+ <Order>2</Order>
+ <Description>Set Execution Policy 64 Bit</Description>
+ <RequiresUserInput>false</RequiresUserInput>
+ <CommandLine>cmd.exe /c powershell -c "set-executionpolicy -executionpolicy unrestricted -force"</CommandLine>
+ </SynchronousCommand>
+ <SynchronousCommand wcm:action="add">
+ <Order>3</Order>
+ <Description>Set Execution Policy 32 Bit</Description>
+ <RequiresUserInput>false</RequiresUserInput>
+ <CommandLine>c:\windows\syswow64\cmd.exe /c powershell -c "set-executionpolicy -executionpolicy unrestricted -force"</CommandLine>
+ </SynchronousCommand>
+ <SynchronousCommand wcm:action="add">
+ <Order>500</Order>
+ <Description>Enable WinRM</Description>
+ <RequiresUserInput>false</RequiresUserInput>
+ <CommandLine>cmd.exe /c for %i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %i:\enable-winrm-http.ps1 (call powershell -file %i:\enable-winrm-http.ps1)</CommandLine>
+ </SynchronousCommand>
+ </FirstLogonCommands>
+ </component>
+ <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <InputLocale>en-US</InputLocale>
+ <SystemLocale>en-US</SystemLocale>
+ <UILanguage>en-US</UILanguage>
+ <UserLocale>en-US</UserLocale>
+ </component>
+ </settings>
+ <settings pass="specialize">
+ <component name="Microsoft-Windows-TerminalServices-LocalSessionManager" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <fDenyTSConnections>false</fDenyTSConnections>
+ </component>
+ <component name="Networking-MPSSVC-Svc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <FirewallGroups>
+ <FirewallGroup wcm:action="add" wcm:keyValue="RemoteDesktop">
+ <Active>true</Active>
+ <Group>@FirewallAPI.dll,-28752</Group>
+ <Profile>all</Profile>
+ </FirewallGroup>
+ </FirewallGroups>
+ </component>
+ <component name="Microsoft-Windows-TerminalServices-RDP-WinStationExtensions" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <SecurityLayer>1</SecurityLayer>
+ <UserAuthentication>0</UserAuthentication>
+ </component>
+ <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <CopyProfile>true</CopyProfile>
+ <TimeZone>UTC</TimeZone>
+ </component>
+ <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-ServerManager-SvrMgrNc" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
+ <DoNotOpenServerManagerAtLogon>true</DoNotOpenServerManagerAtLogon>
+ </component>
+ <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-IE-ESC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
+ <IEHardenAdmin>false</IEHardenAdmin>
+ <IEHardenUser>false</IEHardenUser>
+ </component>
+ <component xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="Microsoft-Windows-OutOfBoxExperience" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
+ <DoNotOpenInitialConfigurationTasksAtLogon>true</DoNotOpenInitialConfigurationTasksAtLogon>
+ </component>
+ </settings>
+ <cpi:offlineImage cpi:source="" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
+</unattend>
+
diff --git a/packer/files/drivers/amd64/w10/balloon.cat b/packer/files/drivers/amd64/w10/balloon.cat
new file mode 100644
index 0000000..cdece36
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/balloon.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/balloon.inf b/packer/files/drivers/amd64/w10/balloon.inf
new file mode 100644
index 0000000..4c8aeac
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/balloon.inf
@@ -0,0 +1,105 @@
+;/*++
+;
+;Copyright (c) 2009-2017 Red Hat Inc.
+;
+;Module Name:
+; BALLOON.INF
+;
+;Abstract:
+;
+;Installation Notes:
+; Using Devcon: Type "devcon install BALLOON.inf PCI\VEN_1AF4&DEV_1002&SUBSYS_00051AF4&REV_00" or
+; "devcon install BALLOON.inf PCI\VEN_1AF4&DEV_1045&SUBSYS_11001AF4&REV_01" to install
+;
+;--*/
+
+[Version]
+Signature="$WINDOWS NT$"
+Class=System
+ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}
+Provider=%RHEL%
+DriverVer=07/19/2017,100.74.104.14100
+CatalogFile=Balloon.cat
+DriverPackageType = PlugAndPlay
+DriverPackageDisplayName = %BALLOON.DeviceDesc%
+PnpLockdown = 1
+
+[DestinationDirs]
+DefaultDestDir = 12
+BALLOON_Device_CoInstaller_CopyFiles = 11
+
+[SourceDisksNames]
+1 = %DiskId1%,,,""
+
+[SourceDisksFiles]
+balloon.sys = 1,,
+;
+
+
+;*****************************************
+; BALLOON Install Section
+;*****************************************
+
+[Manufacturer]
+%RHEL%=Standard,NTamd64.10.0
+
+[Standard.NTamd64.10.0]
+%BALLOON.DeviceDesc%=BALLOON_Device, PCI\VEN_1AF4&DEV_1002&SUBSYS_00051AF4&REV_00
+%BALLOON.DeviceDesc%=BALLOON_Device, PCI\VEN_1AF4&DEV_1045&SUBSYS_11001AF4&REV_01
+
+[BALLOON_Device.NT]
+CopyFiles=Drivers_Dir
+
+[Drivers_Dir]
+balloon.sys
+
+
+;-------------- Service installation
+[BALLOON_Device.NT.Services]
+AddService = BALLOON,%SPSVCINST_ASSOCSERVICE%, BALLOON_Service_Inst, BALLOON_Logging_Inst
+
+; -------------- BALLOON driver install sections
+[BALLOON_Service_Inst]
+DisplayName = %BALLOON.SVCDESC%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\balloon.sys
+
+; -------------- BALLOON driver eventlog install sections
+[BALLOON_Logging_Inst]
+AddReg = BALLOON_Logging_Inst_AddReg
+
+[BALLOON_Logging_Inst_AddReg]
+HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\balloon.sys"
+HKR,,TypesSupported,0x00010001,7
+
+;--- BALLOON_Device Coinstaller installation ------
+;
+
+[BALLOON_Device.NT.CoInstallers]
+AddReg=BALLOON_Device_CoInstaller_AddReg
+CopyFiles=BALLOON_Device_CoInstaller_CopyFiles
+
+[BALLOON_Device_CoInstaller_AddReg]
+;
+
+
+[BALLOON_Device_CoInstaller_CopyFiles]
+;
+
+
+[BALLOON_Device.NT.Wdf]
+KmdfService = BALLOON, BALLOON_wdfsect
+[BALLOON_wdfsect]
+KmdfLibraryVersion = 1.15
+
+
+[Strings]
+SPSVCINST_ASSOCSERVICE= 0x00000002
+RHEL = "Red Hat, Inc."
+DiskId1 = "VirtIO Balloon Installation Disk #1"
+BALLOON.DeviceDesc = "VirtIO Balloon Driver"
+BALLOON.SVCDESC = "VirtIO Balloon Service"
+ClassName = "VirtIO Balloon Device"
+
diff --git a/packer/files/drivers/amd64/w10/balloon.sys b/packer/files/drivers/amd64/w10/balloon.sys
new file mode 100644
index 0000000..316a162
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/balloon.sys
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/blnsvr.exe b/packer/files/drivers/amd64/w10/blnsvr.exe
new file mode 100644
index 0000000..63ec950
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/blnsvr.exe
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/netkvm.cat b/packer/files/drivers/amd64/w10/netkvm.cat
new file mode 100755
index 0000000..bbb9cd0
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/netkvm.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/netkvm.inf b/packer/files/drivers/amd64/w10/netkvm.inf
new file mode 100755
index 0000000..164b4ff
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/netkvm.inf
@@ -0,0 +1,327 @@
+;-------------------------------------------------------------------------------
+;Copyright (c) 2008-2019 Red Hat Inc.
+;
+;
+;Module Name:
+; netkvm.inf
+;
+; VirtIO Ethernet Adapter
+;
+;-------------------------------------------------------------------------------
+
+[version]
+Signature = "$Windows NT$"
+Class = Net
+CatalogFile = netkvm.cat
+ClassGUID = {4d36e972-e325-11ce-bfc1-08002be10318}
+Provider=%VENDOR%
+DriverVer = 04/12/2019,100.77.104.17100
+DriverPackageType = PlugAndPlay
+DriverPackageDisplayName = %kvmnet6.DeviceDesc%
+
+[Manufacturer]
+%VENDOR% = NetKVM, NTamd64.10.0
+
+[NetKVM.NTamd64.10.0]
+%kvmnet6.DeviceDesc% = kvmnet6.ndi, PCI\VEN_1AF4&DEV_1000&SUBSYS_00011AF4&REV_00, PCI\VEN_1AF4&DEV_1000
+%kvmnet6.DeviceDesc% = kvmnet6.ndi, PCI\VEN_1AF4&DEV_1041&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1041
+
+[kvmnet6.ndi.hw]
+AddReg = kvmnet6.EnableMSI
+
+[kvmnet6.EnableMSI]
+;HKR, "Interrupt Management",, 0x00000010
+;HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 2048
+;HKR, "Interrupt Management\Affinity Policy",, 0x00000010
+HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 0
+HKR, "Interrupt Management\Affinity Policy", DevicePriority, 0x00010001, 2
+
+[kvmnet6.ndi]
+Characteristics = 0x84 ; NCF_PHYSICAL | NCF_HAS_UI
+BusType = 5 ; PCI
+AddReg = kvmnet6.Reg, Parameters
+CopyFiles = kvmnet6.CopyFiles
+*IfType = 6
+*MediaType = 0 ; NdisMedium802_3
+*PhysicalMediaType = 0 ; NdisPhysicalMediumUnspecified
+
+[kvmnet6.ndi.Services]
+AddService = netkvm, 2, kvmnet6.Service, kvmnet6.EventLog
+
+;-----------------------------------------------------------------------------
+; Red Hat ParaVirtualized Miniport Common
+;-----------------------------------------------------------------------------
+
+[kvmnet6.Reg]
+HKR, , BusNumber, 0, "0"
+HKR, Ndi, Service, 0, "netkvm"
+HKR, Ndi\Interfaces, UpperRange, 0, "ndis5"
+HKR, Ndi\Interfaces, LowerRange, 0, "ethernet"
+
+HKR, Ndi\params\*RSS, ParamDesc, 0, "Receive Side Scaling"
+HKR, Ndi\params\*RSS, Type, 0, "enum"
+HKR, Ndi\params\*RSS, Default, 0, "1"
+HKR, Ndi\params\*RSS, Optional, 0, "0"
+HKR, Ndi\params\*RSS\enum, "0", 0, "Disabled"
+HKR, Ndi\params\*RSS\enum, "1", 0, "Enabled"
+
+HKR, Ndi\params\*NumRssQueues, ParamDesc, 0, "Maximum Number of RSS Queues"
+HKR, Ndi\params\*NumRssQueues, type, 0, "int"
+HKR, Ndi\params\*NumRssQueues, default, 0, "8"
+HKR, Ndi\params\*NumRssQueues, min, 0, "1"
+HKR, Ndi\params\*NumRssQueues, max, 0, "16"
+HKR, Ndi\params\*NumRssQueues, step, 0, "1"
+
+HKR, Ndi\params\*RscIPv4, ParamDesc, 0, "Recv Segment Coalescing (IPv4)"
+HKR, Ndi\params\*RscIPv4, Type, 0, "enum"
+HKR, Ndi\params\*RscIPv4, Default, 0, "1"
+HKR, Ndi\params\*RscIPv4, Optional, 0, "0"
+HKR, Ndi\params\*RscIPv4\enum, "0", 0, "Disabled"
+HKR, Ndi\params\*RscIPv4\enum, "1", 0, "Enabled"
+
+HKR, Ndi\params\*RscIPv6, ParamDesc, 0, "Recv Segment Coalescing (IPv6)"
+HKR, Ndi\params\*RscIPv6, Type, 0, "enum"
+HKR, Ndi\params\*RscIPv6, Default, 0, "1"
+HKR, Ndi\params\*RscIPv6, Optional, 0, "0"
+HKR, Ndi\params\*RscIPv6\enum, "0", 0, "Disabled"
+HKR, Ndi\params\*RscIPv6\enum, "1", 0, "Enabled"
+
+[Parameters]
+
+HKR, Ndi\Params\Priority, ParamDesc, 0, %Priority%
+HKR, Ndi\Params\Priority, Default, 0, "1"
+HKR, Ndi\Params\Priority, type, 0, "enum"
+HKR, Ndi\Params\Priority\enum, "1", 0, %Enable%
+HKR, Ndi\Params\Priority\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*PriorityVLANTag, ParamDesc, 0, %PriorityVlanTag%
+HKR, Ndi\Params\*PriorityVLANTag, Default, 0, "3"
+HKR, Ndi\Params\*PriorityVLANTag, type, 0, "enum"
+HKR, Ndi\Params\*PriorityVLANTag\enum, "3", 0, %Priority_Vlan%
+HKR, Ndi\Params\*PriorityVLANTag\enum, "2", 0, %VLan%
+HKR, Ndi\Params\*PriorityVLANTag\enum, "1", 0, %PriorityOnly%
+HKR, Ndi\Params\*PriorityVLANTag\enum, "0", 0, %Disable%
+
+HKR, Ndi\params\VlanID, ParamDesc, 0, %VLan_ID%
+HKR, Ndi\params\VlanID, type, 0, "int"
+HKR, Ndi\params\VlanID, default, 0, "0"
+HKR, Ndi\params\VlanID, min, 0, "0"
+HKR, Ndi\params\VlanID, max, 0, "4095"
+
+HKR, Ndi\Params\DoLog, ParamDesc, 0, %EnableLogging%
+HKR, Ndi\Params\DoLog, Default, 0, "1"
+HKR, Ndi\Params\DoLog, type, 0, "enum"
+HKR, Ndi\Params\DoLog\enum, "1", 0, %Enable%
+HKR, Ndi\Params\DoLog\enum, "0", 0, %Disable%
+
+HKR, Ndi\params\DebugLevel, ParamDesc, 0, %DebugLevel%
+HKR, Ndi\params\DebugLevel, type, 0, "int"
+HKR, Ndi\params\DebugLevel, default, 0, "0"
+HKR, Ndi\params\DebugLevel, min, 0, "0"
+HKR, Ndi\params\DebugLevel, max, 0, "8"
+HKR, Ndi\params\DebugLevel, step, 0, "1"
+
+HKR, Ndi\params\MTU, ParamDesc, 0, %MTU%
+HKR, Ndi\params\MTU, type, 0, "long"
+HKR, Ndi\params\MTU, default, 0, "1500"
+HKR, Ndi\params\MTU, min, 0, "576"
+HKR, Ndi\params\MTU, max, 0, "65500"
+HKR, Ndi\params\MTU, step, 0, "1"
+
+HKR, Ndi\params\TxCapacity, ParamDesc, 0, %TxCapacity%
+HKR, Ndi\params\TxCapacity, type, 0, "enum"
+HKR, Ndi\params\TxCapacity, default, 0, "1024"
+HKR, Ndi\Params\TxCapacity\enum, "16", 0, %String_16%
+HKR, Ndi\Params\TxCapacity\enum, "32", 0, %String_32%
+HKR, Ndi\Params\TxCapacity\enum, "64", 0, %String_64%
+HKR, Ndi\Params\TxCapacity\enum, "128", 0, %String_128%
+HKR, Ndi\Params\TxCapacity\enum, "256", 0, %String_256%
+HKR, Ndi\Params\TxCapacity\enum, "512", 0, %String_512%
+HKR, Ndi\Params\TxCapacity\enum, "1024", 0, %String_1024%
+
+HKR, Ndi\params\RxCapacity, ParamDesc, 0, %RxCapacity%
+HKR, Ndi\params\RxCapacity, type, 0, "enum"
+HKR, Ndi\params\RxCapacity, default, 0, "256"
+HKR, Ndi\Params\RxCapacity\enum, "16", 0, %String_16%
+HKR, Ndi\Params\RxCapacity\enum, "32", 0, %String_32%
+HKR, Ndi\Params\RxCapacity\enum, "64", 0, %String_64%
+HKR, Ndi\Params\RxCapacity\enum, "128", 0, %String_128%
+HKR, Ndi\Params\RxCapacity\enum, "256", 0, %String_256%
+HKR, Ndi\Params\RxCapacity\enum, "512", 0, %String_512%
+HKR, Ndi\Params\RxCapacity\enum, "1024", 0, %String_1024%
+
+HKR, Ndi\params\NetworkAddress, ParamDesc, 0, %NetworkAddress%
+HKR, Ndi\params\NetworkAddress, type, 0, "edit"
+HKR, Ndi\params\NetworkAddress, Optional, 0, "1"
+
+HKR, Ndi\Params\OffLoad.TxChecksum, ParamDesc, 0, %OffLoad.TxChecksum%
+HKR, Ndi\Params\OffLoad.TxChecksum, Default, 0, "31"
+HKR, Ndi\Params\OffLoad.TxChecksum, type, 0, "enum"
+HKR, Ndi\Params\OffLoad.TxChecksum\enum, "31", 0, %All%
+HKR, Ndi\Params\OffLoad.TxChecksum\enum, "27", 0, %TCPUDPAll%
+HKR, Ndi\Params\OffLoad.TxChecksum\enum, "3", 0, %TCPUDPv4%
+HKR, Ndi\Params\OffLoad.TxChecksum\enum, "1", 0, %TCPv4%
+HKR, Ndi\Params\OffLoad.TxChecksum\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\OffLoad.TxLSO, ParamDesc, 0, %OffLoad.TxLSO%
+HKR, Ndi\Params\OffLoad.TxLSO, Default, 0, "2"
+HKR, Ndi\Params\OffLoad.TxLSO, type, 0, "enum"
+HKR, Ndi\Params\OffLoad.TxLSO\enum, "2", 0, %Maximal%
+HKR, Ndi\Params\OffLoad.TxLSO\enum, "1", 0, %IPv4%
+HKR, Ndi\Params\OffLoad.TxLSO\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\OffLoad.RxCS, ParamDesc, 0, %OffLoad.RxCS%
+HKR, Ndi\Params\OffLoad.RxCS, Default, 0, "31"
+HKR, Ndi\Params\OffLoad.RxCS, type, 0, "enum"
+HKR, Ndi\Params\OffLoad.RxCS\enum, "31", 0, %All%
+HKR, Ndi\Params\OffLoad.RxCS\enum, "27", 0, %TCPUDPAll%
+HKR, Ndi\Params\OffLoad.RxCS\enum, "3", 0, %TCPUDPv4%
+HKR, Ndi\Params\OffLoad.RxCS\enum, "1", 0, %TCPv4%
+HKR, Ndi\Params\OffLoad.RxCS\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*IPChecksumOffloadIPv4, ParamDesc, 0, %Std.IPChecksumOffloadv4%
+HKR, Ndi\Params\*IPChecksumOffloadIPv4, Default, 0, "3"
+HKR, Ndi\Params\*IPChecksumOffloadIPv4, type, 0, "enum"
+HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "3", 0, %TxRx%
+HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "2", 0, %Rx%
+HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "1", 0, %Tx%
+HKR, Ndi\Params\*IPChecksumOffloadIPv4\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*LsoV2IPv4, ParamDesc, 0, %Std.LsoV2IPv4%
+HKR, Ndi\Params\*LsoV2IPv4, Default, 0, "1"
+HKR, Ndi\Params\*LsoV2IPv4, type, 0, "enum"
+HKR, Ndi\Params\*LsoV2IPv4\enum, "1", 0, %Enable%
+HKR, Ndi\Params\*LsoV2IPv4\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*LsoV2IPv6, ParamDesc, 0, %Std.LsoV2IPv6%
+HKR, Ndi\Params\*LsoV2IPv6, Default, 0, "1"
+HKR, Ndi\Params\*LsoV2IPv6, type, 0, "enum"
+HKR, Ndi\Params\*LsoV2IPv6\enum, "1", 0, %Enable%
+HKR, Ndi\Params\*LsoV2IPv6\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4, ParamDesc, 0, %Std.UDPChecksumOffloadIPv4%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4, Default, 0, "3"
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4, type, 0, "enum"
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "3", 0, %TxRx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "2", 0, %Rx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "1", 0, %Tx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv4\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4, ParamDesc, 0, %Std.TCPChecksumOffloadIPv4%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4, Default, 0, "3"
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4, type, 0, "enum"
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "3", 0, %TxRx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "2", 0, %Rx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "1", 0, %Tx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv4\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6, ParamDesc, 0, %Std.TCPChecksumOffloadIPv6%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6, Default, 0, "3"
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6, type, 0, "enum"
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "3", 0, %TxRx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "2", 0, %Rx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "1", 0, %Tx%
+HKR, Ndi\Params\*TCPChecksumOffloadIPv6\enum, "0", 0, %Disable%
+
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6, ParamDesc, 0, %Std.UDPChecksumOffloadIPv6%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6, Default, 0, "3"
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6, type, 0, "enum"
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "3", 0, %TxRx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "2", 0, %Rx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "1", 0, %Tx%
+HKR, Ndi\Params\*UDPChecksumOffloadIPv6\enum, "0", 0, %Disable%
+
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, ParamDesc, 0, %NumberOfHandledRXPacketsInDPC%
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, type, 0, "long"
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, default, 0, "1000"
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, min, 0, "1"
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, max, 0, "10000"
+HKR, Ndi\params\NumberOfHandledRXPacketsInDPC, step, 0, "1"
+
+[kvmnet6.CopyFiles]
+netkvm.sys,,,2
+
+[kvmnet6.Service]
+DisplayName = %kvmnet6.Service.DispName%
+ServiceType = 1 ;%SERVICE_KERNEL_DRIVER%
+StartType = 3 ;%SERVICE_DEMAND_START%
+ErrorControl = 1 ;%SERVICE_ERROR_NORMAL%
+ServiceBinary = %12%\netkvm.sys
+LoadOrderGroup = NDIS
+AddReg = TextModeFlags.Reg
+
+[kvmnet6.EventLog]
+AddReg = kvmnet6.AddEventLog.Reg
+
+[kvmnet6.AddEventLog.Reg]
+HKR, , EventMessageFile, 0x00020000, "%%SystemRoot%%\System32\netevent.dll"
+HKR, , TypesSupported, 0x00010001, 7
+
+[TextModeFlags.Reg]
+HKR,,TextModeFlags,0x00010001, 0x0001
+HKR,Parameters,DisableMSI,,"0"
+HKR,Parameters,EarlyDebug,,"3"
+
+[SourceDisksNames]
+1 = %DiskId1%,,,""
+
+[SourceDisksFiles]
+netkvm.sys = 1,,
+
+[DestinationDirs]
+kvmnet6.CopyFiles = 12
+
+[Strings]
+VENDOR = "Red Hat, Inc."
+kvmnet6.DeviceDesc = "Red Hat VirtIO Ethernet Adapter"
+kvmnet6.Service.DispName = "Red Hat VirtIO Ethernet Adapter Service"
+DiskId1 = "Red Hat VirtIO Ethernet Adapter Driver Disk #1"
+NetworkAddress = "Assign MAC"
+Priority = "Init.Do802.1PQ"
+MTU = "Init.MTUSize"
+TxCapacity = "Init.MaxTxBuffers"
+RxCapacity = "Init.MaxRxBuffers"
+Offload.TxChecksum = "Offload.Tx.Checksum"
+Offload.TxLSO = "Offload.Tx.LSO"
+Offload.RxCS = "Offload.Rx.Checksum"
+EnableLogging = "Logging.Enable"
+DebugLevel = "Logging.Level"
+Tx = "Tx Enabled";
+Rx = "Rx Enabled";
+TxRx = "Rx & Tx Enabled";
+NumberOfHandledRXPacketsInDPC = "TestOnly.RXThrottle"
+Std.LsoV2IPv4 = "Large Send Offload V2 (IPv4)"
+Std.LsoV2IPv6 = "Large Send Offload V2 (IPv6)"
+Std.UDPChecksumOffloadIPv4 = "UDP Checksum Offload (IPv4)"
+Std.TCPChecksumOffloadIPv4 = "TCP Checksum Offload (IPv4)"
+Std.UDPChecksumOffloadIPv6 = "UDP Checksum Offload (IPv6)"
+Std.TCPChecksumOffloadIPv6 = "TCP Checksum Offload (IPv6)"
+Std.IPChecksumOffloadv4 = "IPv4 Checksum Offload"
+Disable = "Disabled"
+Enable = "Enabled"
+Enable* = "Enabled*"
+String_16 = "16"
+String_32 = "32"
+String_64 = "64"
+String_128 = "128"
+String_256 = "256"
+String_512 = "512"
+String_1024 = "1024"
+PriorityVlanTag = "Priority and VLAN tagging"
+PriorityOnly = "Priority"
+VLan = "VLan"
+VLan_ID = "VLan ID"
+Priority_Vlan = "All"
+10M = "10M"
+100M = "100M"
+1G = "1G"
+10G = "10G"
+TCPv4 = "TCP(v4)"
+TCPUDPv4 = "TCP/UDP(v4)"
+TCPUDPAll = "TCP/UDP(v4,v6)"
+All = "All"
+IPv4 = "IPv4"
+Maximal = "Maximal"
+
diff --git a/packer/files/drivers/amd64/w10/netkvm.sys b/packer/files/drivers/amd64/w10/netkvm.sys
new file mode 100755
index 0000000..6994ee4
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/netkvm.sys
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viorng.cat b/packer/files/drivers/amd64/w10/viorng.cat
new file mode 100644
index 0000000..bef4d99
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viorng.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viorng.inf b/packer/files/drivers/amd64/w10/viorng.inf
new file mode 100644
index 0000000..52196f1
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viorng.inf
@@ -0,0 +1,117 @@
+;/*++
+;
+;Copyright (c) 2014-2017 Red Hat Inc.
+;
+;Module Name:
+; viorng.inf
+;
+;Abstract:
+;
+;Installation Notes:
+; Using Devcon: Type "devcon install viorng.inf PCI\VEN_1AF4&DEV_1005&SUBSYS_00041AF4&REV_00" or
+; "devcon install viorng.inf PCI\VEN_1AF4&DEV_1044&SUBSYS_11001AF4&REV_01" to install
+;
+;--*/
+
+[Version]
+Signature = "$WINDOWS NT$"
+Class = System
+ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}
+Provider = %RedHatMfg%
+CatalogFile = viorng.cat
+PnpLockdown = 1
+DriverVer=07/19/2017,100.74.104.14100
+
+[DestinationDirs]
+DefaultDestDir = 12
+VirtRng_Provider_CopyFiles = 11
+VirtRng_Wdf_CoInstaller_CopyFiles = 11
+
+[SourceDisksNames]
+1 = %DiskName%,,,""
+
+[SourceDisksFiles]
+viorng.sys = 1,,
+viorngum.dll = 1
+viorngci.dll = 1
+;
+
+
+; ---------------
+; Install Section
+; ---------------
+
+[Manufacturer]
+%RedHatMfg% = RedHat,NTamd64.10.0
+
+[RedHat.NTamd64.10.0]
+%VirtRng.DeviceDesc% = VirtRng_Device, PCI\VEN_1AF4&DEV_1005&SUBSYS_00041AF4&REV_00
+%VirtRng.DeviceDesc% = VirtRng_Device, PCI\VEN_1AF4&DEV_1044&SUBSYS_11001AF4&REV_01
+
+[VirtRng_Device.NT]
+CopyFiles = VirtRng_CopyFiles
+CopyFiles = VirtRng_Provider_CopyFiles
+
+[VirtRng_Device.NT.HW]
+AddReg = VirtRng_AddReg
+
+[VirtRng_CopyFiles]
+viorng.sys
+
+[VirtRng_AddReg]
+HKR,Interrupt Management,,0x00000010
+HKR,Interrupt Management\MessageSignaledInterruptProperties,,0x00000010
+HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1
+HKR,Interrupt Management\MessageSignaledInterruptProperties,MessageNumberLimit,0x00010001,1
+
+; --------------------
+; Service Installation
+; --------------------
+
+[VirtRng_Device.NT.Services]
+AddService = VirtRng,0x00000002,VirtRng_Service_Install
+
+[VirtRng_Service_Install]
+DisplayName = %VirtRng.Service%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\viorng.sys
+LoadOrderGroup = Extended Base
+
+; -------------------------
+; RNG Provider Installation
+; -------------------------
+
+[VirtRng_Provider_CopyFiles]
+viorngum.dll
+
+; -------------------------------------
+; WDF & Device CoInstaller Installation
+; -------------------------------------
+
+[VirtRng_Device.NT.CoInstallers]
+AddReg=VirtRng_Wdf_CoInstaller_AddReg
+CopyFiles=VirtRng_Wdf_CoInstaller_CopyFiles
+
+[VirtRng_Wdf_CoInstaller_AddReg]
+HKR,,CoInstallers32,0x00010000,"viorngci.dll,VirtRngCoInstaller", \
+;
+
+
+[VirtRng_Wdf_CoInstaller_CopyFiles]
+;
+
+viorngci.dll
+
+[VirtRng_Device.NT.Wdf]
+KmdfService = VirtRng, VirtRng_wdfsect
+
+[VirtRng_wdfsect]
+KmdfLibraryVersion = 1.15
+
+[Strings]
+RedHatMfg = "Red Hat, Inc."
+DiskName = "VirtIO RNG Installation Disk"
+VirtRng.DeviceDesc = "VirtIO RNG Device"
+VirtRng.Service = "VirtIO RNG Service"
diff --git a/packer/files/drivers/amd64/w10/viorng.sys b/packer/files/drivers/amd64/w10/viorng.sys
new file mode 100644
index 0000000..8f88ab6
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viorng.sys
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viorngci.dll b/packer/files/drivers/amd64/w10/viorngci.dll
new file mode 100644
index 0000000..ee05e27
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viorngci.dll
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viorngum.dll b/packer/files/drivers/amd64/w10/viorngum.dll
new file mode 100644
index 0000000..3fb997c
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viorngum.dll
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/vioscsi.cat b/packer/files/drivers/amd64/w10/vioscsi.cat
new file mode 100755
index 0000000..c59b14f
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioscsi.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/vioscsi.inf b/packer/files/drivers/amd64/w10/vioscsi.inf
new file mode 100755
index 0000000..8cd10c3
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioscsi.inf
@@ -0,0 +1,123 @@
+;/*++
+;
+;Copyright (c) 2012-2019 Red Hat Inc.
+;
+;
+;Module Name:
+; vioscsi.inf
+;
+;Abstract:
+;
+;Installation Notes:
+; Using Devcon: Type "devcon install vioscsi.inf PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00" or
+; "devcon install vioscsi.inf PCI\VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01" to install
+;
+;--*/
+
+[Version]
+Signature="$Windows NT$"
+Class=SCSIAdapter
+ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}
+Provider=%VENDOR%
+DriverVer = 04/12/2019,100.77.104.17100
+CatalogFile=vioscsi.cat
+DriverPackageType = PlugAndPlay
+DriverPackageDisplayName = %VirtioScsi.DeviceDesc%
+
+;
+; Source file information
+;
+
+[SourceDisksNames]
+1 = %DiskId1%,,,""
+
+[SourceDisksFiles]
+vioscsi.sys = 1,,
+
+[ControlFlags]
+;ExcludeFromSelect = *
+
+[DestinationDirs]
+DefaultDestDir = 10
+vioscsi_Files_Driver = 12
+
+;
+; Driver information
+;
+
+[Manufacturer]
+%VENDOR% = VirtioScsi,NTamd64.10.0
+
+[VirtioScsi.NTamd64.10.0]
+%VirtioScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1004&SUBSYS_00081AF4&REV_00, PCI\VEN_1AF4&DEV_1004
+%VirtioScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1048&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1048
+
+;
+; General installation section
+;
+
+[vioscsi_Files_Driver]
+vioscsi.sys,,,2
+
+[scsi_inst]
+CopyFiles=vioscsi_Files_Driver
+
+;
+; Service Installation
+;
+
+[scsi_inst.Services]
+AddService = vioscsi, 0x00000002 , scsi_Service_Inst, scsi_EventLog_Inst
+
+[scsi_Service_Inst]
+DisplayName = %VirtioScsi.SVCDESC%
+ServiceType = %SERVICE_KERNEL_DRIVER%
+StartType = %SERVICE_BOOT_START%
+ErrorControl = %SERVICE_ERROR_NORMAL%
+ServiceBinary = %12%\vioscsi.sys
+LoadOrderGroup = SCSI miniport
+AddReg = pnpsafe_pci_addreg
+
+[scsi_inst.HW]
+AddReg = pnpsafe_pci_addreg_msix
+
+[scsi_EventLog_Inst]
+AddReg = scsi_EventLog_AddReg
+
+[scsi_EventLog_AddReg]
+HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll"
+HKR,,TypesSupported,%REG_DWORD%,7
+
+
+[pnpsafe_pci_addreg]
+HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001
+HKR, "Parameters", "BusType", %REG_DWORD%, 0x0000000A
+
+[pnpsafe_pci_addreg_msix]
+HKR, "Interrupt Management",, 0x00000010
+HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 256
+HKR, "Interrupt Management\Affinity Policy",, 0x00000010
+HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 5
+HKR, "Interrupt Management\Affinity Policy", DevicePriority, 0x00010001, 3
+
+
+[Strings]
+;
+; Localizable Strings
+;
+VENDOR = "Red Hat, Inc."
+diskId1 = "Red Hat VirtIO SCSI pass-through controller Installation Disk"
+VirtioScsi.DeviceDesc = "Red Hat VirtIO SCSI pass-through controller"
+VirtioScsi.SVCDESC = "Red Hat VirtIO SCSI pass-through Service"
+
+;
+; Non-Localizable Strings
+;
+
+REG_EXPAND_SZ = 0x00020000
+REG_DWORD = 0x00010001
+SERVICE_KERNEL_DRIVER = 1
+SERVICE_BOOT_START = 0
+SERVICE_ERROR_NORMAL = 1
diff --git a/packer/files/drivers/amd64/w10/vioscsi.sys b/packer/files/drivers/amd64/w10/vioscsi.sys
new file mode 100755
index 0000000..190ed13
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioscsi.sys
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/vioser.cat b/packer/files/drivers/amd64/w10/vioser.cat
new file mode 100644
index 0000000..8a00a2f
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioser.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/vioser.inf b/packer/files/drivers/amd64/w10/vioser.inf
new file mode 100644
index 0000000..f4e2b68
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioser.inf
@@ -0,0 +1,107 @@
+;/*++
+;
+;Copyright (c) 2010-2017 Red Hat Inc.
+;
+;Module Name:
+; vioser.inf
+;
+;Abstract:
+;
+;Installation Notes:
+; Using Devcon: Type "devcon install vioser.inf PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00" or
+; "devcon install vioser.inf PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01" to install
+;
+;--*/
+
+[Version]
+Signature="$WINDOWS NT$"
+Class=System
+ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}
+Provider=%REDHAT%
+DriverVer=07/19/2017,100.74.104.14100
+CatalogFile=vioser.cat
+DriverPackageType = PlugAndPlay
+DriverPackageDisplayName = %VirtioSerial.DeviceDesc%
+PnpLockdown = 1
+
+[DestinationDirs]
+DefaultDestDir = 12
+VirtioSerial_Device_CoInstaller_CopyFiles = 11
+
+[SourceDisksFiles]
+vioser.sys = 1,,
+;
+
+
+[SourceDisksNames]
+1 = %DiskId1%,,,""
+
+;*****************************************
+; vioser Install Section
+;*****************************************
+
+[Manufacturer]
+%REDHAT%=VirtioSerial,NTamd64.10.0
+
+[VirtioSerial.NTamd64.10.0]
+;
+; Hw Ids are PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00
+; PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01
+;
+%VirtioSerial.DeviceDesc%=VirtioSerial_Device, PCI\VEN_1AF4&DEV_1003&SUBSYS_00031AF4&REV_00
+%VirtioSerial.DeviceDesc%=VirtioSerial_Device, PCI\VEN_1AF4&DEV_1043&SUBSYS_11001AF4&REV_01
+
+[VirtioSerial_Device.NT]
+CopyFiles=Drivers_Dir
+
+[VirtioSerial_Device.NT.HW]
+AddReg=VirtioSerial_AddReg
+
+[VirtioSerial_AddReg]
+HKR,Interrupt Management,,0x00000010
+HKR,Interrupt Management\MessageSignaledInterruptProperties,,0x00000010
+HKR,Interrupt Management\MessageSignaledInterruptProperties,MSISupported,0x00010001,1
+HKR,Interrupt Management\MessageSignaledInterruptProperties,MessageNumberLimit,0x00010001,2
+
+[Drivers_Dir]
+vioser.sys
+
+;-------------- Service installation
+
+[VirtioSerial_Device.NT.Services]
+AddService = VirtioSerial, 0x00000002, VirtioSerial_Service_Inst
+
+; -------------- VirtioSerial driver install sections
+[VirtioSerial_Service_Inst]
+DisplayName = %VirtioSerial.ServiceDesc%
+ServiceType = 1 ; SERVICE_KERNEL_DRIVER
+StartType = 3 ; SERVICE_DEMAND_START
+ErrorControl = 1 ; SERVICE_ERROR_NORMAL
+ServiceBinary = %12%\vioser.sys
+
+;--- VirtioSerial_Device Coinstaller installation ------
+;
+
+[VirtioSerial_Device.NT.CoInstallers]
+AddReg=VirtioSerial_Device_CoInstaller_AddReg
+CopyFiles=VirtioSerial_Device_CoInstaller_CopyFiles
+
+[VirtioSerial_Device_CoInstaller_AddReg]
+;
+
+
+[VirtioSerial_Device_CoInstaller_CopyFiles]
+;
+
+
+[VirtioSerial_Device.NT.Wdf]
+KmdfService = VirtioSerial, VirtioSerial_wdfsect
+
+[VirtioSerial_wdfsect]
+KmdfLibraryVersion = 1.15
+
+[Strings]
+REDHAT = "Red Hat, Inc."
+DiskId1 = "VirtIO Serial Installation Disk #1"
+VirtioSerial.DeviceDesc = "VirtIO Serial Driver"
+VirtioSerial.ServiceDesc = "VirtIO Serial Service"
diff --git a/packer/files/drivers/amd64/w10/vioser.sys b/packer/files/drivers/amd64/w10/vioser.sys
new file mode 100644
index 0000000..a99ad31
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/vioser.sys
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viostor.cat b/packer/files/drivers/amd64/w10/viostor.cat
new file mode 100755
index 0000000..4edd929
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viostor.cat
Binary files differ
diff --git a/packer/files/drivers/amd64/w10/viostor.inf b/packer/files/drivers/amd64/w10/viostor.inf
new file mode 100755
index 0000000..6c6054d
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viostor.inf
@@ -0,0 +1,121 @@
+;/*++
+;
+;Copyright (c) 2008-2019 Red Hat Inc.
+;
+;
+;Module Name:
+; viostor.inf
+;
+;Abstract:
+;
+;Installation Notes:
+; Using Devcon: Type "devcon install viostor.inf PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00" or
+; "devcon install viostor.inf PCI\VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01" to install
+;
+;--*/
+
+[Version]
+Signature="$Windows NT$"
+Class=SCSIAdapter
+ClassGUID={4D36E97B-E325-11CE-BFC1-08002BE10318}
+Provider=%VENDOR%
+DriverVer = 04/12/2019,100.77.104.17100
+CatalogFile=viostor.cat
+DriverPackageType = PlugAndPlay
+DriverPackageDisplayName = %VioStorScsi.DeviceDesc%
+
+;
+; Source file information
+;
+
+[SourceDisksNames]
+1 = %DiskId1%,,,""
+
+[SourceDisksFiles]
+viostor.sys = 1,,
+
+[ControlFlags]
+;ExcludeFromSelect = *
+
+[DestinationDirs]
+DefaultDestDir = 10
+viostor_Files_Driver = 12
+
+;
+; Driver information
+;
+
+[Manufacturer]
+%VENDOR% = VioStor,NTamd64.10.0
+
+[VioStor.NTamd64.10.0]
+%VioStorScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1001&SUBSYS_00021AF4&REV_00, PCI\VEN_1AF4&DEV_1001
+%VioStorScsi.DeviceDesc% = scsi_inst, PCI\VEN_1AF4&DEV_1042&SUBSYS_11001AF4&REV_01, PCI\VEN_1AF4&DEV_1042
+
+;
+; General installation section
+;
+
+[viostor_Files_Driver]
+viostor.sys,,,2
+
+[scsi_inst]
+CopyFiles=viostor_Files_Driver
+
+;
+; Service Installation
+;
+
+[scsi_inst.Services]
+AddService = viostor, 0x00000002 , scsi_Service_Inst, scsi_EventLog_Inst
+
+[scsi_Service_Inst]
+ServiceType = %SERVICE_KERNEL_DRIVER%
+StartType = %SERVICE_BOOT_START%
+ErrorControl = %SERVICE_ERROR_NORMAL%
+ServiceBinary = %12%\viostor.sys
+LoadOrderGroup = SCSI miniport
+AddReg = pnpsafe_pci_addreg
+
+[scsi_inst.HW]
+AddReg = pnpsafe_pci_addreg_msix
+
+[scsi_EventLog_Inst]
+AddReg = scsi_EventLog_AddReg
+
+[scsi_EventLog_AddReg]
+HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll"
+HKR,,TypesSupported,%REG_DWORD%,7
+
+
+[pnpsafe_pci_addreg]
+HKR, "Parameters\PnpInterface", "5", %REG_DWORD%, 0x00000001
+HKR, "Parameters", "BusType", %REG_DWORD%, 0x00000001
+
+[pnpsafe_pci_addreg_msix]
+HKR, "Interrupt Management",, 0x00000010
+HKR, "Interrupt Management\MessageSignaledInterruptProperties",, 0x00000010
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MSISupported, 0x00010001, 1
+HKR, "Interrupt Management\MessageSignaledInterruptProperties", MessageNumberLimit, 0x00010001, 256
+HKR, "Interrupt Management\Affinity Policy",, 0x00000010
+HKR, "Interrupt Management\Affinity Policy", DevicePolicy, 0x00010001, 5
+
+
+[Strings]
+;
+; Localizable Strings
+;
+VENDOR = "Red Hat, Inc."
+diskId1 = "Red Hat VirtIO SCSI controller Installation Disk"
+VioStorScsi.DeviceDesc = "Red Hat VirtIO SCSI controller"
+
+;
+; Non-Localizable Strings
+;
+
+REG_EXPAND_SZ = 0x00020000
+REG_DWORD = 0x00010001
+SERVICE_KERNEL_DRIVER = 1
+SERVICE_BOOT_START = 0
+SERVICE_ERROR_NORMAL = 1
+
diff --git a/packer/files/drivers/amd64/w10/viostor.sys b/packer/files/drivers/amd64/w10/viostor.sys
new file mode 100755
index 0000000..5fc8004
--- /dev/null
+++ b/packer/files/drivers/amd64/w10/viostor.sys
Binary files differ
diff --git a/packer/files/drivers/redhat-cert-old.cer b/packer/files/drivers/redhat-cert-old.cer
new file mode 100644
index 0000000..91c8be6
--- /dev/null
+++ b/packer/files/drivers/redhat-cert-old.cer
Binary files differ
diff --git a/packer/files/drivers/redhat-cert.cer b/packer/files/drivers/redhat-cert.cer
new file mode 100644
index 0000000..36efad4
--- /dev/null
+++ b/packer/files/drivers/redhat-cert.cer
Binary files differ
diff --git a/packer/files/scripts/create-checksums.sh b/packer/files/scripts/create-checksums.sh
new file mode 100755
index 0000000..a8143cb
--- /dev/null
+++ b/packer/files/scripts/create-checksums.sh
@@ -0,0 +1,41 @@
+#!/bin/bash
+set -e
+
+PACKER_BUILD_NAME="${PACKER_BUILD_NAME}"
+NAME="${NAME}"
+TIMESTAMP="${TIMESTAMP}"
+
+if ! command -v md5sum &>/dev/null; then
+ printf "%s\n" "[WARN] md5sum not found, skipping"
+ exit 0
+fi
+
+if ! command -v sha512sum &>/dev/null; then
+ printf "%s\n" "[WARN] sha512sum not found, skipping"
+ exit 0
+fi
+
+if test -z "${PACKER_BUILD_NAME}" || test -z "${NAME}" || test -z "${TIMESTAMP}"; then
+ printf "%s\n" "[WARN] \$PACKER_BUILD_NAME|\$NAME|\$TIMESTAMP not supplied for checksum creation, skipping"
+ exit 0
+fi
+
+OUTPUT_DIR="output/${PACKER_BUILD_NAME}"
+mkdir -p "${OUTPUT_DIR}" &>/dev/null
+
+if test "${PACKER_BUILD_NAME}" == "qemu"; then
+ FILENAME="${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.qcow2"
+ mv "${PACKER_BUILD_NAME}_output_${NAME}/${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}" "${OUTPUT_DIR}/${FILENAME}"
+else
+ FILENAME="${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.ova"
+ mv "${PACKER_BUILD_NAME}_output_${NAME}/${PACKER_BUILD_NAME}-${NAME}_${TIMESTAMP}.ova" "${OUTPUT_DIR}/${FILENAME}"
+fi
+rm -rf "${PACKER_BUILD_NAME}_output_${NAME}"
+
+(
+ cd "${OUTPUT_DIR}"
+ md5sum "${FILENAME}" > "${FILENAME}.sums"
+ sha512sum "${FILENAME}" >> "${FILENAME}.sums"
+)
+
+printf "%s\n" "[INFO] created md5 and sha512 checksums for ${OUTPUT_DIR}/${FILENAME}"
diff --git a/packer/files/scripts/linux/init.sh b/packer/files/scripts/linux/init.sh
new file mode 100644
index 0000000..04b7257
--- /dev/null
+++ b/packer/files/scripts/linux/init.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+set -e
+pushd "$(dirname ${BASH_SOURCE:0})" &>/dev/null
+trap 'popd &>/dev/null' EXIT
diff --git a/packer/files/scripts/linux/setup-qemu-guest-agent.sh b/packer/files/scripts/linux/setup-qemu-guest-agent.sh
new file mode 100644
index 0000000..8a242ef
--- /dev/null
+++ b/packer/files/scripts/linux/setup-qemu-guest-agent.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+set -e
+pushd "$(dirname ${BASH_SOURCE:0})" &>/dev/null
+trap 'popd &>/dev/null' EXIT
+
+export DEBIAN_FRONTEND=noninteractive
+
+apt-get update
+apt-get install -y qemu-guest-agent
+apt-get clean
+apt-get autoclean
diff --git a/packer/files/scripts/linux/sysprep.sh b/packer/files/scripts/linux/sysprep.sh
new file mode 100644
index 0000000..d232a6f
--- /dev/null
+++ b/packer/files/scripts/linux/sysprep.sh
@@ -0,0 +1,271 @@
+#!/bin/bash
+# taken from https://github.com/DanHam/packer-virt-sysprep
+set -o errexit
+shopt -s nullglob dotglob
+
+function _clean_shell_history() {
+ root_hist="$(find /root -type f -name .bash_history)"
+ user_hist="$(find /home -type f -name .bash_history | tr -s '\n' ' ')"
+ rm -rf ${root_hist} ${user_hist}
+
+ set +o errexit
+ if [[ -f /.dockerenv ]]; then
+ ln -sf /dev/null "/root/.bash_history"
+
+ while read user home; do
+ ln -sf /dev/null "${home}/.bash_history" || :
+ chown --no-dereference "${user}:${user}" "${home}/.bash_history" || :
+ done <<< $(getent passwd | grep -i home | awk -F ':' '($3>=1000) {print $1" "$6}')
+
+ fi
+ set -o errexit
+}
+
+function _clean_home_dirs() {
+ root_files="$(find /root -name .cache -o -name .zshrc -o -name .wget-hsts | tr -s '\n' ' ')"
+ user_files="$(find /home -name .cache -o -name go -o -name .zshrc -o -name .wget-hsts | tr -s '\n' ' ')"
+ rm -rf ${root_files} ${user_files}
+}
+
+function _clean_cloud_init() {
+ rm -rf /var/log/installer
+ rm -rf /var/lib/cloud/*
+ rm -rf /var/log/cloud-init.log
+}
+
+function _clean_logs() {
+ find /var/log -maxdepth 1 -type f -exec bash -c "echo > {}" \;
+}
+
+function _clean_crash_data() {
+ crash_data_location=(
+ "/var/crash/*"
+ "/var/log/dump/*"
+ )
+ for crash_data in ${crash_data_location[@]}; do rm -rf ${crash_data}; done
+}
+
+function _reset_dhcp_state() {
+ lease_data_locations=(
+ "/var/lib/dhclient/*"
+ "/var/lib/dhcp/*"
+ )
+ for lease_file in ${lease_data_locations[@]}; do rm -rf ${lease_file}; done
+}
+
+function _reset_fw_rules() {
+ if command -v ufw &>/dev/null; then
+ ufw --force reset &>/dev/null
+ fi
+
+ if command -v systemctl &>/dev/null; then
+ if systemctl is-active -q firewalld.service &>/dev/null; then
+ systemctl stop -q firewalld.service
+ fi
+
+ if systemctl is-active ufw.service &>/dev/null; then
+ systemctl stop -q ufw.service
+ fi
+ fi
+
+ fw_config_locations=(
+ "/etc/sysconfig/iptables"
+ "/etc/firewalld/services/*"
+ "/etc/firewalld/zones/*"
+ "/etc/ufw/user.rules.*"
+ "/etc/ufw/before.rules.*"
+ "/etc/ufw/after.rules.*"
+ "/etc/ufw/user6.rules.*"
+ "/etc/ufw/before6.rules.*"
+ "/etc/ufw/after6.rules.*"
+ )
+
+ for fw_config in ${fw_config_locations[@]}; do rm -rf ${fw_config}; done
+}
+
+function _reset_machine_id() {
+ sysd_id="/etc/machine-id"
+ dbus_id="/var/lib/dbus/machine-id"
+
+ if [[ -e ${sysd_id} ]]; then
+ rm -rf ${sysd_id} && touch ${sysd_id}
+ fi
+
+ if [[ -e ${dbus_id} && ! -h ${dbus_id} ]]; then
+ rm -rf ${dbus_id}
+ fi
+}
+
+function _clean_mail_spool() {
+ mta_list=(
+ "exim"
+ "postfix"
+ "sendmail"
+ )
+
+ mail_spool_locations=(
+ "/var/spool/mail/*"
+ "/var/mail/*"
+ )
+
+ for mta in ${mta_list[@]}; do
+ if command -v systemctl &>/dev/null ; then
+ mta_service="$(systemctl list-units --type service | grep ${mta} | cut -d' ' -f1)"
+ if [[ "x${mta_service}" != "x" ]]; then
+ if systemctl is-active ${mta_service} &>/dev/null; then
+ systemctl stop ${mta_service}
+ fi
+ fi
+ else
+ mta_service="$(find /etc/init.d/ -iname "*${mta}*")"
+ if [[ "x${mta_service}" != "x" ]]; then
+ if ${mta_service} status | grep running &>/dev/null; then
+ ${mta_service} stop
+ fi
+ fi
+ fi
+ done
+
+ for mail_spool in ${mail_spool_locations[@]}; do rm -rf ${mail_spool}; done
+}
+
+function _clean_package_manager_cache() {
+ cache_locations=(
+ "/var/cache/apt/"
+ "/var/cache/dnf/"
+ "/var/cache/yum/"
+ "/var/cache/zypp*"
+ )
+
+ for cache_dir in ${cache_locations[@]}; do
+ if [[ -d ${cache_dir} ]]; then
+ find ${cache_dir} -type f | xargs -I FILE rm -rf FILE
+ fi
+ done
+}
+
+function _clean_package_manager_db() {
+ rm -rf /var/lib/rpm/__db.*
+ apt_lists=/var/lib/apt/lists
+ if [[ -d "${apt_lists}" ]]; then
+ find "${apt_lists}" -type f | xargs rm -rf
+ fi
+}
+
+function _clean_tmp() {
+ tmp_locations=(
+ "/tmp"
+ "/var/tmp"
+ )
+
+ mntpnt_orig_tmp="/mnt/orig_tmp"
+
+ shopt -s dotglob
+
+ sum_tmp_space=0
+ for tmp in ${tmp_locations[@]}
+ do
+ if [[ -d ${tmp} ]]; then
+ tmp_space="$(du -sm ${tmp} | cut -f1)"
+ else
+ tmp_space=0
+ fi
+ sum_tmp_space=$(( ${sum_tmp_space} + ${tmp_space} ))
+ if [[ ${sum_tmp_space} -gt 128 ]]; then
+ echo "ERROR: Space for copying tmp into memory > 128mb. Exiting"
+ exit 1
+ fi
+ done
+
+ if ! mount -l -t tmpfs | grep /dev/shm &>/dev/null; then
+ [[ -d /dev/shm ]] || mkdir /dev/shm && chmod 1777 /dev/shm
+ mount -t tmpfs -o defaults,size=128m tmpfs /dev/shm
+ fi
+
+
+ for tmp in ${tmp_locations[@]}; do
+ tmp_path="${tmp}"
+ on_tmpfs=false
+
+ while [[ ${tmp_path:0:1} = "/" ]] && [[ ${#tmp_path} > 1 ]] && [[ ${on_tmpfs} = false ]]; do
+ defifs=${IFS}
+ IFS=$'\n'
+ for mountpoint in $(mount -l -t tmpfs | cut -d' ' -f3)
+ do
+ if [[ "${mountpoint}" == "${tmp_path}" ]]; then
+ on_tmpfs=true
+ continue
+ fi
+ done
+ IFS=${defifs}
+ tmp_path=${tmp_path%/*}
+ done
+
+ if [[ "${on_tmpfs}" = false ]]; then
+ tmp_located_on=""
+ defifs=${IFS} && IFS=$'\n'
+ for line in $(df | tr -s ' ')
+ do
+ if echo ${line} | cut -d' ' -f6 | grep ^${tmp}$ &>/dev/null; then
+ tmp_located_on="$(echo ${line} | cut -d' ' -f1)"
+ fi
+ done
+ IFS=${defifs}
+ [[ "x${tmp_located_on}" = "x" ]] && tmp_located_on="/"
+
+ shmtmp="/dev/shm/${tmp}"
+ mkdir -p ${shmtmp}
+ chmod 1777 ${shmtmp}
+ files=(${tmp}/*)
+ [[ -e ${files} ]] && cp -pr ${tmp}/* ${shmtmp}
+ mount --bind ${shmtmp} ${tmp}
+
+ mkdir ${mntpnt_orig_tmp}
+ if [[ ${tmp_located_on} = "/" ]]; then
+ mount_opts="--bind"
+ tmp_path="${mntpnt_orig_tmp}/${tmp}"
+ else
+ mount_opts=""
+ tmp_path="${mntpnt_orig_tmp}"
+ fi
+ mount ${mount_opts} ${tmp_located_on} ${mntpnt_orig_tmp}
+
+ files=(${tmp_path}/*)
+ [[ -e ${files} ]] && rm -rf ${tmp_path}/*
+ umount ${mntpnt_orig_tmp} && rm -rf ${mntpnt_orig_tmp}
+ fi
+ done
+}
+
+function _clean_yum_uuid() {
+ uuid="/var/lib/yum/uuid"
+ [[ -e ${uuid} ]] && rm -rf ${uuid} || :
+}
+
+function _clean_logins() {
+ login_logs=(
+ "/var/log/lastlog"
+ "/var/log/wmtp"
+ "/var/log/btmp"
+ "/var/run/utmp"
+ "/var/run/utmp"
+ )
+ for login_log in ${login_logs[@]}; do ln -sfn /dev/null $login_log; done
+}
+
+_clean_shell_history
+_clean_home_dirs
+_clean_cloud_init
+_clean_logs
+_clean_crash_data
+_reset_dhcp_state
+_reset_fw_rules
+_reset_machine_id
+_clean_mail_spool
+_clean_package_manager_cache
+_clean_package_manager_db
+_clean_tmp
+_clean_yum_uuid
+_clean_logins
+
+exit 0
diff --git a/packer/files/scripts/windows/cleanup.ps1 b/packer/files/scripts/windows/cleanup.ps1
new file mode 100644
index 0000000..6242ac5
--- /dev/null
+++ b/packer/files/scripts/windows/cleanup.ps1
@@ -0,0 +1,132 @@
+$ErrorActionPreference = "SilentlyContinue"
+Set-MpPreference -DisableRealtimeMonitoring $true -ErrorAction SilentlyContinue | Out-Null
+
+try {
+ $System = GWMI Win32_ComputerSystem -EnableAllPrivileges
+ $System.AutomaticManagedPagefile = $False
+ $System.Put() | Out-Null
+ $CurrentPageFile = gwmi -query "select * from Win32_PageFileSetting where name='c:\\pagefile.sys'"
+ $CurrentPageFile.InitialSize = 512
+ $CurrentPageFile.MaximumSize = 512
+ $CurrentPageFile.Put() | Out-Null
+
+ Write-Host "[INFO] Changed pagefile size"
+} catch {
+ Write-Host "[ERR] Error occured while attempting to modify pagefile size"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ DISM /Online /Cleanup-Image /StartComponentCleanup /ResetBase /Quiet
+ Write-Host "[INFO] Executed dism to cleanup image and reset"
+} catch {
+ Write-Host "[ERR] Error occured while running dism to cleanup image and reset"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ Remove-Item -Path "C:\Recovery" -Recurse -Force
+ Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null
+ Get-ChildItem "C:\Windows\SoftwareDistribution\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null
+ Get-ChildItem "C:\Users\*\AppData\Local\Temp\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null
+ Get-ChildItem "C:\Users\*\AppData\Local\Microsoft\Windows\Temporary Internet Files\*" -Recurse -Force | Remove-Item -Recurse -Force | Out-Null
+ Get-ChildItem "C:\ProgramData\Microsoft\Windows\Start Menu\Programs" -Recurse -Filter *uninstall*.lnk | % { Remove-Item -Force $_.FullName | Out-Null }
+
+ @(
+ "$env:localappdata\Nuget",
+ "$env:localappdata\temp\*",
+ "$env:windir\logs",
+ "$env:windir\panther",
+ "$env:windir\temp\*",
+ "$env:windir\winsxs\manifestcache"
+ ) | ForEach-Object {
+ if ((Test-Path $_) -And ($_ -NotLike "*.ps1")) {
+ try {
+ Takeown /d Y /R /f $_ 2>&1 | Out-Null
+ Icacls $_ /GRANT:r administrators:F /T /c /q 2>&1 | Out-Null
+ Remove-Item $_ -Recurse -Force | Out-Null
+ }
+ catch { $global:error.RemoveAt(0) }
+ }
+ }
+
+ Write-Host "[INFO] Removed temporary and build files"
+} catch {
+ Write-Host "[ERR] Error occured while attempting to remove temporary and build files"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ & defrag.exe C: /h *> $null
+ Write-Host "[INFO] Executed defrag.exe"
+}
+catch {
+ Write-Host "[ERR] Error occured while running defrag.exe"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ & cleanmgr.exe /verylowdisk *> $null
+ Write-Host "[INFO] Executed cleanmgr.exe"
+}
+catch {
+ Write-Host "[ERR] Error occured while running cleanmgr.exe"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ $FilePath = "C:\zero.tmp"
+ $Volume = Get-WmiObject win32_logicaldisk -filter "DeviceID='C:'"
+ $ArraySize = 64kb
+ $SpaceToLeave = $Volume.Size * 0.05
+ $FileSize = $Volume.FreeSpace - $SpaceToLeave
+ $ZeroArray = New-Object byte[]($ArraySize)
+
+ $Stream = [IO.File]::OpenWrite($FilePath)
+ try {
+ $CurFileSize = 0
+ while ($CurFileSize -lt $FileSize) {
+ $Stream.Write($ZeroArray, 0, $ZeroArray.Length)
+ $CurFileSize += $ZeroArray.Length
+ }
+ }
+ finally {
+ if ($Stream) {
+ $Stream.Close()
+ }
+ }
+
+ Remove-Item $FilePath
+
+ Write-Host "[INFO] Zeroed out empty space"
+} catch {
+ Write-Host "[ERR] Error occured while attempting to zero out empty space"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ powercfg /change monitor-timeout-ac 0
+ powercfg /change monitor-timeout-dc 0
+ powercfg /change disk-timeout-ac 0
+ powercfg /change disk-timeout-dc 0
+ powercfg /change standby-timeout-ac 0
+ powercfg /change standby-timeout-dc 0
+ powercfg /change hibernate-timeout-ac 0
+ powercfg /change hibernate-timeout-dc 0
+
+ Write-Host "[INFO] Disabled screen timeout, disk timeout, standby, hibernate"
+} catch {
+ Write-Host "[ERR] Error occured while attempting to modify screen timeout, disk timeout, standby, hibernate"
+ Write-Host "$($_.Exception.Message)"
+}
+
+try {
+ Clear-EventLog -LogName (Get-EventLog -List).log
+ Clear-EventLog -LogName (Get-EventLog -List).log
+ Clear-EventLog -LogName (Get-EventLog -List).log
+
+ Write-Host "[INFO] Cleared out event logs"
+} catch {
+ Write-Host "[ERR] Error occured while clearing event logs"
+ Write-Host "$($_.Exception.Message)"
+}
diff --git a/packer/files/scripts/windows/disable-updates.ps1 b/packer/files/scripts/windows/disable-updates.ps1
new file mode 100644
index 0000000..69d6441
--- /dev/null
+++ b/packer/files/scripts/windows/disable-updates.ps1
@@ -0,0 +1,13 @@
+# https://learn.microsoft.com/en-us/windows/win32/api/wuapi/ne-wuapi-automaticupdatesnotificationlevel
+# https://learn.microsoft.com/en-us/archive/blogs/jamesone/managing-windows-update-with-powershell
+try {
+ $updates = (New-Object -ComObject "Microsoft.Update.AutoUpdate").Settings
+ if ($updates.ReadOnly -eq $true) {
+ Write-Error "[ERR] Cannot update Windows Update settings due to GPO restrictions"
+ } else {
+ $updates.NotificationLevel = 1
+ $updates.Save()
+ $updates.Refresh()
+ Write-Output "[INFO] Automatic Windows Updates disabled"
+ }
+} catch { Write-Output "[ERR] Exception while disabling Automatic Windows Updates" }
diff --git a/packer/files/scripts/windows/enable-winrm-http.ps1 b/packer/files/scripts/windows/enable-winrm-http.ps1
new file mode 100644
index 0000000..44d8e70
--- /dev/null
+++ b/packer/files/scripts/windows/enable-winrm-http.ps1
@@ -0,0 +1,29 @@
+Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
+
+New-ItemProperty `
+ -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System' `
+ -Name LocalAccountTokenFilterPolicy `
+ -Value 1 `
+ -Force | Out-Null
+
+winrm quickconfig -q
+winrm quickconfig -transport:http
+winrm set winrm/config '@{MaxTimeoutms="1800000"}'
+winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="800"}'
+winrm set winrm/config/service '@{AllowUnencrypted="true"}'
+winrm set winrm/config/service/auth '@{Basic="true"}'
+winrm set winrm/config/service/auth '@{CredSSP="true"}'
+winrm set winrm/config/listener?Address=*+Transport=HTTP '@{Port="5985"}'
+Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe config WinRM start= delayed-auto" -Wait -Verbose
+Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe stop WinRM" -Wait -Verbose
+Start-Process -FilePath C:\Windows\System32\cmd.exe -ArgumentList "/c sc.exe start WinRM" -Wait -Verbose
+
+New-NetFirewallRule `
+ -DisplayName WINRM-HTTP-In-TCP `
+ -Direction Inbound `
+ -Action Allow `
+ -Protocol TCP `
+ -LocalPort 5985 | Out-Null
+
+#netsh advfirewall firewall set rule group="Windows Remote Administration" new enable=yes
+#netsh advfirewall firewall set rule name="Windows Remote Management (HTTP-In)" new enable=yes action=allow remoteip=any
diff --git a/packer/files/scripts/windows/init.ps1 b/packer/files/scripts/windows/init.ps1
new file mode 100644
index 0000000..3eea7b4
--- /dev/null
+++ b/packer/files/scripts/windows/init.ps1
@@ -0,0 +1,25 @@
+Get-WmiObject Win32_UserAccount -Filter "Name='packer'" | % { $_.PasswordExpires = $false; $_.Put() } | Out-Null
+
+if ((Get-WmiObject -Class Win32_OperatingSystem).ProductType -ne 1) {
+ Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "DisableCAD" -Value 1 -Force
+
+ secedit /export /cfg C:\secpol.cfg
+ (Get-Content C:\secpol.cfg).replace("PasswordComplexity = 1", "PasswordComplexity = 0") | Out-File C:\secpol.cfg
+ (Get-Content C:\secpol.cfg).replace("MinimumPasswordLength = 7", "MinimumPasswordLength = 0") | Out-File C:\secpol.cfg
+ secedit /configure /db C:\Windows\security\local.sdb /cfg C:\secpol.cfg /areas SECURITYPOLICY
+ Remove-Item -Force C:\secpol.cfg -Confirm:$false
+}
+
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Power", "HiberFileSizePercent", 0)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Power", "HibernateEnabled", 0)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Reliability", "ShutdownReasonOn", 1)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Reliability", "ShutdownReasonUI", 2)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge", "HideFirstRunExperience", 1)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoRebootWithLoggedOnUsers", 1)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "IncludeRecommendedUpdates", 0)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "AUOptions", 2)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Edge", "HideFirstRunExperience", 1)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU", "NoAutoRebootWithLoggedOnUsers", 1)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "IncludeRecommendedUpdates", 0)
+[Microsoft.Win32.Registry]::SetValue("HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU", "AUOptions", 2)
+
diff --git a/packer/files/scripts/windows/setup-qemu-guest-agent.ps1 b/packer/files/scripts/windows/setup-qemu-guest-agent.ps1
new file mode 100644
index 0000000..a2baefa
--- /dev/null
+++ b/packer/files/scripts/windows/setup-qemu-guest-agent.ps1
@@ -0,0 +1,14 @@
+[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+
+try {
+ $url = "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe"
+ (New-Object System.Net.WebClient).DownloadFile($url, "C:\virtio-win-guest-tools.exe")
+ Write-Output "[INFO] Downloaded $url"
+
+ Start-Process -FilePath "C:\virtio-win-guest-tools.exe" -ArgumentList "/install /passive /norestart" -Wait -Verbose
+ Write-Output "[INFO] Successfully installed VirtIO Guest Tools"
+ Remove-Item "C:\virtio-win-guest-tools.exe" -Force
+} catch {
+ Write-Host "[ERR] Error occured while installing VirtIO Guest Tools"
+ Write-Host "$($_.Exception.Message)"
+}
diff --git a/packer/files/scripts/windows/sysprep-shutdown.bat b/packer/files/scripts/windows/sysprep-shutdown.bat
new file mode 100644
index 0000000..623820a
--- /dev/null
+++ b/packer/files/scripts/windows/sysprep-shutdown.bat
@@ -0,0 +1,6 @@
+@echo off
+for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
+ if exist %%i:\sysprep.xml (
+ call C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /unattend:%%i:\sysprep.xml /shutdown
+ )
+)
diff --git a/packer/ubuntu-24.04-server.json b/packer/ubuntu-24.04-server.json
new file mode 100644
index 0000000..11b0acb
--- /dev/null
+++ b/packer/ubuntu-24.04-server.json
@@ -0,0 +1,90 @@
+{
+ "variables": {
+ "iso_name": "ubuntu-24.04-live-server-amd64.iso",
+ "iso_url": "https://old-releases.ubuntu.com/releases/24.04/ubuntu-24.04-live-server-amd64.iso",
+ "iso_path": "{{pwd}}/iso/{{user `iso_name`}}",
+ "iso_sha256": "sha256:8762f7e74e4d64d72fceb5f70682e6b069932deedb4949c6975d0f0fe0a91be3",
+ "timestamp": "{{isotime `2006-01-02`}}",
+ "headless": "false",
+ "boot_wait": "5s",
+
+ "local_iso_url": "",
+ "local_iso": "{{user `local_iso_url`}}/{{user `iso_name`}}",
+ "output": "",
+
+ "name": "ubuntu-24.04-server",
+ "cpu": "2",
+ "cores": "2",
+ "ram": "2048",
+ "disk_size": "102400",
+ "communicator_username": "root",
+ "communicator_password": "root",
+ "lowpriv_user": "ubuntu"
+ },
+
+ "builders": [
+ {
+ "type": "qemu",
+ "format": "qcow2",
+ "accelerator": "kvm",
+ "net_device": "virtio-net",
+ "disk_interface": "virtio",
+ "headless": "{{user `headless`}}",
+ "name": "qemu",
+ "vm_name": "qemu-{{user `name`}}_{{user `timestamp`}}",
+ "disk_size": "{{user `disk_size`}}",
+ "disk_cache": "none",
+ "disk_discard": "unmap",
+ "disk_compression": true,
+ "communicator": "ssh",
+ "ssh_username": "{{user `communicator_username`}}",
+ "ssh_password": "{{user `communicator_password`}}",
+ "ssh_pty": true,
+ "ssh_timeout": "60m",
+ "ssh_handshake_attempts": "1337",
+ "shutdown_command": "shutdown -P now",
+ "boot_wait": "{{user `boot_wait`}}",
+ "boot_command": [
+ "c<wait>",
+ "set gfxpayload=keep<enter><wait>",
+ "linux /casper/vmlinuz --- quiet splash autoinstall ds='nocloud-net;seedfrom=http://{{.HTTPIP}}:{{.HTTPPort}}/'<enter><wait>",
+ "initrd /casper/initrd<enter><wait>",
+ "boot<enter><wait>"
+ ],
+ "iso_urls": [
+ "{{user `iso_path`}}",
+ "{{user `local_iso`}}",
+ "{{user `iso_url`}}"
+ ],
+ "iso_checksum": "{{user `iso_sha256`}}",
+ "iso_target_path": "{{user `iso_path`}}",
+ "http_directory": "files/answer_files/linux/ubuntu/24.04-server",
+ "output_directory": "qemu_output_{{user `name`}}",
+ "qemuargs": [
+ ["-m", "{{user `ram`}}M"],
+ ["-cpu", "host"],
+ ["-smp", "cpus={{user `cpu`}}"]
+ ]
+ }
+ ],
+
+ "provisioners": [
+ {
+ "type": "shell",
+ "script": "files/scripts/linux/sysprep.sh"
+ }
+ ],
+
+ "post-processors": [
+ {
+ "type": "shell-local",
+ "only_on": ["linux"],
+ "environment_vars": [
+ "NAME={{user `name`}}",
+ "TIMESTAMP={{user `timestamp`}}",
+ "OUTPUT={{user `output`}}"
+ ],
+ "script": "files/scripts/create-checksums.sh"
+ }
+ ]
+}
diff --git a/packer/winserver2019.json b/packer/winserver2019.json
new file mode 100644
index 0000000..b02c063
--- /dev/null
+++ b/packer/winserver2019.json
@@ -0,0 +1,130 @@
+{
+ "variables": {
+ "iso_url": "https://software-static.download.prss.microsoft.com/pr/download/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso",
+ "iso_path": "{{pwd}}/iso/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso",
+ "iso_sha256": "sha256:549bca46c055157291be6c22a3aaaed8330e78ef4382c99ee82c896426a1cee1",
+ "timestamp": "{{isotime `2006-01-02`}}",
+ "headless": "false",
+ "boot_wait": "2s",
+
+ "name": "winserver2019",
+ "cpu": "2",
+ "cores": "2",
+ "ram": "4096",
+ "disk_size": "102400",
+ "communicator_username": "packer",
+ "communicator_password": "packer"
+ },
+
+ "builders": [
+ {
+ "type": "qemu",
+ "format": "qcow2",
+ "accelerator": "kvm",
+ "net_device": "e1000",
+ "disk_interface": "virtio",
+ "headless": "{{user `headless`}}",
+ "name": "qemu",
+ "vm_name": "qemu-{{user `name`}}_{{user `timestamp`}}",
+ "disk_size": "{{user `disk_size`}}",
+ "disk_cache": "none",
+ "disk_discard": "unmap",
+ "disk_compression": true,
+ "communicator": "winrm",
+ "winrm_username": "{{user `communicator_username`}}",
+ "winrm_password": "{{user `communicator_password`}}",
+ "winrm_timeout": "99h",
+ "shutdown_command": "C:\\sysprep-shutdown.bat",
+ "boot_wait": "2s",
+ "boot_command": ["<spacebar>", "<spacebar>", "<spacebar>", "<spacebar>", "<spacebar>", "<wait>", "<wait>", "<enter>"],
+ "iso_urls": [
+ "{{user `iso_path`}}",
+ "{{user `iso_url`}}"
+ ],
+ "cd_files": [
+ "files/drivers",
+ "files/answer_files/windows/2019/autounattend.xml",
+ "files/answer_files/windows/sysprep/sysprep.xml",
+ "files/scripts/windows/enable-winrm-http.ps1"
+ ],
+ "iso_checksum": "{{user `iso_sha256`}}",
+ "iso_target_path": "{{user `iso_path`}}",
+ "output_directory": "qemu_output_{{user `name`}}",
+ "qemuargs": [
+ ["-m", "{{user `ram`}}M"],
+ ["-cpu", "host"],
+ ["-smp", "cpus={{user `cpu`}}"]
+ ]
+ }
+ ],
+
+ "provisioners": [
+ {
+ "type": "powershell",
+ "elevated_user": "{{user `communicator_username`}}",
+ "elevated_password": "{{user `communicator_password`}}",
+ "pause_before": "30s",
+ "script": "files/scripts/windows/init.ps1"
+ },
+ {
+ "type": "file",
+ "source": "files/scripts/windows/sysprep-shutdown.bat",
+ "destination": "C:\\sysprep-shutdown.bat"
+ },
+ {
+ "type": "powershell",
+ "elevated_user": "Administrator",
+ "elevated_password": "{{user `communicator_password`}}",
+ "pause_before": "30s",
+ "valid_exit_codes": ["3010", "1168"],
+ "inline": [
+ "DISM /Online /Set-edition:ServerStandard /ProductKey:N69G4-B89J2-4G8F4-WWYCC-J464C /AcceptEula /NoRestart /Quiet"
+ ]
+ },
+ {
+ "type": "windows-restart",
+ "restart_timeout": "30m",
+ "restart_command": "shutdown /r /f /t 0 /c \"packer restart\"",
+ "restart_check_command": "powershell -command \"& {Write-Output 'restarted.'}\""
+ },
+ {
+ "type": "powershell",
+ "only": ["qemu"],
+ "elevated_user": "{{user `communicator_username`}}",
+ "elevated_password": "{{user `communicator_password`}}",
+ "pause_before": "30s",
+ "script": "files/scripts/windows/setup-qemu-guest-agent.ps1"
+ },
+ {
+ "type": "windows-restart",
+ "restart_timeout": "30m",
+ "restart_command": "shutdown /r /f /t 0 /c \"packer restart\"",
+ "restart_check_command": "powershell -command \"& {Write-Output 'restarted.'}\""
+ },
+ {
+ "type": "powershell",
+ "elevated_user": "{{user `communicator_username`}}",
+ "elevated_password": "{{user `communicator_password`}}",
+ "pause_before": "30s",
+ "script": "files/scripts/windows/cleanup.ps1"
+ },
+ {
+ "type": "windows-restart",
+ "restart_timeout": "30m",
+ "restart_command": "shutdown /r /f /t 0 /c \"packer restart\"",
+ "restart_check_command": "powershell -command \"& {Write-Output 'restarted.'}\""
+ }
+ ],
+
+ "post-processors": [
+ {
+ "type": "shell-local",
+ "only_on": ["linux"],
+ "environment_vars": [
+ "NAME={{user `name`}}",
+ "TIMESTAMP={{user `timestamp`}}"
+ ],
+ "script": "files/scripts/create-checksums.sh"
+ }
+ ]
+}