2019-10-01 11:59:48 -04:00
|
|
|
---
|
|
|
|
layout: guides
|
|
|
|
page_title: Unattended Windows Installation
|
2020-04-02 19:39:47 -04:00
|
|
|
sidebar_title: Unattended Installation for Windows
|
2019-10-01 11:59:48 -04:00
|
|
|
description: |-
|
|
|
|
Learn how to use an autounattend file to automatically answer installation
|
|
|
|
questions and enable Packer to connect to your windows instnace.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Unattended Installation for Windows
|
|
|
|
|
|
|
|
Unattended Windows installation is done via "Answer Files", or "Unattend files".
|
|
|
|
|
2020-03-18 18:46:47 -04:00
|
|
|
These files are generally named "autounattend.xml". They are not
|
2019-10-01 11:59:48 -04:00
|
|
|
Packer-specific tools, though we do make use of them.
|
|
|
|
|
|
|
|
If, after following this guide, you're still having issues getting an answer
|
|
|
|
file working, We recommend you read the official documentation on
|
|
|
|
[answer files](https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/update-windows-settings-and-scripts-create-your-own-answer-file-sxs).
|
|
|
|
|
|
|
|
The guide here is hopefully enough to get you started, but isn't a replacement
|
|
|
|
for the official documentation.
|
|
|
|
|
|
|
|
## When To Use an Answer File
|
|
|
|
|
|
|
|
If you are installing the Windows Operating System from a mounted iso as part of
|
|
|
|
your Packer build, you will need to use an Answer file. For example, you're
|
2020-03-31 17:40:07 -04:00
|
|
|
building an image from scratch using the [vmware-iso](/docs/builders/vmware-iso),
|
|
|
|
[virtualbox-iso](/docs/builders/virtualbox-iso), or
|
|
|
|
[hyperv-iso](/docs/builders/hyperv-iso) builders.
|
2019-10-01 11:59:48 -04:00
|
|
|
|
|
|
|
If you are not installing the operating system, you won't need to provide an
|
|
|
|
answer file. If you are using a pre-built image
|
|
|
|
in a cloud, you don't need to worry about Answer files.
|
|
|
|
|
|
|
|
## How to make an Answer File
|
|
|
|
|
|
|
|
You can either start from an example answer file from a known repo (take a look
|
|
|
|
at the examples links below), or you can generate one using an answer file
|
|
|
|
wizard by selecting New File > New Answer file on a Windows machine.
|
|
|
|
A comprehensive list of all the options you can set in an answer file can be
|
|
|
|
found [here](https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/components-b-unattend)
|
|
|
|
|
|
|
|
## Where to put the Answer File
|
|
|
|
|
|
|
|
Windows will automatically look for an autounattend.xml file on mounted drives.
|
|
|
|
Many users use the `floppy_files` option or a secondary mounted iso for
|
|
|
|
providing the answer file to their iso builders.
|
|
|
|
|
|
|
|
You can also specify an unattend file to use by using the /unattend: option when
|
|
|
|
running Windows Setup (setup.exe) in your `boot_command`.
|
|
|
|
|
|
|
|
## What does Packer _need_ the Answer File to do?
|
|
|
|
|
|
|
|
Packer needs the Answer File to handle any questions that would normally be
|
|
|
|
answered interactively during a Windows installation.
|
|
|
|
|
|
|
|
If you want to be able to use provisioners, the Answer file must also contain
|
|
|
|
a script that sets up SSH or WinRM so that Packer can connect to the instance.
|
|
|
|
|
|
|
|
Finally, your Packer build will be much smoother if the Answer File handles or
|
|
|
|
disables windows updates rather than you tyring to run them using a Packer
|
|
|
|
provisioner. This is because the winrm communicator does not handle the
|
|
|
|
disconnects caused by automatic reboots in Windows updates well, and the
|
|
|
|
disconnections can fail a build.
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
The chef-maintained bento boxes are a great example of a windows build that
|
|
|
|
sets up openssh as part of the unattended installation so that Packer can
|
|
|
|
connect using the ssh communicator. They functioning answer files for every
|
2020-03-24 18:36:27 -04:00
|
|
|
modern Windows version can be found [here](https://github.com/chef/bento/tree/master/packer_templates/windows/answer_files).
|
2019-10-01 11:59:48 -04:00
|
|
|
|
2020-03-24 18:36:27 -04:00
|
|
|
Stefan Scherer's [packer-windows repo](https://github.com/StefanScherer/packer-windows)
|
|
|
|
is a great example of windows builds that set up WinRM as part of the unattended
|
|
|
|
installation so that Packer can connect using the winrm communicator:
|
2019-10-01 11:59:48 -04:00
|
|
|
|
2020-03-12 10:05:08 -04:00
|
|
|
```json
|
2020-03-18 18:46:47 -04:00
|
|
|
{
|
|
|
|
"type": "virtualbox-iso",
|
|
|
|
"guest_os_type": "Windows2008_64",
|
|
|
|
"iso_url": "https://download.microsoft.com/download/7/5/E/75EC4E54-5B02-42D6-8879-D8D3A25FBEF7/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso",
|
|
|
|
"iso_checksum": "30832AD76CCFA4CE48CCB936EDEFE02079D42FB1DA32201BF9E3A880C8ED6312",
|
|
|
|
"iso_checksum_type": "sha256",
|
|
|
|
"shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c Packer_Provisioning_Shutdown",
|
|
|
|
"guest_additions_mode": "attach",
|
|
|
|
"floppy_files": ["./scripts/Autounattend.xml", "./scripts/openssh.ps1"],
|
|
|
|
"communicator": "winrm",
|
|
|
|
"winrm_username": "vagrant",
|
|
|
|
"winrm_password": "vagrant"
|
|
|
|
}
|
|
|
|
```
|