Commit graph

292 commits

Author SHA1 Message Date
Thomas Meckel
51e5ae69db Corrected method signatures in builder\virtualbox\common\driver_mock.go 2019-07-26 12:34:26 +02:00
Thomas Meckel
ab6a163ff2 Added missing newline at end of builder\virtualbox\common\driver_mock.go 2019-07-26 12:34:25 +02:00
Thomas Meckel
e9b5332e99 Added missing functions to builder\virtualbox\common\driver_mock.go 2019-07-26 12:34:25 +02:00
Thomas Meckel
fd5a2db58f Removed commented (obsolete) code from builder\virtualbox\common\driver_4_2.go 2019-07-26 12:34:25 +02:00
Thomas Meckel
7d3c84e5f9 Changed VirtualBox VM builder according to current builder interface 2019-07-26 12:29:48 +02:00
Thomas Meckel
2ef911f6f0 Fixed bugs in snapshot and builder code 2019-07-26 12:29:47 +02:00
Thomas Meckel
ebd2780e5d implemented first unit tests for snapshot.go 2019-07-26 12:29:46 +02:00
Thomas Meckel
f1f7c4e10c * added function ParseSnapshotData to parse a string representation of a VBox snapshot tree
* fixed bugs
2019-07-26 12:29:46 +02:00
Thomas Meckel
45e2095ae3 Moved parsing of tree string representation to new function in snapshot.go 2019-07-26 12:29:45 +02:00
Thomas Meckel
092e32fe9e First version of reworked snapshot implementation 2019-07-26 12:29:45 +02:00
Thomas Meckel
a6074894f1 Defined struct and first function for enhanced snapshot handling 2019-07-26 12:29:45 +02:00
Thomas Meckel
d3202497ae First working version of virtualbox/vm builder 2019-07-26 12:29:44 +02:00
Thomas Meckel
2a531f8ad6 Merged changes from local branch 2019-07-26 12:29:44 +02:00
Adrien Delorme
74f0d56cfc virtualbox merge vbpx manage configs 2019-06-19 17:07:23 +02:00
Adrien Delorme
01eff9472a virtualbox: merge ExportOpts and ExportConfig structs 2019-06-19 16:35:15 +02:00
Adrien Delorme
c11ef90cb6 use interpolate.NewContext() instead of testConfigTemplate(t)
because it's what's happenning there
2019-06-14 12:17:28 +02:00
Adrien Delorme
4bf6a56d71 split communitacor.SSH & communitacor.WinRM to facilitate documentation
put doc for communicator into the struct
2019-06-06 16:55:24 +02:00
Adrien Delorme
4399684372 make fmt autogenerated docs 2019-06-06 16:29:25 +02:00
Adrien Delorme
e6cbb013ba add // go:generate struct-markdown to all previously edited files 2019-06-05 16:42:18 +02:00
Adrien Delorme
f1917edd34 generate the comments for config struct of builders scraping doc website 2019-06-05 16:42:17 +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
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
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
a4bf94dd3c change Builder to be passed a context for cancellation
we have to to give it to our hook
2019-04-03 15:55:55 +02:00
Megan Marsh
9f1a4e0fed
Merge pull request #7423 from hashicorp/lock_ports
Lock packer ports using a lock file
2019-03-26 10:35:18 -06:00
Adrien Delorme
5a6dffde9a use port as ints 2019-03-19 15:01:12 +01:00
Adrien Delorme
c214f6735b make everything a uint 2019-03-19 12:54:15 +01:00
Adrien Delorme
f67b5ff59d virtualbox StepConfigureVRDP: use common/net pkg to find open port 2019-03-19 12:54:15 +01:00
Adrien Delorme
59370986fb virtualbox StepForwardSSH: use common/net pkg to find open port 2019-03-19 12:54:15 +01:00
Vadym Haidamaka
414d0750f0 Add tests to validate 'none' communicator in the virtualbox builder 2019-03-16 18:18:29 +02:00
Vadym Haidamaka
0263503c45 Validate virtualbox_version_file and guest_additions_mode when communicator is none 2019-03-16 18:15:27 +02: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
Megan Marsh
3dc1dafe58
Merge pull request #7287 from stephen-fox/ephemeral-ssh-key-pair-issue-7225
virtualbox: create ephemeral SSH key pair for build process
2019-03-04 14:25:04 -08:00
Stephen Fox
7e1cbc6d89 Rename references to key pair name to comment.
Per the OpenSSH manual, the field is for a comment.
2019-03-01 10:00:29 -05:00
Stephen Fox
61a8968b22 Use 'os.OpenFile' to atomically create debug key file.
Per code review feedback.
2019-02-28 17:23:33 -05:00
Stephen Fox
094c87e395 Remove 'SSHPublicKeyUrlEncoded', use 'urlquery' instead.
Per code review feedback, the Go template library supports
encoding variables in URL query format. Instead of exposing
two different public key formats (unmodified string and a
URL encoded string), just have the user apply the 'urlquery'
modifier to their template.
2019-02-28 17:06:51 -05:00
Stephen Fox
2ef6b9247d Initial take on code review feedback from @azr.
Do not use builder pattern or interfaces; stick to structs and
some basic functions.
2019-02-25 17:16:24 -05:00
Megan Marsh
07c0c599e0 attach guest additions via SATA when necessasry 2019-02-08 09:15:15 -08:00
chris marget
53c0376dfd don't print keypair to the user's screen 2019-02-06 13:54:05 -05:00
chris marget
13cc73d600 keypair parsing and testing 2019-02-06 13:46:55 -05:00
Stephen Fox
f9d24ccda0 Allow user to get public key straight up, or URL encoded. 2019-02-05 11:59:13 -05:00
Stephen Fox
f2c11b55be Renamed authorized_keys public key function. 2019-02-04 14:27:14 -05:00
Stephen Fox
01c98f3d82 Tweaked debug SSH private key file name for vbox. 2019-02-04 12:47:18 -05:00
Stephen Fox
c6ae8654d9 Moved SSH key pair code into 'helper/ssh'. 2019-02-04 12:21:58 -05:00
Stephen Fox
25775886a8 Properly set SSH key pair name. 2019-02-04 12:12:18 -05:00
Stephen Fox
be081944b1 Moved new key pair funcs closer to builder funcs. 2019-02-04 12:09:23 -05:00
Stephen Fox
b1b67ecffa Added support for setting a name in SSH key pair.
Also refactored how new SSH key pairs are created, and how the
tests are structured.
2019-02-04 12:07:32 -05:00
Stephen Fox
5893134c61 Updated comment for 'PrivateKeyPemBlock()'. 2019-02-04 10:02:07 -05:00
Stephen Fox
72d1501551 Made SSH public key available in vbox boot command.
The SSH public key (in authorized_keys format) can be retreived in
the build template by specifying '{{ .SSHPublicKey }}'. The key is
URL encoded to escape spaces.
2019-02-03 12:20:42 -05:00
Stephen Fox
459bd1ea7a Added vbox step for SSH key pair business logic. 2019-02-03 12:07:57 -05:00
Stephen Fox
6824806e6f Allow caller to specify new line for SSH public key.
The default behavior of the various builders that create SSH key
pairs appears to be to add a trailing new line. This will be the
default behavior, but at least it can be customized if desired.
2019-02-03 10:37:32 -05:00
Stephen Fox
ad075ffac3 Added 'Description()' to 'sshKeyPair'.
Also cleaned up tests.
2019-02-03 09:17:18 -05:00
Stephen Fox
f233e54992 Initial SSH key pair helper implementation. 2019-01-30 22:10:27 -05:00
Megan Marsh
97a791389a deduplicate step_output_dir and move to common folder 2019-01-11 15:06:36 -08:00
Adrien Delorme
c8a39e939a
Merge pull request #7178 from edwardmlyte/simplify-version-check
Simplify version check for port count argument
2019-01-10 16:07:00 +01:00
Ed Maxwell-Lyte
e8e92fe6c6 rename clashing import 2019-01-09 16:30:54 +00:00
Ed Maxwell-Lyte
4437f8d8ba Use go-version for comparison 2019-01-09 16:22:33 +00:00
Ed Maxwell-Lyte
346f5d9bba Simplify version check for port count argument
Might be personal preference, but I think this reads more clearly
2019-01-09 09:46:24 +00:00
Adrien Delorme
9f7b4ffc17
Merge branch 'master' into pr/6950 2019-01-09 10:11:18 +01:00
Ed Maxwell-Lyte
4fc02ea406 Assign to existing var 2019-01-08 16:19:11 +00:00
Adrien Delorme
f91b668617
Create portCountArg in the if statement
You can't assign to something that doesn't exist

Co-Authored-By: edwardmlyte <edwardmlyte@gmail.com>
2019-01-08 16:15:24 +00:00
Ed Maxwell-Lyte
a9eed311a6 Run gofmt on driver_4_2.go 2019-01-08 15:58:12 +00:00
Ed Maxwell-Lyte
e5b1e0f4d9 Add version 0.x to the rule 2019-01-08 15:35:45 +00:00
Ed Maxwell-Lyte
e40c90423f Reverse default port count virtualbox argument
As we know the exact versions that used the old `sataportcount` option, it's safe to assume we want to use the newer `portcount` option for everything else.

Reversed the option check and use the `portcount` option by default. Prevents needing to update this for future major versions of VirtualBox.
2019-01-08 14:14:26 +00: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 74b674c015
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 fc94b57142
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit 5a562359f4
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 9d5a4a0935
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

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

    revise documentation to match code

commit 3590fae8bd
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 d5c5306a97
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

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

    adjust var declaration scope

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

    use mktemp() equivalent to create temporary directory

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

    remove extraneous variable declaration, fix FOR loop

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

    match styistic convension with rest of docs

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

    revert dangling config file change

commit 95159afbc0
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 66001525d7
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Fri Nov 2 01:42:38 2018 -0400

    update tests to honor configured temporary directory

commit e9b6adefea
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 852113ed07
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Thu Nov 1 15:39:46 2018 -0400

    insert URL to GoLang API for os.TempDir()

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

    revise documentation to match code

commit 6b5b8f6d4e
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 c22092c601
Author: Matthew Patton <mpatton@enquizit.com>
Date:   Wed Oct 31 20:11:36 2018 -0400

    close massive file overwrite hole with TempDir

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

    adjust var declaration scope

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

    use mktemp() equivalent to create temporary directory

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

    remove extraneous variable declaration, fix FOR loop

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

    match styistic convension with rest of docs

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

    revert dangling config file change

commit e573fde668
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 39a9874afc
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 8a413cfe83
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 e07491de59
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 42610a35d5
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 5298142da6
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 7bb110bc74
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 a61c869ca7
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 098101dd99
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
Megan Marsh
a819217c93 fix virtualbox 6.0 beta command options 2018-12-10 15:18:21 -08:00
Megan Marsh
6728244480 simplify for loop logic 2018-11-27 09:33:29 -08:00
Andrew Pennebaker
c05ac784d3 fix tests 2018-11-27 09:31:01 -08:00
Andrew Pennebaker
5ada3376b8 fix test 2018-11-27 09:31:01 -08:00
Andrew Pennebaker
2c989157e4 gofmt 2018-11-27 09:31:01 -08:00
Andrew Pennebaker
5b6cbeed1d expose --iso option down in VBoxManage export --iso up to virtualbox-iso configuration as "bundle_iso"; ensure ISOs are not removed when this is enabled. 2018-11-27 09:31:01 -08:00
Ali Rizvi-Santiago
0f019407d6 Updated things related to the general hw config in the virtualbox builders to correspond to @azr's suggestions. 2018-11-22 20:48:00 -06:00
Ali Rizvi-Santiago
eca26f43f2 Renamed both cpu_count and memory_size to cpus and memory (respective). 2018-11-17 06:34:22 -06:00
Ali Rizvi-Santiago
51948daf92 Added options for the cpu count, memory, audio, and usb to the virtualbox builder. 2018-11-17 06:19:54 -06:00
Adrien Delorme
410bee0666 make TestStepShutdown_shutdownDelay less strict on schedule 2018-10-17 12:49:38 +02:00
Adrien Delorme
0237956e66 builder/virtualbox/common/step_shutdown_test.go: compare durations instead of floats & ouput duration 2018-10-17 11:19:57 +02:00
Adrien Delorme
51d2aac9f6 SSHPrivateKey => SSHPrivateKeyFile 2018-08-29 14:40:32 +02:00
Megan Marsh
340363a649
Merge pull request #6613 from hashicorp/merge_ssh_config_funcs
Merge ssh config funcs from builders
2018-08-23 16:03:36 -07:00
Megan Marsh
31d4f8af45 use a time.Duration instead of a hardcoded ms 2018-08-23 13:16:01 -07:00
Megan Marsh
918db58604 added new template variables to replace PACKER_KEY_INTERVAL with tunable key and keygroup intervals depending on driver used 2018-08-22 11:37:56 -07:00
Adrien Delorme
41f6e0334d refactor all copy pasted sshConfig with into communicator.Config.SSHConfigFunc
* still need to append the auth methods into an array for gracefullness
2018-08-22 17:02:23 +02:00
Alexander Georgievskiy
ec8747a042 They finally added https on download.virtualbox.org
Because downloading SHA256SUMS via http is a fun joke
2018-06-22 00:45:20 +03:00
DanHam
13b7078cb0
Remove tmp directories created by builder/virtualbox/common tests 2018-04-30 20:38:03 +01:00
Matthew Hooker
a0c9ddb9ae
implement boot config struct for virtualbox 2018-04-19 14:26:31 -07:00
Matthew Hooker
c6299972b9
s/boot_command/bootcommand/ 2018-04-19 14:26:31 -07:00
Matthew Hooker
94129b7fe3
we're using PC-XT (set1) not PC-AT 2018-04-19 14:26:30 -07:00
Matthew Hooker
a46a7afa20
Remove old tests. 2018-04-19 14:26:29 -07:00
Matthew Hooker
81d127768c
Add key press interval to virtualbox. 2018-04-19 14:26:29 -07:00
Matthew Hooker
59376294ef
Maximize scancode throughput.
Let's cache the scancodes and flush them at the end. Also make sure to
send only as many as the driver can send correctly. It's important here
to chunk the scancodes correctly, so that we don't accidentally split them
over successive calls to the driver
2018-04-19 14:26:29 -07:00
Matthew Hooker
9b7704c714
Implement new parser for Parallels boot command 2018-04-19 14:26:29 -07:00
Matthew Hooker
99d61920d0
Abstract vbox driver into PC-AT driver. 2018-04-19 14:26:29 -07:00
Matthew Hooker
e4af71858f
Implement new parser for Virtualbox boot command
Remove boot wait for virtualbox run step
2018-04-19 14:26:29 -07:00
Matthew Hooker
673245afcf
Replace boot command parser with PEG parser. 2018-04-19 14:26:28 -07:00
Andrew Pennebaker
fdc6ac631a fix vbox scancodes and support critical key combinations during boot-time operations 2018-03-26 18:35:45 -05:00
Megan Marsh
414dd80e61
Merge pull request #6013 from jsoref/spelling
Spelling
2018-03-14 09:50:27 -07:00
Josh Soref
964d5dd55e spelling: mapstructure 2018-03-13 08:09:41 +00:00
Josh Soref
57c0e9e4a7 spelling: illegal 2018-03-13 08:02:43 +00:00
Megan Marsh
5055fa66aa
Merge pull request #5987 from mcandre/multibyte-scancodes
send multibyte scancodes accurately to virtualbox
2018-03-12 16:23:41 -07:00
Megan Marsh
2a88672cd9 add test for modifyer keypress commands 2018-03-12 15:08:30 -07:00
Andrew Pennebaker
1d48812b34 fix later commands overwriting earlier commands 2018-03-09 20:17:43 -06:00