Additional information for using PowerShell with SSH
This commit is contained in:
parent
5db82aab21
commit
2779fb0042
|
@ -13,7 +13,11 @@ sidebar_current: 'docs-provisioners-powershell'
|
||||||
Type: `powershell`
|
Type: `powershell`
|
||||||
|
|
||||||
The PowerShell Packer provisioner runs PowerShell scripts on Windows machines.
|
The PowerShell Packer provisioner runs PowerShell scripts on Windows machines.
|
||||||
It assumes that the communicator in use is WinRM.
|
It assumes that the communicator in use is WinRM. However, the provisioner
|
||||||
|
can work equally well (with a few caveats) when combined with the SSH
|
||||||
|
communicator. See the [section
|
||||||
|
below](/docs/provisioners/powershell.html#combining-the-powershell-provisioner-with-the-ssh-communicator)
|
||||||
|
for details.
|
||||||
|
|
||||||
## Basic Example
|
## Basic Example
|
||||||
|
|
||||||
|
@ -161,6 +165,41 @@ commonly useful environmental variables:
|
||||||
slower speeds using the default file provisioner. A file provisioner using
|
slower speeds using the default file provisioner. A file provisioner using
|
||||||
the `winrm` communicator may experience these types of difficulties.
|
the `winrm` communicator may experience these types of difficulties.
|
||||||
|
|
||||||
|
## Combining the PowerShell Provisioner with the SSH Communicator
|
||||||
|
|
||||||
|
The good news first. If you are using the
|
||||||
|
[Microsoft port of OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki)
|
||||||
|
then the provisioner should just work as expected - no extra configuration
|
||||||
|
effort is required.
|
||||||
|
|
||||||
|
Now the caveats. If you are using an alternative configuration, and your SSH
|
||||||
|
connection lands you in a *nix shell on the remote host, then you will most
|
||||||
|
likely need to manually set the `execute_command`; The default
|
||||||
|
`execute_command` used by Packer will not work for you.
|
||||||
|
When configuring the command you will need to ensure that any dollar signs
|
||||||
|
or other characters that may be incorrectly interpreted by the remote shell
|
||||||
|
are escaped accordingly.
|
||||||
|
|
||||||
|
The following example shows how the standard `execute_command` can be
|
||||||
|
reconfigured to work on a remote system with
|
||||||
|
[Cygwin/OpenSSH](https://cygwin.com/) installed.
|
||||||
|
The `execute_command` has each dollar sign backslash escaped so that it is
|
||||||
|
not interpreted by the remote Bash shell - Bash being the default shell for
|
||||||
|
Cygwin environments.
|
||||||
|
|
||||||
|
```json
|
||||||
|
"provisioners": [
|
||||||
|
{
|
||||||
|
"type": "powershell",
|
||||||
|
"execute_command": "powershell -executionpolicy bypass \"& { if (Test-Path variable:global:ProgressPreference){\\$ProgressPreference='SilentlyContinue'};. {{.Vars}}; &'{{.Path}}'; exit \\$LastExitCode }\"",
|
||||||
|
"inline": [
|
||||||
|
"Write-Host \"Hello from PowerShell\"",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## Packer's Handling of Characters Special to PowerShell
|
## Packer's Handling of Characters Special to PowerShell
|
||||||
|
|
||||||
The escape character in PowerShell is the `backtick`, also sometimes
|
The escape character in PowerShell is the `backtick`, also sometimes
|
||||||
|
|
Loading…
Reference in New Issue