Commit Graph

270 Commits

Author SHA1 Message Date
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
Taliesin Sisson 74255c553b Be smarter about loading guest additions iso. Windows 10 and Windows Server 2016 no longer come with iso. So default to not loading guest additions when the iso is missing 2016-12-12 22:45:22 +00:00
Taliesin Sisson 335615408a Run go fmt on files 2016-12-12 22:45:19 +00:00
Taliesin Sisson 44f73fa75f Changed ram_size_mb to ram_size 2016-12-12 22:45:18 +00:00
Taliesin Sisson fb192ce6d6 Remove unused import 2016-12-12 22:45:17 +00:00
Taliesin Sisson 04a6880361 Remove unused import 2016-12-12 22:45:17 +00:00
Taliesin Sisson 3f0835aab2 Remove headless option as it is not used. 2016-12-12 22:45:16 +00:00
Taliesin Sisson 3c1df5a791 Remove inconsistent "_mb" from ram size 2016-12-12 22:45:14 +00:00
Taliesin Sisson 0515487062 Configuration settings are no longer used 2016-12-12 22:45:13 +00:00
Taliesin Sisson 20643e35a8 Do not specify a default username or password 2016-12-12 22:45:13 +00:00
Taliesin Sisson d7117560cf We are using powershell and Msvm to send keys to virtual keyboard so update comment 2016-12-12 22:45:12 +00:00
Taliesin Sisson a27d75ff89 Fix comment left over from initial import 2016-12-12 22:45:11 +00:00
Taliesin Sisson 501845cb4f SSHKeyPath and SSHWaitTimeout have been deprecated in favor of communicator configuration 2016-12-12 22:45:10 +00:00
Taliesin Sisson c2d1f6b617 Added the ability to independently configure switch vlan. This will people to leave the switch in trunk mode and set a vlan for the vm. 2016-12-12 22:45:06 +00:00
James Johnson 48b6cc0650 Enable VlanID 2016-12-12 22:45:05 +00:00
Taliesin Sisson 9fbd1e472a Add support for mac spoofing and dynamic memory.
To enable nested virtualization, mac spoofing, no dynamic memory and at least 4gb of ram should be set for the vm. Set warning if this has not been done.
Detected Virtualization Extensions are supported by the machine your are running on, as it only works for Windows 10 and Windows Server 2016 onwards.
2016-12-12 22:45:04 +00:00
Patrick Lang 6d391fc34a Adding support for nested Hyper-V 2016-12-12 22:45:02 +00:00
Patrick Lang f94c2cd2f7 Adding nested virtualization support 2016-12-12 22:45:01 +00:00
Patrick Lang 6342e1525d s/EnabeSecureBoot/EnableSecureBoot/g 2016-12-12 22:45:01 +00:00
Taliesin Sisson 9c53df1e0e Add special key modifiers to log output when used.
Update documentation to include new key modifiers.
2016-12-12 22:44:59 +00:00
Taliesin Sisson 5f7290c6f8 Add type scan support for ctrl, shift, alt.
<leftAlt>
<leftCtrl>
<leftShift>
<rightAlt>
<rightCtrl>
<rightShift>

Add type support for combinations of ctr, alt, shift with (only use lower case characters with this):
<leftAltOn>
<leftCtrlOn>
<leftShiftOn>
<leftAltOff>
<leftCtrlOff>
<leftShiftOff>
<rightAltOn>
<rightCtrlOn>
<rightShiftOn>
<rightAltOff>
<rightCtrlOff>
<rightShiftOff>
2016-12-12 22:44:58 +00:00
Taliesin Sisson c1538c59c9 Builds in AppVeyor are failing as they do not have enough free memory. Drop the thresh hold a little more. 2016-12-12 22:44:57 +00:00
Taliesin Sisson 52c6cd5fc1 Test should run and pass even when run on an environment that does not have Powershel. 2016-12-12 22:44:53 +00:00
Taliesin Sisson 4d22bd1d4a Generate switch name using uuid v1 2016-12-12 22:44:49 +00:00
Taliesin Sisson 7c754bf791 Try to match style of other builders 2016-12-12 22:44:48 +00:00
Taliesin Sisson fb098fcbf0 http server has moved to common step 2016-12-12 22:44:47 +00:00
Taliesin Sisson d878f4dd8e A workaround for bug in Windows 10 and Windows 2016 where you have to specify a path when creating a dvd drive 2016-12-12 22:44:44 +00:00
Taliesin Sisson bda2468404 removed unused reference 2016-12-12 22:44:40 +00:00
Taliesin Sisson d1961b7c8e Echo output when its used 2016-12-12 22:44:40 +00:00
Taliesin Sisson 18241e5215 Setting boot drive is generation specific 2016-12-12 22:44:37 +00:00
Taliesin Sisson 8477a0b748 Accidentally included bracket 2016-12-12 22:44:35 +00:00
Taliesin Sisson e0c10dec12 If exit code = 1 and the length of the stderr is 0, then we can assume that the exit code was not set, so assume success 2016-12-12 22:44:34 +00:00
Taliesin Sisson fe8d99fd8a If we are not getting the exit code assigned then default to it being successful
Useful to know what the exit code is if there is an error
2016-12-12 22:44:31 +00:00
Taliesin Sisson 3cb621f890 Get rid of mount and unmount that does not specify controller location exactly
Handle cleanup if unmount step has not already done so
2016-12-12 22:44:30 +00:00
Taliesin Sisson 31ac1da28d Setting boot drive message 2016-12-12 22:44:30 +00:00
Taliesin Sisson 4b6ce3da60 Build agents might not have guest additions 2016-12-12 22:44:29 +00:00
Taliesin Sisson aaf9007249 Include cache in the state bag. 2016-12-12 22:44:28 +00:00
Taliesin Sisson 50a8d1b6b4 Forgot to check in these files. 2016-12-12 22:44:27 +00:00
Taliesin Sisson 010d171bec GuestAdditionsMode and GuestAdditionsPath can be set in config. If GuestAdditionsMode == "attach" it will mount the HyperV Integration Services ISO. If GuestAdditionsPath is set, then it will be used as an alternative to where the HyperV Integration Service ISO is.
Included the build step to download ISO, so iso_urls works properly now.
Online activation should be done via provisioner
Installation of integration services should be done via provisioner
Cleaned up the way dvd drives are mounted and unmounted (still need to implement feature to find unused drives before adding a new one)
Cleaned up the way floppies are mounted and unmounted
2016-12-12 22:44:27 +00:00
Taliesin Sisson 422efeeaf6 Make use of driver instead of directly referencing hyper
Move inline powershell to hyperv
2016-12-12 22:44:26 +00:00
Taliesin Sisson 730c6217ad Fix disk size test
Default minimum and maximum sizes were geared towards spinning up windows server instances. Linux instances are far more efficient and make do with lower requirements. Set the minimum sizes to match this.
2016-12-12 22:44:21 +00:00
Taliesin Sisson 9f94834826 Use correct formatting for printf 2016-12-12 22:44:19 +00:00
Taliesin Sisson 54733323a8 Should only default to first controller if its not 1 of the 2 controllers available 2016-12-12 22:44:18 +00:00
Taliesin Sisson c24c882b84 Use simple naming convention for now 2016-12-12 22:44:16 +00:00
Taliesin Sisson 5f2c12324c No need to remove floppy controller for 2nd generation vms
Don't want to be prompted for confirmation from powershell commandlets
2016-12-12 22:44:14 +00:00
Taliesin Sisson 837f9addd0 Check the floppy files and not the dvd files attached 2016-12-12 22:44:13 +00:00
Taliesin Sisson 4e8074d7e5 Need to expose generation as a public property 2016-12-12 22:44:13 +00:00
Taliesin Sisson e18594f404 Hyperv generation 2 machines use scsi for dvd drives. Allow gen 1 machines to have at least 1 iso image attached 2016-12-12 22:44:12 +00:00
Taliesin Sisson ef507c7bd7 Pass in any iso images to add as dvd drives during boot 2016-12-12 22:44:11 +00:00
Taliesin Sisson 3051ea6633 Quote powershell so that it does not try to interpret command to be run
Get VName out of state. This allows template replacement to be run on vmname
2016-12-12 22:44:10 +00:00
Taliesin Sisson f3cc413bbb Set the dvd to the first boot device 2016-12-12 22:44:08 +00:00
Taliesin Sisson 02db768018 With generation 2 machine by default a dvd drive is not created. So create a dvd drive for os if it does not exist.
Allow secure boot mode to be configured from config.
2016-12-12 22:44:07 +00:00
Taliesin Sisson aa1f1da1ff Support for boot_command
Setup local http server
Add compaction of hard drive
GetHostAdapterIpAddress function added for hyperv
renamed step step_start_vm to step_run to fall in ine with naming conventions of other builders
2016-12-12 22:44:07 +00:00
Taliesin Sisson 03b0698edd Remove devices after it has been shut down
Attempt to stop vm, before deleting it
2016-12-12 22:44:06 +00:00
Taliesin Sisson 2d7cfcd65d Throw error if we can't get mac or ip address during steps 2016-12-12 22:44:05 +00:00
Taliesin Sisson 87b3dec3d2 Wait until WinRM is available, before continuing with install. This is how other system like VeeWee do it.
Add support for number of cpus to use for vm
Add support for vm generation
2016-12-12 22:44:04 +00:00
Taliesin Sisson 79a5f90379 Use the convention for default vmname
Use the convention for default hdd size
Tests added for builder
2016-12-12 22:44:04 +00:00
Taliesin Sisson a42215981e The test is meant to fail if the folder already exists 2016-12-12 22:44:02 +00:00
Taliesin Sisson ca16f33fa3 Use the same configuration style as existing builders
Move builder into correctly named folder
2016-12-12 22:44:02 +00:00
Taliesin Sisson 1fe4c501e4 Port of https://github.com/pbolduc/packer-hyperv/
Remove steps that are windows specific
2016-12-12 22:44:01 +00:00