Commit Graph

209 Commits

Author SHA1 Message Date
DanHam 00276f2f64
Change step name to better illustrate purpose of step 2018-07-20 02:12:45 +01:00
DanHam b386e567db
Change filename to better illustrate purpose of step 2018-07-20 02:12:45 +01:00
DanHam d2390f464d
Actually implement the function for the driver 2018-07-20 02:12:45 +01:00
DanHam 181bb0ba23
Add calling code and skeleton driver to make tests pass 2018-07-20 02:12:45 +01:00
DanHam 0a4ec13323
Tests for func to move VHDs to output dir when skip_export: true 2018-07-20 02:12:44 +01:00
DanHam 32148168bd
Introduce a new step to collate build artifact at the end of the build
The new step collects together all the required build artifacts and
places them in the output directory.

* Reintroduce/add the code removed from step export to preserve the
  legacy export directory structure when skip_export is unset/false
* Add a place holder for a future function that will move just the VHD
  files from the build directory to the output directory when
  skip_export is true
* Add tests for current functionality and placeholder tests for future
  functions
2018-07-20 02:12:44 +01:00
DanHam ee7fa27ada
Fix up tests. Ensure export step stores the export path in state 2018-07-20 02:12:44 +01:00
DanHam 232dd8f0a6
Remove code to preserve legacy export dir structure from the export step
Store the export path in the state bag in preparation for use in a later
step
2018-07-20 02:12:44 +01:00
DanHam c2437ba592
Remove the option to place the VHD files in a separate directory
The export process now exports the VM directly from the build directory
into the output directory. There are no intermediate steps or copying of
files involved. This means that there is no longer any benefit in having
a separate directory to house the VHD files - see #5206 for the
reasoning behind the introduction of this feature.

If a user wishes to house the build files on a separate disk from the
output directory (perhaps for performance reasons or due to disk space
limitations) they can still do so through the use of `temp_path`.
2018-07-20 02:12:43 +01:00
DanHam d5d82c32b2
Changes to the export process have made 'inline' build of disks redundant
PR #5631 introduced code to build/create disks directly in the output
directory if `skip_export` was set in an attempt to optimise the build
process. These are no longer required.
2018-07-20 02:12:43 +01:00
DanHam 35b4e87c42
Add tests for export VM step 2018-07-20 02:12:43 +01:00
DanHam 30a71da8e7
Add tests for disk compaction step 2018-07-20 02:12:43 +01:00
DanHam 09028c14a3
Reintroduce the disk compaction process as a unique step 2018-07-20 02:12:43 +01:00
DanHam da2df69301
Remove disk compaction from the export step 2018-07-20 02:12:42 +01:00
DanHam c6b9d9ce90
Add checks/error reporting to compaction process
* Report compaction results
* Failure to find any disks under the supplied path is treated as a
  'soft' error and a warning message will be printed in place of the
  compaction result. Any other failure will cause the build to fail.
2018-07-20 02:12:42 +01:00
DanHam 534fc4a473
Ensure the export directory structure matches that of previous versions
Commit 3fc2defb6 altered the directory structure associated with an
exported VM. The changes mean that the export process now stores the
exported machine files and folders under a folder with name 'vm_name' in
the output directory.
This commit restores the previous behaviour whereby the exported machine
files and folders were stored directly in the output directory. This
allows us to keep the efficiency improvements introduced with 3fc2defb6
while maintaining backward compatibility.

By default the Export-VM command creates three folders in the specified
export directory - 'Virtual Hard Disks', 'Virtual Machines' and
'Snapshots'. When a machine with no associated snapshots is exported the
'Snapshots' directory is empty.
Prior to 3fc2defb6 the Snapshots folder was not copied/incorporated into
the output directory at all. This was a bug.
This commit preserves the legacy behaviour by not including an empty
Snapshots directory in the export. However, if there *are* Snapshots
associated with the VM, they are now moved into the output directory
along with the usual directories containing disks and VM metadata. This
prevents warnings/errors on import due to missing snapshots.
2018-07-20 02:09:57 +01:00
DanHam dc46848f89
Remove now redundant function to copy exported VM files 2018-07-20 02:09:57 +01:00
DanHam 3fc2defb6d
Refactor the export step for Hyper-V ISO and VMCX builders
* Fixes a bug that caused the build to error if users did not
  explicitly set `skip_compaction:true` when setting `skip_export:
  true`. See #6392.
* Improves the efficiency of the compaction and export process by
  reordering the compaction and export steps.
* Further improves the efficiency of the compacting step through
  compacting the vmd* file directly rather than creating and then
  operating on a copy.
* The changes mean the export process now stores the exported machine
  files and folders under a folder with name 'vm_name' in the output
  directory. Previously the exported machine files and folders were
  stored directly in the output directory.
2018-07-20 02:09:54 +01:00
Unknown 5710c0aca1 Making log output clearer for hyper-v gui connection 2018-05-14 20:53:51 +10:00
Unknown 29c4b4436d Changes requested in PR #6243
- Logging error if vmconnect.exe fails.
- Using StepRun struct rather than StateBag for command Cancel function
- Better handling in Disconnect when headless is true or vmconnect failed in Start
2018-05-14 20:52:10 +10:00
Unknown fc734b6bd9 Using vmconnect to display gui for hyper-v
vmconnect.exe comes as part of Hyper-V and is the tool used by Hyper-V Manager to connect with a virtual machine. This commits sets behaviour the same as virtualbox and vmware to display the virtual machine connection unless headless is set in the template.
2018-05-14 20:52:10 +10:00
M. Marsh 5871b8242b
Merge pull request #6101 from adarobin/azurecompatible
Add use_fixed_vhd_format Hyper-V ISO option
2018-05-10 17:02:44 -07:00
Stefan Henseler 6f00596053 Adds config option to specify hyper-v secure boot template 2018-05-10 19:00:35 +02:00
Adam Robinson 3aebd5f462 Add use_fixed_vhd_format Hyper-V ISO option 2018-04-26 13:35:19 -04:00
Matthew Donoughe ef03e97dc3 pass MacAddress to StepCreateVM 2018-04-24 20:39:42 -04:00
Matthew Hooker 1d36ef038c
implement boot config struct for hyperv 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 bdb1eee7d8
Implement new parser for HyperV boot command 2018-04-19 14:26:29 -07:00
M. Marsh f5c031baf9
Merge pull request #5941 from synax/hyper-v-disk-block-size
Adds Support to configure hyper-v disk block size
2018-04-19 11:27:52 -07:00
Josh Soref cab8b6ed68 spelling: maximum 2018-03-13 08:10:20 +00:00
Josh Soref 62f59662a3 spelling: installation 2018-03-13 08:04:40 +00:00
Josh Soref 60ef3c3374 spelling: directories 2018-03-13 07:37:32 +00:00
Josh Soref efb525f03d spelling: creating 2018-03-13 07:22:37 +00:00
Stefan Henseler 103186af86 Adds Support to configure hyper-v disk block size 2018-02-23 20:19:26 +01:00
Ben Phegan 3c88e787df
Merge branch 'master' into hyperv_mac_address 2018-02-02 09:26:52 +11:00
SwampDragons 6d14eb6ea4
Merge pull request #5631 from vijayinvites/diffdisks
[Hyper-V] Use differential disks and Inline disk creation to improve build time (a lot) and to reduce disk usage(a lot)
2018-01-31 16:51:27 -08:00
Matthew Hooker 8cd403425e
test fixes WIP 2018-01-24 17:09:17 -08:00
Matthew Hooker 7a189a83a1
fix imports
`find . -type f -name '*.go' -not -path "./vendor/*" -exec goimports -w {} \;`
2018-01-24 17:09:17 -08:00
Matthew Hooker a831d522be
change run signatures
Run now takes a context as well as a statebag. We'll assign the context
to the blank identifier to prevent namespace collisions. We'll let the
step authors opt-in to using the context.

`find . -iname "step_*.go" -exec gsed -i'' 's/func \(.*\)Run(/func \1Run(_ context.Context, /' {} \;`
2018-01-24 17:09:17 -08:00
Matthew Hooker 366dc3da0a
move multistep imports to helper.
gomvpkg -from "github.com/mitchellh/multistep" -to "github.com/hashicorp/packer/helper/multistep"
2018-01-24 17:09:15 -08:00
Matthew Hooker ebe995c0ff
run goimports 2018-01-22 17:21:10 -08:00
Ben Phegan c338cb79d0 Initial commit of feature to allow MAC address specification for HyperV builders 2017-12-15 13:24:15 +11:00
Vijaya Bhaskar Reddy Kondreddi 54f059d3d4 Add support for skip export 2017-12-11 11:24:59 +05:30
Vijaya Bhaskar Reddy Kondreddi 3d5303c60d Fix tests 2017-11-24 13:24:44 +05:30
Vijaya Bhaskar Reddy Kondreddi b7e3f37b44 Add support for differential disk 2017-11-24 12:44:53 +05:30
Megan Marsh 20390ff1ec fix vetting for test fail print statements 2017-11-15 17:01:53 -08:00
Erlend Graff 27fc72c137 fix formatting errors 2017-11-05 15:16:47 +01:00
Erlend Graff ae6987c74b hyper-v: add test for hashicorp/packer#5184 2017-11-05 14:58:08 +01:00
Erlend Graff eeeee3ec35 hyper-v/vmcx: add missing InterpolateContext 2017-11-05 14:55:56 +01:00
Erlend Graff d890051940 hyper-v: implement driver mock 2017-11-05 14:51:18 +01:00
Matthew Hooker 19e6049f17
style fixes 2017-10-31 08:48:17 -07:00
Matthew Hooker f64fa7b5ba
Merge pull request #5491 from BenPhegan/hyperv-disk_additional_size
Hyper-V disk_additional_size capability
2017-10-31 08:42:07 -07:00
Matthew Hooker 794e518eb7
use hyper-v admin group, not admin 2017-10-25 13:29:03 -07:00
Matthew Hooker 812fd12a0b
move trimspace to powershell exit check 2017-10-25 13:28:59 -07:00
Matthew Hooker 0be02ab217
hyper-v: Don't error while checking for admin permissions. 2017-10-25 09:18:40 -07:00
Ben Phegan 12fc928e1d Initial commit of Hyper-V disk_additional_size capability. Support a
maximum of 64 disks added to the SCSI controller.  Implement #4823.
2017-10-23 08:26:35 +11:00
Vijaya Bhaskar Reddy Kondreddi 4f6a207441 go fmt 2017-10-11 22:10:39 +05:30
Matthew Hooker 2655cf7493 fix tests 2017-10-11 22:05:53 +05:30
Matthew Hooker 91d66fb67c use new method of building runner 2017-10-11 22:05:52 +05:30
Matthew Hooker d8c6e6d4a4 remove duplicate line 2017-10-11 22:05:52 +05:30
Matthew Hooker 7978fd8ec0 make fmt 2017-10-11 22:05:52 +05:30
Taliesin Sisson 5f2c71f7d7 Floppy directories are provided by default with common.floppydrives 2017-10-11 22:05:52 +05:30
Taliesin Sisson 2fbe0b4a7f Don't try to mount vhd and vhdx files as dvd drive. Hard drives are mounted in the create vm step 2017-10-11 22:05:52 +05:30
Taliesin Sisson 628116f4c4 Test settings for clone from vm and import vmxc from path 2017-10-11 22:05:52 +05:30
Taliesin Sisson 8232759397 If vhd or vhdx extension is specified for ISOUrls, we want to use an existing hard drive which means that we don't need to specify hard drive size
Filepath.ext includes the dot
2017-10-11 22:05:51 +05:30
Taliesin Sisson 3d0ac529e0 use common floppy_config instead of builder specific one
Add tests for floppy files and comm
2017-10-11 22:05:51 +05:30
Taliesin Sisson efa62e1550 Can specify an iso, vhd or vhdx for download. If it is a vhd or vhdx it is used as the hard drive for spinning up a new machine, importing an exported virtual machine or cloning a virtual machine.
Can import a virtual machine from a folder
Can clone an existing virtual machine
2017-10-11 22:05:45 +05:30
Taliesin Sisson 452fcbd9a1 Only attach dvd drive if there is one
Fix debug messages for cloning

Add hyperv-vmcx as a builder from command line
2017-10-11 21:42:32 +05:30
Taliesin Sisson 429e1bc3ad Adding an ISO is now optional for hyperv vmcx
Add documentation for hyperv vmcx
2017-10-11 21:42:32 +05:30
Taliesin Sisson 6fd7f0877d Initial check in to add a builder that can clone existing hyper v machines 2017-10-11 21:42:32 +05:30
Matthew Hooker eb64920e80 Merge pull request #5206 from sandersaares/hyperv-second-temp-dir
(Hyper-V) Enable a separate directory to be used for temporary VHDs
2017-10-09 10:08:00 -07:00
Bastian Schmidt c1aba87b39 Fixes #4880 by always using EnableDynamicMemory
This was needed because the default in Hyper-V on Windows 10 changed from "false" to "true".
2017-09-20 14:53:37 +02:00
Sander Saares 2a1a9a55f8 Clean up both VHD and regular temp dir 2017-09-02 14:55:00 +03:00
Sander Saares 028c941b77 Enable use of separate temp path for Hyper-V VHD 2017-09-02 14:55:00 +03:00
Vijaya Bhaskar Reddy Kondreddi e45223a867 Fix -on-error issue not working.
When we supply -on-error flag for Packer with Hyper-v builder, it does not do anything.
2017-09-01 00:14:28 +05:30
Tobias ada8902721 fix formatting 2017-08-08 13:21:53 +00:00
Tobias eafaaa881f builder/hyperv/iso: missing InterpolateContext 2017-07-27 16:57:02 +02:00
Taliesin Sisson 2325c1ee58 Merge pull request #5085 from Lee303/builder-hyperv-temppath
Hyper-V Builder - Add support for temp_path directive to override system %temp%
2017-07-01 06:58:01 +01:00
Taliesin Sisson d569a1b879 Merge pull request #5014 from Lee303/builder-hyperv-floppydirs
Add support for floppy_dirs with hyperv-iso builder
2017-07-01 06:52:36 +01:00
Lee 0680cb08e5 Add support for temp_path directive to override systemp %temp% 2017-07-01 00:19:27 +01:00
Wojciech Sciesinski 7bacc22825 Verify membership in the group Hyper-V Administrators by SID not name - fix #5022 2017-06-28 01:44:04 +02:00
Lee Spottiswood 4d394033d2 add tests 2017-06-20 12:21:07 +01:00
Lee Spottiswood f95093ef63 Add support for floppy_dirs with hyperv-iso builder 2017-06-15 13:12:39 +01:00
JD Friedrikson a0052fdb68
Specify InsecureIgnoreHostKey for HostKeyCallback
[A recent breaking change upstream in Golang's crypto
library](e4e2799dd7)
has broken SSH connectivity for a few builders:

```
==> qemu: Waiting for SSH to become available...
2017/05/20 16:23:58 ui: ==> qemu: Waiting for SSH to become available...
2017/05/20 16:23:58 packer: 2017/05/20 16:23:58 [INFO] Attempting SSH connection...
2017/05/20 16:23:58 packer: 2017/05/20 16:23:58 reconnecting to TCP connection for SSH
2017/05/20 16:23:58 packer: 2017/05/20 16:23:58 handshaking with SSH
2017/05/20 16:23:58 packer: 2017/05/20 16:23:58 handshake error: ssh: must specify HostKeyCallback
2017/05/20 16:23:58 packer: 2017/05/20 16:23:58 [DEBUG] SSH handshake err: ssh: must specify HostKeyCallback
2017/05/20 16:24:05 packer: 2017/05/20 16:24:05 [INFO] Attempting SSH connection...
2017/05/20 16:24:05 packer: 2017/05/20 16:24:05 reconnecting to TCP connection for SSH
2017/05/20 16:24:05 packer: 2017/05/20 16:24:05 handshaking with SSH
2017/05/20 16:24:05 packer: 2017/05/20 16:24:05 handshake error: ssh: must specify HostKeyCallback
2017/05/20 16:24:05 packer: 2017/05/20 16:24:05 [DEBUG] SSH handshake err: ssh: must specify HostKeyCallback
```

Specifying HostKeyCallback as insecure should make things work again
and would make sense for packer's use case.
2017-05-20 16:17:04 -04:00
Matthew Hooker bc3510b473
fix spelling
closes #4767
2017-04-05 12:01:02 -07:00
Matthew Hooker 81522dced0
move packer to hashicorp 2017-04-04 13:39:01 -07:00
Matthew Hooker 35578d9ed1
remove unnecessary type conversions 2017-03-28 20:36:21 -07:00
Matthew Hooker d1b20b3d9c
remove a bunch of dead code.
https://github.com/dominikh/go-tools/tree/master/cmd/unused
2017-03-28 20:36:20 -07:00
Matthew Hooker 8b763032ce
builder/hyper-v don't wait for shutdown to return.
Mirrors work done in #4436
2017-03-20 15:32:42 -07:00
Matthew Hooker 597b7ad8c5
builder/hyper-v: validate output dir in step, not in config
essentially same work as #2233
2017-03-08 23:52:34 -08:00
Matthew Hooker c5ddbacb62 Merge pull request #4318 from Tadas/fix-hyperv-admin
Check for 'Hyper-V Administrators' security group
2017-03-08 23:35:17 -08:00
Matthew Hooker 22d1322bd9
always check for an error first when walking a path 2017-01-26 16:32:21 -08:00
Matthew Hooker d2e59e4e92
set PACKER_HTTP_ADDR env var when available.
If using a builder that has an http server set up for file transfer,
expose the connection info to the shell provisioner through the environment
variable PACKER_HTTP_ADDR.

Closes #2869
2017-01-16 23:19:52 -08:00
Tadas Medisauskas 4939ea1a3b Add support for Hyper-V admins security group 2016-12-22 14:59:25 +00:00
Mikhail Zholobov 57d07f227a
Add "iso_target_extension" option for all local *-iso builders
This option allows to set the extension of the ISO file after download.
Defaults to "iso". It makes sense for building Mac OS X guests, where the
bootable image is actually a DMG, not an ISO.
In particular, it is important for "parallels-iso" builder to set the right extension.
2016-12-17 12:50:30 +02:00
Matthew Hooker 45d4cf8b36
move powershell module to common 2016-12-12 18:34:15 -08:00
Matthew Hooker 5e324d6bb4
apply #4041 to hyperV builder 2016-12-12 18:34:15 -08:00
Taliesin Sisson e50fe9fd54 Porting over paulmey changes to license and copyright headers. Good guy Microsoft have changed the licensing to MPL2 and removed the copyright headers so that we can include it in the official Packer release.
1ce6ba91f7?diff=unified#diff-5d60887f0940c9f8d6724e59843ac1fb
2016-12-12 22:45:24 +00:00
Taliesin Sisson e357c56186 Builders don't need to set this up anymore 2016-12-12 22:45:23 +00:00