Lucas Bajolet
f4a2ac3b31
feat: support pwsh in powershell provisioner ( #11950 )
...
* set `pwsh` to true in config to run `pwsh.exe`, default is false.
* add docs
Co-authored-by: Ed Eustace <ed@smashcut.com>
2022-08-19 16:00:46 -04:00
Lucas Bajolet
c99b300e3a
Add support for Env in remote shell provisioners ( #11819 )
...
* provisioner/shell: add support for Env variables
As mentioned in issue #11670 , the Shell provider did not support Env
variable declarations in the HCL templates.
This commit adds the capability to the code.
* provisioner/powershell: add support for Env vars
* provisioner/windows-shell: support Env variables
2022-05-31 09:49:38 -04:00
Lucas Bajolet
cbc67b7636
Merge pull request #11792 from teddylear/feat-pause_after-powershell
...
feat: Add pause_after config to powershell provisioner like shell
2022-05-30 16:47:25 -04:00
teddylear
d00a41c6ae
fix: updates to have make fmt-check and ci-lint pass
2022-05-27 19:36:41 -04:00
Lucas Bajolet
71752c9e1e
powershell/provisioner: remove useless fmt.Sprintf
...
The fmt.Sprintf statement in Provisioner.Provision took a plain string
as parameter, without any arguments, making it futile to call.
2022-05-27 16:44:55 -04:00
Lucas Bajolet
673a97290a
provisioner/powershell: remove unused variable
...
The retryableSleep variable in the powershell provisioner was defined
but never used, so we can safely rename it.
2022-05-27 16:44:55 -04:00
teddylear
000ace61a3
feat: Add pause_after config to powershell provisioner like shell
...
provisioner
2022-05-18 17:35:48 -04:00
Adrien Delorme
0362a3ec10
all shells: Pass env vars through a key value store ( #11569 )
...
* allowing to set shell env vars from a key/value map.
* tests
This new map will work alongside the `environment_vars` but it allows using a
datasource value seamlessly. At validation, and because `environment_vars` was
an array of strings containing `KEY=value`, using datsources would not work,
because these values are not known yet and would evaluate to `<unknown>`. With
this, the value and the key can be unknown and will validate correctly for
datasources.
2022-02-16 12:05:44 +01:00
Adrien Delorme
a2124eb594
Tiny tweaks and fixes for the PowerShell provisioner ( #11410 )
...
* add docs
* fix potential bug
2021-11-23 12:34:26 +01:00
Adrien Delorme
87ba7258b3
Use packer-sdc in packer + remove mapstructure-to-hcl2 & struct-markdown ( #10913 )
...
* start using `go:generate packer-sdc struct-markdown`
* Update Makefile
remove @go install ./cmd/struct-markdown
* run go generate for struct-markdown
* use //go:generate packer-sdc mapstructure-to-hcl2
* run go generate for mapstructure-to-hcl2
* remove struct-markdown and mapstructure-to-hcl2
* vendor vendors
2021-04-16 11:52:03 +02:00
Megan Marsh
88b7b0e14a
remove sdk
2020-12-17 13:29:25 -08:00
Megan Marsh
5f34bbd56e
add extra line before package declaration so this line does not become the synopsis of a package for godoc
2020-12-16 15:14:43 -08:00
Megan Marsh
76177b50ce
Refactor provisioner acceptance tests to shell directly out to Packer rather than import the core. Modify test case formatting to more closely reflect the builder test cases.
2020-12-07 15:45:16 -08:00
Megan Marsh
8f51a8bfae
move provisioner acceptance tests into sdk alongside builder acceptance tests. Reorganize slightly to make sure no import cycles of doom get formed
2020-12-03 14:22:18 -08:00
Megan Marsh
5576bb5caa
move packer config constants next to the packer config
2020-12-03 10:17:35 -08:00
Megan Marsh
be5763ec41
move provisioner interface into sdk
2020-12-01 14:25:14 -08:00
Megan Marsh
d5971ca25e
fix tests by moving mock hooks and communicators, and BasicUi definition, into SDK
2020-11-30 14:30:30 -08:00
Megan Marsh
56a45b04ab
Move hook and communicator definitions to packer-plugin-sdk
2020-11-30 14:30:30 -08:00
Megan Marsh
c70870cb83
move multierror and multierrorappend into sdk
2020-11-30 14:29:06 -08:00
Megan Marsh
001886670d
move Ui definition into the packer plugin sdk.
2020-11-30 14:26:54 -08:00
Megan Marsh
f8f1ebf0c7
move version and useragent definitions into sdk
2020-11-18 11:42:02 -08:00
Megan Marsh
9e47696dff
move helper/config to bundle with the other template definitions
2020-11-18 10:34:59 -08:00
Megan Marsh
3f6deb8828
move multistep into the plugin sdk
2020-11-17 16:31:03 -08:00
Megan Marsh
7d658149ea
update tests and website and generated partials to reflect new package format
2020-11-17 10:36:01 -08:00
Megan Marsh
1ffc358ada
move tmp helper func into packer-plugin-sdk
2020-11-16 15:13:08 -08:00
Megan Marsh
c4d0c5505a
fix tests
...
regenerate code
regenerate code, revendor
fix website
2020-11-13 15:00:12 -08:00
Megan Marsh
e04eaa89e6
move steps and step configs from packer/common to packer/common/commonsteps
2020-11-13 11:15:04 -08:00
Megan Marsh
6402362018
create packer-plugin-sdk directory and begin moving the relevant folders into it.
2020-11-13 10:47:36 -08:00
Megan Marsh
46cf8a1602
add all provisioner version files
2020-11-10 15:01:07 -08:00
Megan Marsh
8ecd16db81
regenerate code
2020-11-10 08:16:59 -08:00
Megan Marsh
cd74456026
Common provisioner helpers ( #10229 )
...
* update docstrings to make it clear that plugins are servers and core is client
* move provisioner guest helper functions into common dir.
2020-11-09 12:16:44 +01:00
Megan Marsh
c0ce8a9414
rework fixer deprecation code so we know what plugins they relate to
2020-10-21 15:28:59 -07:00
Wilken Rivera
d72173ac1a
Revert "Merge pull request #9040 from hashicorp/powershell-exit-code-fix-4916"
...
This reverts commit 334f399ee3 , reversing
changes made to 45a5d28bad .
When testing against Windows SSH the Powershell script fails to parse
the newly added if statement.
2020-06-09 11:41:07 -04:00
Adrien Delorme
40947c2bf6
HCL2: generate hcl tags with go-cty tags too ( #9306 )
...
This will allow to generate the config files:
```go
package main
import (
"fmt"
"github.com/hashicorp/hcl/v2/gohcl"
"github.com/hashicorp/hcl/v2/hclwrite"
"github.com/hashicorp/packer/builder/alicloud/ecs"
)
func main() {
name := "name"
app := ecs.FlatConfig{
AlicloudImageName: &name,
ECSSystemDiskMapping: &ecs.FlatAlicloudDiskDevice{
DiskName: &name,
},
}
f := hclwrite.NewEmptyFile()
block := gohcl.EncodeAsBlock(&app, `source "something" "something"`)
f.Body().AppendBlock(block)
fmt.Printf("%s", f.Bytes())
}
```
Will output:
```
source "something" "something" {
packer_user_variables = null
packer_sensitive_variables = null
image_name = "name"
image_share_account = null
image_unshare_account = null
image_copy_regions = null
image_copy_names = null
tags = null
tag = null
system_disk_mapping = { disk_category = null, disk_delete_with_instance = null, disk_descri
ption = null, disk_device = null, disk_encrypted = null, disk_name = "name", disk_size = null, disk_
snapshot_id = null }
image_disk_mappings = null
ssh_remote_tunnels = null
ssh_local_tunnels = null
ssh_public_key = null
ssh_private_key = null
}
```
This is a good first step for #9015 and #9282
fix #9304
2020-05-28 11:19:00 +02:00
Wilken Rivera
1e90165a56
Add source URL to test fixture script ( #9296 )
2020-05-26 10:24:12 -04:00
Megan Marsh
fecb040bf4
fix bug where build vars couldn't be properly interpolated into this execute command ( #9275 )
2020-05-25 11:54:27 +02:00
Wilken Rivera
2e326ef334
Switch back to call operator as opposed to dot sourcing
...
* Ensure child scope doesn't conflict with parent scope
* Add elevated user options to tests case.
2020-05-21 09:07:55 -04:00
Wilken Rivera
38f799df3e
Add conditional to check if LastExitCode is defined
...
* Add broken requires statement test case
* Add test case to reproduce invalid LastExitCode
2020-05-21 09:07:43 -04:00
Wilken Rivera
35df3914d2
provisioner/powershell: Update default execute command to handle script errors
...
This change sets the ErrorActionPreference and wraps the script execution in a Try/Catch statement so that the provisioner can capture any errors encountered when running the script. In addition to the try/catch the `&` operator is replaced by the `.` sourcing operator to ensure the script is executed in the same scope as the parent command (so that errors bubble up properly).
Tests after change
```
⇶ ACC_TEST_BUILDERS=amazon-ebs ACC_TEST_PROVISIONERS=powershell go test ./provisioner/powershell/... -timeout=1h
ok github.com/hashicorp/packer/provisioner/powershell 915.865s
```
2020-05-21 09:05:43 -04:00
Wilken Rivera
13e0c1a097
tests/provisioner/powershell: Add acceptance test to reproduce issue 4916
2020-05-21 09:05:43 -04:00
Sylvia Moss
1c30a71d09
Replace file shared state by statebag ( #9238 )
2020-05-19 11:49:48 +02:00
Wilken Rivera
c330d2f04c
provisioner/powershell: Update cleanup logic
...
This change reduces the retry timeout from 5m to 1m, and sets the
RetryDelay to 10s for a total of 6 retries. In additional to the retry
time reduction the cleanup script will now check to see if the
provisioner script created by Packer exists before trying to delete to
prevent any file not found issues.
Closes #9181
Closes #9189
2020-05-14 10:21:45 -04:00
Matt Kotsenas
fe55494207
Add debug_mode to PowerShell provisioner ( #8996 )
2020-04-17 11:39:39 +02:00
Adrien Delorme
840e67f775
HCL2: when we see a map generate an attribute spec instead of a block spec ( #9035 )
...
* mapstructure-to-hcl2: when we see a map generate an attribute spec and not a block spec
this will alow to do
tags = {
key = "value"
}
instead of
tags {
key = "value"
}
This will also enable using variables directly for those tags
* generate code
* update tests
2020-04-14 16:05:13 +02:00
Megan Marsh
73c349d09c
Merge pull request #8908 from hashicorp/fix_4795
...
provisioner/powershell: Add cleanup step to remove any temporarily created scripts
2020-04-09 08:56:19 -07:00
Lars Lehtonen
49f28c9439
provisioner/powershell: fix dropped error
...
provisioner/powershell: improve error message
2020-04-08 10:04:08 -07:00
Wilken Rivera
4a46d6ff7b
docs/provisioner/powershell: Add documentation for skip_clean option
2020-04-08 10:23:15 -04:00
Wilken Rivera
fe721d8e11
test/provisioner/powershell: Add acceptance test for powershell provisioner cleanup
...
Passing Tests
```
--- PASS: TestAccPowershellProvisioner_basic (282.02s)
--- PASS: TestAccPowershellProvisioner_basic/testing_amazon-ebs_builder_against_powershell_provisioner (282.01s) PASS
ok github.com/hashicorp/packer/provisioner/powershell 282.046s
```
Failing tests on master
```
2020/04/08 09:59:34 Uploading file to 'c:/Windows/Temp/script.bat'
2020/04/08 09:59:36 [INFO] starting remote command: set "PACKER_BUILDER_TYPE=amazon-ebs" && set "PACKER_BUILD_NAME=amazon-ebs"
&& "c:/Windows/Temp/script.bat"
2020/04/08 09:59:36 ui: amazon-ebs:
2020/04/08 09:59:36 ui: amazon-ebs: C:\Users\Administrator>dir C:\Windows\Temp\packer-*.ps1
2020/04/08 09:59:36 ui: amazon-ebs: Volume in drive C has no label.
2020/04/08 09:59:36 [INFO] command 'set "PACKER_BUILDER_TYPE=amazon-ebs"
&& set "PACKER_BUILD_NAME=amazon-ebs" && "c:/Windows/Temp/script.bat"' exited with code: 0
2020/04/08 09:59:36 ui: amazon-ebs: Volume Serial Number is 46CA-4083
2020/04/08 09:59:36 ui: amazon-ebs:
2020/04/08 09:59:36 ui: amazon-ebs: Directory of C:\Windows\Temp
2020/04/08 09:59:36 ui: amazon-ebs:
2020/04/08 09:59:36 ui: amazon-ebs: 04/08/2020 01:59 PM 102 packer-acc-test-script-test.ps1
2020/04/08 09:59:36 ui: amazon-ebs: 04/08/2020 01:59 PM 76 packer-acc-test-vars.ps1
2020/04/08 09:59:36 ui: amazon-ebs: 2 File(s) 178 bytes
2020/04/08 09:59:36 ui: amazon-ebs: 0 Dir(s) 9,735,806,976 bytes free
2020/04/08 09:59:36 ui: ==> amazon-ebs: Provisioning step had errors: Running the cleanup provisioner, if present...
2020/04/08 09:59:36 ui: ==> amazon-ebs: Terminating the source AWS instance...
2020/04/08 10:00:09 ui: ==> amazon-ebs: Cleaning up any extra volumes...
2020/04/08 10:00:09 ui: ==> amazon-ebs: No volumes to clean up, skipping
2020/04/08 10:00:09 ui: ==> amazon-ebs: Deleting temporary security group...
2020/04/08 10:00:10 ui: ==> amazon-ebs: Deleting temporary keypair...
2020/04/08 10:00:11 ui error: Build 'amazon-ebs' errored: Script exited
with non-zero exit status: 0.Allowed exit codes are: [1]
2020/04/08 10:00:11 machine readable: error-count []string{"1"}
2020/04/08 10:00:11 ui error:
==> Some builds didn't complete successfully and had errors:
2020/04/08 10:00:11 machine readable: amazon-ebs,error []string{"Script
exited with non-zero exit status: 0.Allowed exit codes are: [1]"}
2020/04/08 10:00:11 ui error: --> amazon-ebs: Script exited with
non-zero exit status: 0.Allowed exit codes are: [1]
```
test: Fix windows-shell command
2020-04-08 10:05:54 -04:00
Wilken Rivera
11db6014fa
provisioner/powershell: Update remote clean up logic
...
* Add retry logic so that the provisioner will retry if it fails to upload/execute because of some restart provisioner step
* Add a testConfigWithSkipClean for testing that the provisioner executes the correct commands
* Add a test case for toggling the "skip_clean" config option
2020-04-08 00:23:40 -04:00
Wilken Rivera
f6a61e2511
provisioner/powershell: Add post clean up step to remove temp script files
2020-04-08 00:23:40 -04:00