Commit Graph

959 Commits

Author SHA1 Message Date
Moss 3f49b7c66e Fix linter 2020-03-13 17:17:42 +01:00
Moss 0cc1092222 Fix format 2020-03-13 17:11:13 +01:00
Moss 2ca6804827 Move shell prov acc test to the same folder 2020-03-13 17:10:51 +01:00
Moss 7fbbbffd5c Interpolate file provisioner and add integration tests 2020-03-13 16:17:40 +01:00
Moss 6c06a2a048 Fix format 2020-03-12 17:59:34 +01:00
Moss a3740bb9be Interpolate shell inline config 2020-03-12 17:54:31 +01:00
Wilken Rivera e1a46ec293
Fix gosimple S1025 linting errors (#8838)
Remove unneeded use of fmt.Sprintf for variables that are already strings.
2020-03-04 15:31:30 -05:00
Sylvia Moss ce674ff272
Add exclude mapstructure tag to exclude from hcl2spec struct (#8785) 2020-03-03 17:13:39 +01:00
Paschalis Tsilias beca6de71b Add packer.ExpandUser() function to support tilde in usage of config.ValidationKeyPath (#8657) 2020-01-28 14:33:42 +01:00
nywilken b80882f3b8 provisioner/shell: Fix envVarFile clean up issue
This change ensures the deletion of the external envVarFile (use_env_var_file = true) occurs after all script files have been executed and deleted.

Build results before change
```
> packer build build.pkr.hcl                                                                                                                                                             [~0]
docker: output will be in this color.

==> docker: Creating a temporary directory for sharing data...
==> docker: Pulling Docker image: ubuntu:bionic
    docker: bionic: Pulling from library/ubuntu
    docker: Digest: sha256:8d31dad0c58f552e890d68bbfb735588b6b820a46e459672d96e585871acc110
    docker: Status: Image is up to date for ubuntu:bionic
    docker: docker.io/library/ubuntu:bionic
==> docker: Starting docker container...
    docker: Run command: docker run -v /home/wilken/.packer.d/tmp476880774:/packer-files -d -i -t --entrypoint=/bin/sh -- ubuntu:bionic
    docker: Container ID: 812069b4d70746a6d4592a8f75c06867c6774b8b0bd81ade76eae7926a30f64b
==> docker: Using docker communicator to connect: 172.17.0.2
==> docker: Provisioning with shell script: sample.sh
    docker: Sample Script
    docker: wilken is NotForSale!
==> docker: Provisioning with shell script: foobar.sh
==> docker: /bin/sh: 1: .: Can't open /tmp/varfile_2555.sh
==> docker: Provisioning step had errors: Running the cleanup provisioner, if present...
==> docker: Killing the container: 812069b4d70746a6d4592a8f75c06867c6774b8b0bd81ade76eae7926a30f64b
Build 'docker' errored: Script exited with non-zero exit status: 2.Allowed exit codes are: [0]

==> Some builds didn't complete successfully and had errors:
--> docker: Script exited with non-zero exit status: 2.Allowed exit codes are: [0]

==> Builds finished but no artifacts were created.
```

Build results after change
```
> packer build build.pkr.hcl
docker: output will be in this color.

==> docker: Creating a temporary directory for sharing data...
==> docker: Pulling Docker image: ubuntu:bionic
    docker: bionic: Pulling from library/ubuntu
    docker: Digest: sha256:8d31dad0c58f552e890d68bbfb735588b6b820a46e459672d96e585871acc110
    docker: Status: Image is up to date for ubuntu:bionic
    docker: docker.io/library/ubuntu:bionic
==> docker: Starting docker container...
    docker: Run command: docker run -v /home/wilken/.packer.d/tmp819845000:/packer-files -d -i -t --entrypoint=/bin/sh -- ubuntu:bionic
    docker: Container ID: d8ed9100ff5017379bfc0d80703b2b2d10c4104941663aa5ddbbf18f6dcf74a5
==> docker: Using docker communicator to connect: 172.17.0.2
==> docker: Provisioning with shell script: sample.sh
    docker: Sample Script
    docker: wilken is NotForSale!
==> docker: Provisioning with shell script: foobar.sh
    docker: FooBar Script
    docker: wilken is NotForSale!
==> docker: Committing the container
    docker: Image ID: sha256:a412e43f134431f2049a7d06d5d691aad3717d91dd2ee5e2575e05b89384a4b3
==> docker: Killing the container: d8ed9100ff5017379bfc0d80703b2b2d10c4104941663aa5ddbbf18f6dcf74a5
Build 'docker' finished.

==> Builds finished. The artifacts of successful builds are:
--> docker: Imported Docker image: sha256:a412e43f134431f2049a7d06d5d691aad3717d91dd2ee5e2575e05b89384a4b3
```
2020-01-23 14:59:36 -05:00
Megan Marsh 4b9568e409 fix winrmpass sanitization to account for empty string value. 2020-01-06 10:07:30 -08:00
Megan Marsh 9eda2031d2 Remove redundant placeholder (#8503) 2019-12-19 10:39:46 +01:00
Adrien Delorme 4b7132c87c Merge remote-tracking branch 'origin/master' into sharing_info 2019-12-17 11:57:09 +01:00
Adrien Delorme 0785c2f6fc
build using HCL2 (#8423)
This follows #8232 which added the code to generate the code required to parse
HCL files for each packer component.

All old config files of packer will keep on working the same. Packer takes one
argument. When a directory is passed, all files in the folder with a name
ending with  “.pkr.hcl” or “.pkr.json” will be parsed using the HCL2 format.
When a file ending with “.pkr.hcl” or “.pkr.json” is passed it will be parsed
using the HCL2 format. For every other case; the old packer style will be used.

## 1. the hcl2template pkg can create a packer.Build from a set of HCL (v2) files

I had to make the packer.coreBuild (which is our one and only packer.Build ) a public struct with public fields

## 2. Components interfaces get a new ConfigSpec Method to read a file from an HCL file.

  This is a breaking change for packer plugins.

a packer component can be a: builder/provisioner/post-processor

each component interface now gets a `ConfigSpec() hcldec.ObjectSpec`
which allows packer to tell what is the layout of the hcl2 config meant
to configure that specific component.

This ObjectSpec is sent through the wire (RPC) and a cty.Value is now
sent through the already existing configuration entrypoints:

 Provisioner.Prepare(raws ...interface{}) error
 Builder.Prepare(raws ...interface{}) ([]string, error)
 PostProcessor.Configure(raws ...interface{}) error

close #1768


Example hcl files:

```hcl
// file amazon-ebs-kms-key/run.pkr.hcl
build {
    sources = [
        "source.amazon-ebs.first",
    ]

    provisioner "shell" {
        inline = [
            "sleep 5"
        ]
    }

    post-processor "shell-local" {
        inline = [
            "sleep 5"
        ]
    }
}

// amazon-ebs-kms-key/source.pkr.hcl

source "amazon-ebs" "first" {

    ami_name = "hcl2-test"
    region = "us-east-1"
    instance_type = "t2.micro"

    kms_key_id = "c729958f-c6ba-44cd-ab39-35ab68ce0a6c"
    encrypt_boot = true
    source_ami_filter {
        filters {
          virtualization-type = "hvm"
          name =  "amzn-ami-hvm-????.??.?.????????-x86_64-gp2"
          root-device-type = "ebs"
        }
        most_recent = true
        owners = ["amazon"]
    }
    launch_block_device_mappings {
        device_name = "/dev/xvda"
        volume_size = 20
        volume_type = "gp2"
        delete_on_termination = "true"
    }
    launch_block_device_mappings {
        device_name = "/dev/xvdf"
        volume_size = 500
        volume_type = "gp2"
        delete_on_termination = true
        encrypted = true
    }

    ami_regions = ["eu-central-1"]
    run_tags {
        Name = "packer-solr-something"
        stack-name = "DevOps Tools"
    }
    
    communicator = "ssh"
    ssh_pty = true
    ssh_username = "ec2-user"
    associate_public_ip_address = true
}
```
2019-12-17 11:25:56 +01:00
Megan Marsh 0f6d1beccf add an extra string array to the Prepare() return values in the builder interfaces; this sets up the ability for builders to give the provisioners custom user-accessible build-time variables. 2019-12-16 21:23:05 -08:00
Megan Marsh 82367a88f8 reorganize placeholder data call to live with provisioner implementation; force users to use the generated function, therefore forcing validation, for all variables except winrmpassword, by doing a simple string check against the placeholder data. 2019-12-14 03:32:38 -08:00
Megan Marsh 3389d843f0 update all provisioners that used the winrmpassword tooling to use the new generateddata option 2019-12-12 16:42:53 -08:00
Megan Marsh b2012c7ff3 fix tests 2019-12-12 15:47:17 -08:00
Megan Marsh 39fd462b56 change all provision func signatures to use map[string]interface{} 2019-12-12 15:38:32 -08:00
Megan Marsh 0ca7c9f397 fix tests 2019-12-11 16:29:35 -08:00
Megan Marsh 6f418d0e54 get data sharing to a working state with the powershell provisioner 2019-12-11 15:43:38 -08:00
Megan Marsh f4c3501af5 pass struct of generated data into provision() call 2019-12-11 15:43:38 -08:00
Megan Marsh 822aa02500
Merge pull request #8468 from pfuender/master
Add version selection for chef-client provisioner
2019-12-10 12:29:32 -08:00
pfuender ffb9272fb2 adding version-override for chef-client provisioner 2019-12-09 20:58:04 +01:00
Wilken Rivera b79986c3c5
Merge pull request #8411 from kevingunn-wk/fix_8410
rename galaxy_command to galaxycommand
2019-12-09 11:16:20 -08:00
Kevin Gunn 70aa0516de reset ansible-local documentation to include galaxy_command
fix spacing in fixer.go
2019-11-26 01:05:33 -05:00
Kevin Gunn 28d1037864 change galaxycommand to galaxy_command and add fixer 2019-11-26 00:57:17 -05:00
Megan Marsh 7d4353864f use shell struct in shell-local provisioner and post-processor. 2019-11-21 16:47:29 -08:00
Megan Marsh ad34a4551b provisioner/windows-restart: revert sleep hack now that we've fixed the underlying bug in #8369 (#8377) 2019-11-18 10:48:33 +01:00
nywilken 3522e13b1e provisioner/shell: Add `env_var_format` support to shell provisioner
* Move setting of default EnvVarFormat to the Prepare function
* Add generated hcl2 structure for the updated Shell provisioner config
* Move `EnvVarFormat` field to shared common shell type
* Add description for the `env_var_format` parameter
* Update `env_var_format` when used with `use_env_var_file`
2019-11-06 16:28:56 -05:00
Adrien Delorme 819329228a Change back to make sure all durations are a time.Duration
It is simply the best/simplest solution and trying to prevent users from passing and integer here would be like opening a can of worms. Because:

* we cannot make mapstructure validate our duration string ( with an UnmarshalJSON func etc.)
* we cannot make mapstructure spit a string instead of a duration and packer will decode-encode-decode config.
* the hcl2 generated code asks for a string, so this will be enforced by default.
2019-10-31 16:12:07 +01:00
Adrien Delorme bf3d9841c6 Force durations to be passed a strings
Before this commit it was possible to set a duration using an integer or a float. Go's time.Duration is an int64 internally an mapstructure will take advantage of this and load the number as a int64 but `1` means one ns which is unexpected/confusing. To avoid confusion and enforce readability this forces users to pass a string with a unit for a duration; ex "56s".
2019-10-31 11:47:19 +01:00
Adrien Delorme 078ba7c8c3 commit old code generation tool
for history
2019-10-15 12:56:42 +02:00
Adrien Delorme 193d3e6bbd provisioner.windows-shell: demove duplicate ExecuteCommand field 2019-10-15 12:56:42 +02:00
Lars Lehtonen 9c19cfdc6f
provisioner/shell: fix dropped error 2019-10-15 03:21:05 -07:00
Lars Lehtonen bd01d0d3c3 provisioner/inspec: Fix dropped error 2019-08-27 17:01:33 -07:00
Lars Lehtonen b207752883 provisioner/ansible: Fix dropped error 2019-08-27 16:52:52 -07:00
Ruben Tsirunyan 1b35c586ce Changes to roles_path option 2019-07-29 13:23:39 +04:00
Ruben Tsirunyan d247329599 Adding support for installing roles with ansible-galaxy for ansible provisioner 2019-07-29 13:23:39 +04:00
Megan Marsh 0f704fb5b2 These cancel functions have been obsolete since merge of c7ce4d598e 2019-07-26 14:12:58 -07:00
Stefan Scherer 35dae5791c
Use --input-file instead of --attrs.
Signed-off-by: Stefan Scherer <stefan.scherer@docker.com>
2019-07-22 10:17:01 +02:00
David Hao c6a471d149 [Salt] Replace scp with scp + mv to handle non-root case 2019-07-02 18:06:04 -04:00
David Z Hao 1d4750a2d9
DisableSudo, not PreventSudo 2019-06-20 13:39:51 -04:00
David Z Hao ea238b66c0
Make salt-masterless provisioner respect disable_sudo directive for all commands 2019-06-19 18:50:16 -04:00
Megan Marsh 6982ec796f remove redundant error check 2019-06-13 10:51:44 -07:00
Megan Marsh 6dcff18d36 prevent nil pointer dereference by defining IsUserAuthority. This occurred as a regression when we updated the crypto library in v1.4.0 2019-06-11 13:43:13 -07:00
Megan Marsh de7106c36b
Merge pull request #7696 from hashicorp/go_generate_from_makefile
run `go generate ./...` from makefile & CI test that it generates no diff
2019-06-03 15:01:21 -07:00
Megan Marsh 4bf75ac0f3 fix null file descriptor error 2019-05-30 15:34:18 -05:00
Adrien Delorme abd6eda6c9 generate execution policy from makefile
* make generate now generates on `./...` instead of `.`
2019-05-27 14:52:04 +02:00
Megan Marsh 1204213516
Merge pull request #7678 from hashicorp/docker_windows_defaults
builder/docker: better windows defaults
2019-05-24 11:19:32 -07:00
Megan Marsh 6f560bef0a
Merge pull request #7653 from aaronwalker/chef_license_acceptance
adds support for accepting the chef license
2019-05-24 11:12:09 -07:00
Adrien Delorme 478f80af83 remove unused func 2019-05-23 17:33:46 +02:00
Adrien Delorme 7005958155 execution policy: make everything more idiomatic
* make possible execution policy values lowercase
* prefix execution policies possibilities
2019-05-23 17:12:32 +02:00
Adrien Delorme e62aba3788 allow to set ExecutionPolicy to none for powershell provisioner
this has the effect to not wrap the command, which will allow to know the exit status of a command in docker
2019-05-23 16:42:44 +02:00
Adrien Delorme e96409954a add execution policy type and use it to default the powershell cmd 2019-05-23 16:12:05 +02:00
Aaron Walker 85b8a654b0 only sets default value for chef license when installing chef and the install command is not set 2019-05-21 15:26:07 +02:00
Paul Meyer 814665fddd Check error returned from retry.Config.Run() 2019-05-17 22:28:34 +00:00
Paul Meyer ec14ab4875 Add unit test to find issue #7655 2019-05-17 22:27:19 +00:00
Aaron Walker dfc5e5cf94 adds support for accepting the chef license 2019-05-17 17:19:22 +02:00
Adrien Delorme d72040f4fa move retry code into the common/retry pkg and make retry context aware 2019-04-09 17:46:38 +02:00
Adrien Delorme 2b06d74019 add a sleep provisioner
mainly for testing purposes
2019-04-08 20:09:21 +02:00
Adrien Delorme f555e7a9f2 allow a provisioner to timeout
* I had to contextualise Communicator.Start and RemoteCmd.StartWithUi
NOTE: Communicator.Start starts a RemoteCmd but RemoteCmd.StartWithUi will run the cmd and wait for a return, so I renamed StartWithUi to RunWithUi so that the intent is clearer.
Ideally in the future RunWithUi will be named back to StartWithUi and the exit status or wait funcs of the command will allow to wait for a return. If you do so please read carrefully https://golang.org/pkg/os/exec/#Cmd.Stdout to avoid a deadlock
* cmd.ExitStatus to cmd.ExitStatus() is now blocking to avoid race conditions
* also had to simplify StartWithUi
2019-04-08 20:09:21 +02:00
Adrien Delorme a81abd297b Merge remote-tracking branch 'origin/master' into context_provisioner 2019-04-08 20:09:01 +02:00
Adrien Delorme c4f3dccc14 rename interpolation context from ctx to ictx and contexts to ctx to avoid conflicts 2019-04-03 15:56:15 +02:00
Adrien Delorme 82c4b76639 [Builder|Build|PostProcessor|Provisioner|Hook]Server: context cancel using a RPC cancel method 2019-04-03 15:55:55 +02:00
Adrien Delorme c7ce4d598e change Provisioner to be passed a context for cancellation 2019-04-03 15:55:54 +02:00
Megan Marsh 0e6c779a88 allow user to access env_var_format in windows_shell call 2019-03-27 15:25:32 -07:00
Adrien Delorme 5a6dffde9a use port as ints 2019-03-19 15:01:12 +01:00
Adrien Delorme a77ce59e36 Update provisioner_test.go
remove unecessary test
2019-03-14 12:48:21 +01:00
Adrien Delorme 72e5ae9ddc use ValidExitCode in provisioners windows-shell, powershell and shell 2019-03-14 12:47:22 +01:00
Adrien Delorme 30a65c858a regroup shell provisioner params into a common struct 2019-03-14 11:57:54 +01:00
Adrien Delorme 8fea9439f8 windows-shell provisioner: allow to pass ValidExitCodes 2019-03-14 11:17:06 +01:00
Adrien Delorme 9f82b75e57 Use the hashicorp/go-getter to download files
* removed packer.Cache and references since packer.Cache is never used except in the download step. The download step now uses the new func packer.CachePath(targetPath) for this, the behavior is the same.
* removed download code from packer that was reimplemented into the go-getter library: progress bar, http download restart, checksuming from file, skip already downloaded files, symlinking, make a download cancellable by context.
* on windows if packer is running without symlinking rights and we are getting a local file, the file will be copied instead to avoid errors.
* added unit tests for step_download that are now CI tested on windows, mac & linux.
* files are now downloaded under cache dir `sha1(filename + "?checksum=" + checksum) + file_extension`
* since the output dir is based on the source url and the checksum, when the checksum fails, the file is auto deleted.
* a download file is protected and locked by a file lock,
* updated docs
* updated go modules and vendors
2019-03-13 12:11:58 +01:00
xinau b449af84ee moved concurrency-safe ui code to packer/ui.go 2019-02-13 21:01:50 +00:00
xinau ae59b81f44 added check for docker backend 2019-02-12 20:07:13 +00:00
xinau 36c1e8d838 moved adapter to common package 2019-02-12 07:10:57 +00:00
xinau 8526244285 changed local_port to uint representation 2019-02-12 06:32:19 +00:00
xinau c207451f7e Merge branch 'master' of https://github.com/hashicorp/packer into packer-provisioner-inspec 2019-02-12 05:32:05 +00:00
pauloj95 b1fffee614
Update guest_commands_test.go 2019-02-06 10:50:29 +00:00
pauloj95 b4d1c77cc0
Update guest_commands_test.go 2019-02-06 10:30:37 +00:00
pauloj95 d7b93aa343
add force to guestcommands test too 2019-02-06 10:27:45 +00:00
pauloj95 8d8b880ac4
add force to powershell move command
this will allow powershell move in provisioners and replace file if existing found...

issue example: https://github.com/hashicorp/packer/issues/7280
2019-02-05 17:47:00 +00:00
Rickard von Essen 52b55fb899
ansible: change local_port to uint instead of string 2019-02-04 18:47:42 +01:00
xinau f5b13e3cb5 added inspec.io provisioner 2019-01-20 15:43:47 +00:00
Adrien Delorme 9f7b4ffc17
Merge branch 'master' into pr/6950 2019-01-09 10:11:18 +01:00
Megan Marsh 5c2da6b816 fix destination pathing so that it doesnt break on windows 2019-01-03 16:03:42 -08:00
Megan Marsh 70c6fcb824
Merge pull request #7078 from aspectcapital/issue-5478
Elevated support for puppet-* & chef-client provisioners
2018-12-14 19:06:46 -08:00
mr-karan 01cdd18fd3 feat(provisioner/ansible): Provide extra SSH args
Adds `-o IdentitiesOnly=yes` as a default flag to extra vargs
in Ansible provisoner.

Closes https://github.com/hashicorp/packer/issues/5329
2018-12-14 19:07:54 +05:30
Matt Dainty 451709b956 Elevated support for chef-client provisioner
Fixes #4661
2018-12-13 10:25:12 +00:00
Megan Marsh d5854a9574 add option to test registry for certain keys to make sure windows is done with a reboot cycle 2018-12-12 12:52:14 -08:00
Adrien Delorme b7222d1f56 Add tmp package that offers Dir & File funcs
this regroups the calls of tmp func calls into one package.
the tmp pkg allows to store tmp files under a common directory for easier managment

Squashed commit of the following:
commit 74b674c01560c6b547e9cab5e8afb486f0fe7d6c
Merge: fc94b5714 66001525d
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 02:02:38 2018 -0400

    Merge branch 'remove_TMPDIR_docs' of github.com:tb3088/packer into remove_TMPDIR_docs

commit fc94b571428447aaf2e5171967c95cdf9e5c73ff
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit 5a562359f4937af506607dd96ed1c46426093f52
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 18:52:38 2018 -0400

    sync straggler to refactor. implement tests at packer/configfile instead of buried in docker.

commit 9d5a4a0935bfd049e2f8f50ad73e4455b42c9410
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

commit fbae4c2e051898aecd8705e9d8a20353430ede23
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:41:29 2018 -0400

    revise documentation to match code

commit 3590fae8bd0afa92a161a49ed794ee32e357d583
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:21:59 2018 -0400

    refacter config_file. replace all hard-coded os.TempDir with wrapper

commit d5c5306a97b648ded06a8eb76ce728f07c9924f0
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

commit 0a72297da86089fbd07e4f7d9472a92fa4d1c733
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 01:06:00 2018 -0400

    adjust var declaration scope

commit 20f68228b6c372d984ea5b055cfc8bda9b110ac5
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 00:54:35 2018 -0400

    use mktemp() equivalent to create temporary directory

commit c73ebe3d8321664a2685a0baa8e441dd895b0db4
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 20:40:58 2018 -0400

    remove extraneous variable declaration, fix FOR loop

commit 63549b8bd745a0090b15ed0b0ebf644162db27db
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:30:44 2018 -0400

    match styistic convension with rest of docs

commit 976101074942db36f10d3a686d6d29ddb7c01926
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:08:39 2018 -0400

    revert dangling config file change

commit 95159afbc05eac96ed11c3183af5fb0abe2f2d5c
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri Dec 29 23:53:43 2017 -0500

    replace invalid TMPDIR variable wth PACKER_TMP_DIR.
    update ConfigTmpDir() to try common temporary paths first and
    only write to configDir() as a last resort.

commit 66001525d72de56a4cf9339b900c46f59bc6e91a
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit e9b6adefeae8c65eb8aa47fef38cbf0aa424338c
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 18:52:38 2018 -0400

    sync straggler to refactor. implement tests at packer/configfile instead of buried in docker.

commit 852113ed076e2d14e5dca6815ea680da1e2896bb
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

commit 54add38d1d1c6e283cd444b367ed8bd49a5f3699
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:41:29 2018 -0400

    revise documentation to match code

commit 6b5b8f6d4edad0e187ca13d64ac4118f34eee643
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 07:21:59 2018 -0400

    refacter config_file. replace all hard-coded os.TempDir with wrapper

commit c22092c601c33484327674f322c7379fa41506d7
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

commit 7a730450916bf8e5dbc2a741ec233a49466ab7cc
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 01:06:00 2018 -0400

    adjust var declaration scope

commit 0f2933adb6f6922dfeab78a95371a444ec8918ab
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 00:54:35 2018 -0400

    use mktemp() equivalent to create temporary directory

commit d74839ede05dacf712b55a7bb48aec19fe6b007f
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 20:40:58 2018 -0400

    remove extraneous variable declaration, fix FOR loop

commit eb65416619437e4a3dec90277770803dd5b2281c
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:30:44 2018 -0400

    match styistic convension with rest of docs

commit acaa2b31ed463219c4ef099f351eec72406e2989
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 19:08:39 2018 -0400

    revert dangling config file change

commit e573fde668dcb418561e61535c1d68b2888f5b0f
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri Dec 29 23:53:43 2017 -0500

    replace invalid TMPDIR variable wth PACKER_TMP_DIR.
    update ConfigTmpDir() to try common temporary paths first and
    only write to configDir() as a last resort.

commit 39a9874afc9dea71b36753375fb7feb61ffecf69
Merge: 8a413cfe8 3315812c2
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Oct 30 18:19:26 2018 -0400

    Merge branch 'master' of https://github.com/hashicorp/packer into prestine

commit 8a413cfe83b0a70dbd99c32d936334ca5788ca9b
Merge: e07491de5 4e14710a6
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Mon Oct 1 20:18:10 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit e07491de59cead0b337a7f57f4a6c625e1f560ab
Merge: 42610a35d a1fa35dff
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Tue Aug 21 13:26:19 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 42610a35d5ef65af8844a58ad70e2ec75262da6a
Merge: 5298142da 0d63cf7bc
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Tue Jun 19 22:45:05 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 5298142da6da95354844f201deeeef3c599e48b2
Merge: 7bb110bc7 9d9736552
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Mon Jun 11 15:10:09 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 7bb110bc744c9797fcaec25a265d9b85a22d6d6b
Merge: a61c869ca 6189d66e7
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Wed May 9 23:41:22 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit a61c869ca7268acf0e3b1e1fa7a8ee7feea65984
Merge: 098101dd9 4be5f072c
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Fri May 4 10:13:04 2018 -0400

    Merge remote-tracking branch 'upstream/master' into prestine

commit 098101dd99f08b0ca110d33eff6904537c6d21de
Merge: fefaf0fa6 554b2b4a5
Author: Matthew Patton <matthew.patton@itgfirm.com>
Date:   Tue May 1 20:52:30 2018 -0400

    Merge branch 'EOL-handling' into prestine

Co-Authored-By: Matthew Patton <pattonme@yahoo.com>
2018-12-12 16:35:57 +01:00
Matt Dainty 19bd28cd72 Fix/add tests 2018-12-07 16:23:03 +00:00
Matt Dainty 2e4b00f59d Refactor powershell provisioner
Use the common elevated code instead.
2018-12-07 15:30:50 +00:00
Matt Dainty a42f8fac4d Elevated support for puppet-masterless provisioner
This should fix #5478.
2018-12-07 11:08:11 +00:00
Adrien Delorme 2283efff79
Merge pull request #7071 from aspectcapital/ignore-pending-reboots
Ignore an already-scheduled reboot
2018-12-07 11:03:55 +01:00
Matt Dainty 0192289d68 Drop exit code 1717 2018-12-07 09:45:50 +00:00
Matt Dainty 11be4ffc4b Attempt at generalising elevated support
Refactor puppet-server provisioner to use it.
2018-12-06 18:00:22 +00:00
Megan Marsh e69391f28b save users some bash scripting by exposing IP and port separately as well as together 2018-12-06 09:29:07 -08:00
Matt Dainty a7b407eab6 Naive support for elevated support for puppet-server provisioner
This commit just lifts the various bits out of the powershell
provisioner.
2018-12-06 15:09:57 +00:00
Matt Dainty 5fed453047 Ignore an already-scheduled reboot
If the previous provisioner already scheduled a reboot don't error we
can't schedule another one.
2018-12-05 15:43:22 +00:00
Megan Marsh fa6eb3fdea reverts 406bf9c4aad7c925c3f5a837fe7f9c71169af098; this was incorrect interpretation of the intent of the inventoryDirectory template option 2018-12-03 16:08:47 -08:00
Megan Marsh 8a7ec456f1 use error groups so we can return errors 2018-11-30 10:46:40 -08:00
Megan Marsh e6477d13fb fix empty return 2018-11-29 15:22:26 -08:00
Megan Marsh a93721c54d add disable option to breakpoint provisioner 2018-11-29 15:09:14 -08:00
Megan Marsh ba25e68fe0 add a new breakpoint provisioner 2018-11-29 14:32:52 -08:00
Matt Dainty 412119c27e Fix powershell provisioner tests 2018-11-09 14:26:21 +00:00
Matt Dainty 3b519acebc Allow Powershell provisioner to use service accounts
Fixes #6104
2018-11-08 11:48:27 +00:00
Adrien Delorme 56fd98552e
removed space 2018-10-24 15:49:49 +02:00
Mark Meyer 31afd1c2f8 Add PauseAfter option to shell provisioner
Closes #6540
2018-10-24 14:04:08 +02:00
Adrien Delorme 7c63c322c7 make provisioner/ansible/provisioner_test.go invisible to windows 2018-10-16 18:40:07 +02:00
Megan Marsh 1d1729a5ff fix powershell tests to use new command 2018-10-12 09:54:27 -07:00
Megan Marsh a81d18cdab explicitly use set-variable to work around a bug some users saw where the command invocation would vail 2018-10-12 09:15:12 -07:00
Poddo 72391f8f4d
Update provisioner.go
Remove extra break statement that made it's way into the "reboot pending" loop when some logic was rearranged in 9fa47f5dad (diff-8bb0a16231863cd1487dd9a3d3792565)
2018-10-03 00:54:31 -05:00
Megan Marsh 7597f609b1 update winrmcp vendor and update error message in file provisioner to aid user who messes up file path name. update file provisioner docs 2018-09-21 14:51:32 -07:00
Megan Marsh 3f8407d95f Revert "Merge pull request #6700 from hashicorp/multi_progressbar"
This reverts commit 5470c08345, reversing
changes made to c427486bca.
2018-09-20 13:14:17 -07:00
Adrien Delorme dfeca9f0df split progressbars per object 2018-09-12 16:21:58 -07:00
Megan Marsh a0edaf6c46 Going to revert this change for now, becuase of potential issues that arise from calling Prepare() twice
Revert "use statebag instead of SetSharedState for winRM password"

This reverts commit b35acbd879.
2018-09-10 16:48:42 -07:00
Adrien Delorme bb59a70e8f progressbar: use int64 instead of uint64
* it's what's used for file sizes and used lib
2018-09-06 16:49:15 +02:00
Adrien Delorme 5b66069da0 tests: remove Ui stubs to use packer.NoopUi to deduplicate code 2018-09-06 15:53:59 +02:00
Adrien Delorme 7efe3cac3d todos 2018-09-06 15:53:59 +02:00
Adrien Delorme 9b07d7670e use no ops for ansible ui & MachineReadableUi 2018-09-06 15:53:59 +02:00
Adrien Delorme fd7cb47adc use proxy reader for download progress & stop storing total/current in downloaders 2018-09-06 15:53:59 +02:00
Adrien Delorme ddd96c513b first draft at self refreshing loading bar centralized/controlled by Ui 2018-09-06 15:53:59 +02:00
Adrien Delorme 61480f41dc fix some go vet issues in tests ( composite literal uses unkeyed fields ) 2018-08-31 11:54:12 +02:00
Megan Marsh 266a48a73a minor fixes for shell provisioner docs and logging 2018-08-30 14:36:14 -07:00
Megan Marsh ab13c73277 make varfile name unique and make sure to remove it from guest system if cleanup is true. 2018-08-30 11:02:56 -07:00
Megan Marsh 2c9a205f11 update shell provisioner tests 2018-08-29 11:10:49 -07:00
Megan Marsh cce13e3877 shell provisioner: add option to source env vars from a file 2018-08-29 11:10:49 -07:00
Megan Marsh b35acbd879 use statebag instead of SetSharedState for winRM password 2018-08-24 13:51:16 -07:00
Megan Marsh c51cd751d1 go back to using StartWithUI to prevent weird hangs during windows reboot 2018-08-23 16:15:50 -07:00
Megan Marsh 1f79b430ee
Merge pull request #6610 from hashicorp/filter_logs
Filter logs
2018-08-23 13:30:21 -07:00
Megan Marsh c1b50d365b
Merge pull request #5851 from arizvisa/multi-proto-progressbar
Add progress-bar to common/step_download.go
2018-08-21 15:08:22 -07:00
Megan Marsh 9fa47f5dad make windows restart provisioner work with ssh communicator 2018-08-21 11:45:18 -07:00
Ali Rizvi-Santiago cf9bbe3ecf Incorporated the hack demonstrated by @SwampDragons in order to deal with packer.rpc.Ui not exporting any information about what it's doing to anybody. 2018-08-20 21:55:18 -05:00
Ali Rizvi-Santiago 5726927cba Moved the progress bar out of packer.Ui and unlinked it out of all the packer.Ui implementations. Split up the terminal-related functions into a separate terminal.go and calculate the progress bar width by traversing through packer.Ui to avoid the issue with github.com/ugorji/go/codec serializing private members (or unsafe pointers) of structs. Shuffled some arguments around in getConsoleScreenBufferInfo in common/terminal_windows.go so that the interface forces the user to correctly declare a _CONSOLE_SCREEN_BUFFER_INFO type. 2018-08-20 21:55:18 -05:00
Ali Rizvi-Santiago 0f10032b3d Moved the progress bar from common to the packer.UI interface and refactored it so that the terminal width is calculated based on each interface which returns a custom progressbar specific to its ui. 2018-08-20 21:55:18 -05:00
Ali Rizvi-Santiago fd2fef8738 Added support for the progress bar to automatically determine its width using the minimum length from a packer.UI and the terminal dimensions via kernel32.GetConsoleScreenBufferInfo or an ioctl (TIOCGWINSZ) to "/dev/tty". 2018-08-20 21:55:18 -05:00
Megan Marsh ff6a039d5b replace scrubconfig with packer.LogSecretFilter.Set
filter winrm password from logs
Add new root-level packer template option, sensitive-variables, to tell us what user variables to mark sensitive.
2018-08-20 15:35:55 -07:00
Megan Marsh eb685b7140 remove duplicate code from chef provisioner 2018-08-07 10:01:06 -07:00
Megan Marsh a5a6b1ab58
Merge pull request #6501 from Wenzel/expose_ansible_packer_http_addr
Expose ansible packer_http_addr extra var
2018-07-18 17:18:46 -07:00
Megan Marsh e146973d08 change implementation to set winrm password in way that matches powershell and shell-local implementations; sanitize logs 2018-07-17 16:39:50 -07:00
Mathieu Tarral 3450b6fd6f ansible: expose packer_http_addr extra var 2018-07-17 19:58:07 +03:00
Levi 6646d42490 updated function calls to include buildname and changed variable names 2018-07-14 14:39:38 -04:00
Levi 68ec630fde added function to retreive winrm password from commonhelper 2018-07-14 11:25:04 -04:00
Levi 636cec8f2b added commonhelper import 2018-07-14 11:25:01 -04:00
Levi 37fd50995f added parameter for setting packer password as env variable 2018-07-14 11:25:00 -04:00
DanHam 485d565e32
Ensure comments are easily readable in a standard terminal 2018-06-15 00:49:15 +01:00
DanHam e0bcba4913
Make the upload of env vars retryable in case of restarts 2018-06-15 00:09:50 +01:00
localghost e1a1bb522d Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-26 22:00:50 +02:00
localghost 263a3c6910 Include some of the refactoring reverted by previous revert commit. 2018-05-26 21:59:43 +02:00
localghost 46a1c5d945 Revert "Unify handling PlaybookFile and PlaybookFiles."
This reverts commit 81db142c8a.
2018-05-26 21:58:08 +02:00
M. Marsh 62e1323577
Merge pull request #5956 from hashicorp/dedupe_shell_local
Deduplicate the code for the shell-local post-processor and shell-local provisioner
2018-05-23 15:54:27 -07:00
localghost 6c7aa724eb Fix tests after merging with master. 2018-05-16 22:43:30 +02:00
localghost c33ca8ce64 Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-16 22:14:12 +02:00
localghost 11f2b1ec24 Merge remote-tracking branch 'origin/master' into ansible_local_playbook_files_update 2018-05-16 21:54:39 +02:00
localghost 81db142c8a Unify handling PlaybookFile and PlaybookFiles. 2018-05-16 21:54:19 +02:00
M. Marsh abb70bfa80
Merge pull request #6215 from tb3088/delay-extraArgs-4462_clean
Delay evaluation of ExtraArguments and standardize puppet-server and puppet-masterless
2018-05-08 15:03:55 -07:00
Matthew Patton d22fb6d60b reformat via gofmt 2018-05-08 12:44:15 -04:00
Matthew Patton 5c7d5fac75 expose OS-specific ModulePathJoiner 2018-05-08 12:21:04 -04:00
Matthew Patton 399edbe5e7 revert false economy WRT .ExtraArguments 2018-05-08 10:12:22 -04:00
Matthew Patton b505cecd98 sync docs to code 2018-05-08 09:53:18 -04:00
Megan Marsh 51bcc7aa13 add new feature for telling shell-local whether to use linux pathing on windows; update docs with some examples. 2018-05-07 15:10:10 -07:00
Megan Marsh e983a94a88 fix default windows bash call for shell-local provisioner and move chmod command from the execute_command array into the portion of code where we actually generate inline scripts, sparing users the need to think about this modification which Packer should really handle on its own
make bash call work on windows
2018-05-07 15:10:10 -07:00
Megan Marsh 6dc4b1cbdc move all of the run commands for shell-local provisioner and postprocessor into common library too 2018-05-07 15:10:09 -07:00
Megan Marsh 926327beba deduplicate all validation and interpolation of the shell-local config, sharing options between shell-local provisioner and post-processor. Maintain backwards compatibility with shell-local provisioner. 2018-05-07 15:10:09 -07:00
Megan Marsh 616b41e58f deduplicate the nearly identical communicators for the shell-local provisioner and post-processor, moving single communicator into a new common/shell-local module 2018-05-07 15:10:09 -07:00
M. Marsh 23e51d21c2
Merge pull request #4300 from don-code/master
Allow skipping Chef Client staging directory cleanup.
2018-05-07 14:25:57 -07:00
Megan Marsh fbbcbd772b remove file stat 2018-05-03 11:08:41 -07:00
Matthew Patton 735f5273a0 tab/space fixup via gofmt 2018-05-01 17:16:47 -04:00
Matthew Patton b2d78339b0 add missing removeDir() to allow StagingDir clean-up post-run 2018-05-01 17:04:40 -04:00
Matthew Patton 514a597825 alphabetize datastructures 2018-05-01 16:38:01 -04:00
DanHam 69ac7b56f6
Remove tmp files created by provisioner/windows-shell tests 2018-04-30 20:38:03 +01:00
DanHam b738f41efa
Remove tmp files created by provisioner/powershell tests 2018-04-30 20:38:03 +01:00
DanHam 70ccb8adff
Remove tmp files created by provisioner/puppet-server tests 2018-04-30 20:38:03 +01:00
DanHam fd07cfd2b1
Remove tmp files created by provisioner/puppet-masterless tests 2018-04-30 20:38:03 +01:00
Matthew Patton b4bec692ed remove accidental duplicate, initialize WorkingDir for puppet-server 2018-04-28 01:13:23 -04:00
Matthew Patton 47d46b0c64 use filpath() to make tests portable across Windows and non-Windows 2018-04-28 00:17:27 -04:00
Matthew Patton 8bb7798ea7 standardize across both puppet-{masterless,server}
move comments outside of datastructure

remove duplicated section

fix line-endings

Golang doesn't use C-style comments

run gofmt for alignment and whitespace management

remove danling "options" and fix class reference

syncronize tests to new command structure
2018-04-27 23:47:05 -04:00
Don Luchini edb845b3f4 Allow skipping Chef Client staging directory cleanup (fixes #3151). 2018-04-27 19:35:01 -04:00
Matthew Patton 5eb497a2c5 reorder terms and define an intermediate variable
(cherry picked from commit d0251f9741cf4d7659ecb4496d103f99a0e4184a)
(cherry picked from commit dab1b903ad88af0e3e40168634c1eb227078b4eb)
2018-04-27 18:04:36 -04:00
DanHam 7cf31060eb
Remove script containing Win-Shell inline commands from local tmp when done 2018-04-26 00:32:52 +01:00
DanHam b9ab2c8048
Remove script containing PowerShell inline commands from local tmp when done 2018-04-26 00:32:52 +01:00
DanHam ccf687dac6
Fix tests 2018-04-24 11:10:35 +01:00
DanHam 5419375413
Change to CMD % style path is no longer required 2018-04-24 11:10:35 +01:00
DanHam 5b652316d9
Dollar's in env vars used in paths may cause problems for ssh
* Dollars are interpreted by *nix shells so paths using env vars such as
  ${env:SYSTEMROOT} will cause issues
2018-04-24 11:10:35 +01:00
DanHam 4e7feea184 Allow users to specify the location that the env vars file is uploaded to
Previously the location the file was uploaded to was set internally and
used ${env:SYSTEMROOT}/Temp as the destination folder.
By default, in order to inject the required environment variables, the file
is 'dot sourced' by the 'execute_command' using the {{ .Vars }} variable.
Unfortunately the inclusion of the dollar in the path caused issues for
users connecting over ssh as the (typically bash) shell running the execute
command would try and interpret the dollar sign.
The change allows users to specify the location the file is uploaded to,
thereby allowing the user to specify a custom 'execute_command' that
escapes any dollar signs that could be present in the path.
If not set the upload path now defaults to using C:/Windows/Temp as the
upload folder.
2018-04-24 11:09:55 +01:00
Megan Marsh 3afb243f11 use build name to ensure that winrm password and other shared state is not overwritten if two builders need the password in the same packer run. 2018-04-16 13:41:17 -07:00
M. Marsh 56dd8cdb63
Merge pull request #3891 from nouney/f-generated-files
Add "generated" file tag to allow users to upload files created on the fly.
2018-04-05 16:08:38 -07:00
Omer Katz c0719a3590
Allow using a custom inventory file. 2018-04-05 12:56:07 +03:00
Joshua C. Randall 406bf9c4aa override ansible executor inventory to use InventoryDirectory instead of InventoryFile when set 2018-03-26 17:24:58 +01:00
DanHam ef4817d644 Fix vertical spacing 2018-03-23 14:01:30 +00:00
DanHam 34db6c4ab1
Remove temp debugging output 2018-03-23 12:45:49 +00:00
Megan Marsh 072cd6b745
Merge pull request #5998 from hashicorp/do_5895
allow users of AWS to use the dynamically-generated admin password wh…
2018-03-22 16:01:22 -07:00
Megan Marsh 4e321b2dfa don't need to use a receiver with this function 2018-03-22 15:55:24 -07:00
Matthew Hooker 732a532d0e
pass file info during shell file upload 2018-03-20 16:32:55 -07:00
Megan Marsh ce1ab1f021 fix winrm password 2018-03-15 09:44:22 -07:00
Megan Marsh 559719020c use {{.WinRMPassword}} instead of some other weirdness 2018-03-14 17:19:17 -07:00
Megan Marsh d689e6b4d3 allow users of AWS to use the dynamically-generated admin password which we use as the winRM password as an elevated password in the Powershell provisioner, as well as an environment variable in same provisoner. 2018-03-14 15:58:12 -07:00
Megan Marsh 414dd80e61
Merge pull request #6013 from jsoref/spelling
Spelling
2018-03-14 09:50:27 -07:00
Megan Marsh b33d6ce82e fix salt provisioner on linux 2018-03-13 16:13:23 -07:00