2020-03-18 18:46:47 -04:00
|
|
|
---
|
|
|
|
description: |
|
|
|
|
The windows-shell Packer provisioner runs commands on Windows using the cmd
|
|
|
|
shell.
|
|
|
|
layout: docs
|
|
|
|
page_title: Windows Shell - Provisioners
|
2020-04-02 19:39:47 -04:00
|
|
|
sidebar_title: Windows Shell
|
2020-03-18 18:46:47 -04:00
|
|
|
---
|
|
|
|
|
|
|
|
# Windows Shell Provisioner
|
|
|
|
|
|
|
|
Type: `windows-shell`
|
|
|
|
|
|
|
|
The windows-shell Packer provisioner runs commands on a Windows machine using
|
|
|
|
`cmd`. It assumes it is running over WinRM.
|
|
|
|
|
|
|
|
## Basic Example
|
|
|
|
|
|
|
|
The example below is fully functional.
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"type": "windows-shell",
|
|
|
|
"inline": ["dir c:\\"]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
## Configuration Reference
|
|
|
|
|
2020-03-23 20:02:12 -04:00
|
|
|
@include 'provisioners/shell-config.mdx'
|
2020-03-18 18:46:47 -04:00
|
|
|
|
|
|
|
- `environment_vars` (array of strings) - An array of key/value pairs to
|
|
|
|
inject prior to the execute_command. The format should be `key=value`.
|
|
|
|
Packer injects some environmental variables by default into the
|
|
|
|
environment, as well, which are covered in the section below.
|
|
|
|
|
|
|
|
- `execute_command` (string) - The command to use to execute the script. By
|
|
|
|
default this is `{{ .Vars }}"{{ .Path }}"`. The value of this is treated as
|
2020-03-31 17:40:07 -04:00
|
|
|
[template engine](/docs/templates/engine). This is a
|
|
|
|
[template engine](/docs/templates/engine). Therefore, you may
|
2020-03-18 18:46:47 -04:00
|
|
|
use user variables and template functions in this field. In addition, there
|
|
|
|
are two available extra variables:
|
|
|
|
|
|
|
|
- `Path` is the path to the script to run
|
|
|
|
- `Vars` is the list of `environment_vars`, if configured.
|
|
|
|
|
|
|
|
- `remote_path` (string) - The path where the script will be uploaded to in
|
|
|
|
the machine. This defaults to "c:/Windows/Temp/script.bat". This value must
|
|
|
|
be a writable location and any parent directories must already exist.
|
|
|
|
|
|
|
|
- `start_retry_timeout` (string) - The amount of time to attempt to _start_
|
|
|
|
the remote process. By default this is "5m" or 5 minutes. This setting
|
|
|
|
exists in order to deal with times when SSH may restart, such as a system
|
|
|
|
reboot. Set this to a higher value if reboots take a longer amount of time.
|
|
|
|
|
2020-03-23 20:02:12 -04:00
|
|
|
@include 'provisioners/common-config.mdx'
|
2020-03-18 18:46:47 -04:00
|
|
|
|
|
|
|
## Default Environmental Variables
|
|
|
|
|
|
|
|
In addition to being able to specify custom environmental variables using the
|
|
|
|
`environment_vars` configuration, the provisioner automatically defines certain
|
|
|
|
commonly useful environmental variables:
|
|
|
|
|
|
|
|
- `PACKER_BUILD_NAME` is set to the [name of the
|
2020-03-31 17:40:07 -04:00
|
|
|
build](/docs/templates/builders#named-builds) that Packer is running.
|
2020-03-18 18:46:47 -04:00
|
|
|
This is most useful when Packer is making multiple builds and you want to
|
|
|
|
distinguish them slightly from a common provisioning script.
|
|
|
|
|
|
|
|
- `PACKER_BUILDER_TYPE` is the type of the builder that was used to create
|
|
|
|
the machine that the script is running on. This is useful if you want to
|
|
|
|
run only certain parts of the script on systems built with certain
|
|
|
|
builders.
|
|
|
|
|
|
|
|
- `PACKER_HTTP_ADDR` If using a builder that provides an http server for file
|
|
|
|
transfer (such as hyperv, parallels, qemu, virtualbox, and vmware), this
|
|
|
|
will be set to the address. You can use this address in your provisioner to
|
|
|
|
download large files over http. This may be useful if you're experiencing
|
|
|
|
slower speeds using the default file provisioner. A file provisioner using
|
|
|
|
the `winrm` communicator may experience these types of difficulties.
|