Commit Graph

2209 Commits

Author SHA1 Message Date
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
Matthew Hooker f1fb942219
add ca-central-1 to list of known aws regions.
resolves #4273
2016-12-09 11:21:44 -08:00
Matthew Hooker a46c071143
fix regex. need to account of XXhYYm etc 2016-12-08 15:12:48 -08:00
Matthew Hooker 1e96aa845b
fix wait boot_command regex.
Resolves #4268
2016-12-08 15:12:40 -08:00
Matthew Hooker d3ddd99721 Merge pull request #4163 from StackPointCloud/packer-builder-oneandone
Packer Builder 1&1
2016-12-08 14:07:35 -08:00
Dave Buckley 91562636d4 Allow reauth to keystone after token expiry 2016-12-07 01:36:10 +00:00
Rickard von Essen 5c4d331a34 Added missing LaunchPermission 2016-12-06 09:59:09 +01:00
Rickard von Essen 4ce3b8712a
Replace unencrypted EBS snapshots with encrypted
To ensure that groups and users attributes are added to the encrypted
snapshots.
2016-12-06 03:31:09 +01:00
Rickard von Essen c3a352955e amazon: Added snapshot_users and snapshot_groups 2016-12-04 16:03:01 +01:00
Ari Aviran 46f217f255 amazon - Snapshot permissions correctly applied
Fixes #3344
2016-12-04 16:03:01 +01:00
Rickard von Essen d7a7d8c852
It's not possible to share encrypted AMI's 2016-12-04 15:52:23 +01:00
Troy Toman 12f279fa79 add ability to set a different project-id for a network in the googlecloud builder 2016-12-02 15:22:36 -06:00
poida 8b13b75097 Updated documentation and error messages
The docs for kms_key_id needed to be next to encrypt_boot.

Shortened some of the kms_key_id error messages.
2016-12-03 07:49:54 +11:00
poida 7ea17e1630 Allow custom encrypted AMIs to be shared
When using a custom KMS key to encrypt the boot volume of an AMI, packer should allow it to be shared with other users.
2016-12-03 07:49:54 +11:00
poida 3eed6fd508 Added KMS CMK support to EBS builder
Added the 'kms_key_id' parameter. This supports supplying a customer master key (CMK) when encrypting the EBS volume.

The parameter is optional and only takes effect when 'encrypted' is true. When 'encrypted' is true but 'kms_key_id' is missing the 'aws/ebs' key will be used.
2016-12-03 07:49:34 +11:00
Rickard von Essen 8d2ceea5f1 builder/amazon: crash on tagging snapshot when snapshot_tags is unset
Closes #4238
2016-12-01 20:43:15 +01:00
Rickard von Essen bcc7f455b3 amazon: Fix source_ami_filter ignores owners 2016-12-01 14:29:31 +01:00
Matthew Hooker 832de2104b
Revert "Merge pull request #4230 from mitchellh/revert-4223-closes_3320"
This reverts commit bda89b0c42, reversing
changes made to f9f9d82419.
2016-11-30 13:28:34 -08:00
Matthew Hooker f5c3c25d2b Revert "Adds `force_delete_snapshot` flag" 2016-11-30 13:10:22 -08:00
Matthew Hooker f9f9d82419 Merge pull request #4223 from artburkart/closes_3320
Adds `force_delete_snapshot` flag
2016-11-30 12:53:34 -08:00
Arthur Burkart 5b59f56cdb Adds `force_delete_snapshot` flag
This PR adds the ability for Packer to clean up snapshots in addition to
deregistering AMIs at build time.

To test this, I used the following `test.json` file:

```json
{
  "builders": [
    {
      "type": "amazon-ebs",
      "region": "us-east-1",
      "source_ami": "ami-fce3c696",
      "ami_name": "packer-test",
      "instance_type": "m3.medium",
      "ssh_username": "ubuntu",
      "vpc_id": "some-vpc-id",
      "subnet_id": "some-subnet-routed-through-igw",
      "security_group_id": "some-security-group-with-port-22-access",
      "force_delete_snapshot": true
    }
  ],
  "provisioners": [
    {
      "type": "shell-local",
      "command": "echo 'hello'"
    }
  ]
}

```

I appreciate any constructive feedbakc that can be given. Cheers!
2016-11-29 23:39:36 -05:00
Rickard von Essen 99ee610afa
builder/amazon: Fix SSH Agent
Closes #4220
2016-11-29 22:33:53 +01:00
Matthew Hooker 6c546d4d1f Merge pull request #3982 from artburkart/close_1195
Support remote ova downloads
2016-11-28 18:49:50 -08:00
Matthew Hooker aedf4ca465 Merge pull request #4141 from mitchellh/ebsvoluemartifact
add ebsvolume artifact
2016-11-28 15:50:03 -08:00
Matthew Hooker 50267572a4
add ebsvolume artifact 2016-11-28 15:26:09 -08:00
Arthur Burkart 337856811e Implements OVA downloads w/local checksum support
Presumably, it is convention to store a manifest file with checksums
inside the OVA, so remote checksum support was not implemented.
2016-11-28 15:01:37 -05:00
Rickard von Essen e36b98ecd5 Merge pull request #4202 from nervo/docker-commit-changes
Introduce docker commit changes
2016-11-26 18:40:08 +01:00
Rickard von Essen a09f20f996 Merge pull request #4015 from artburkart:closes_3908
Closes #3908: Adds snapshot tag overrides
2016-11-26 17:54:00 +01:00
Arthur Burkart 0c7e73b1cf
Implements Snapshot tagging
While implementing my acceptance test, I stumbled upon a comment stating
that snapshot deletion should also be implemented, so I snuck that in. I
can't help but wonder if there is some generic logic that is implemented
a few times throughout the packer code base that could maybe better serve
us if it were abstracted to the common package.
2016-11-26 17:48:26 +01:00
Rickard von Essen 6947a74151 Merge pull request #4162 from classmarkets/google-source-image-family
builder/googlecompute: support source image family
2016-11-26 17:26:47 +01:00
Rickard von Essen d18da5e679
Added printout of select source_image 2016-11-26 15:06:43 +01:00
Rickard von Essen 17eda06d61
Fixed formatting 2016-11-24 21:12:20 +01:00
ephemeralsnow e53f4be005 Fix 'The AssociatePublicIpAddress parameter is only supported for VPC launches.' 2016-11-24 17:01:32 +01:00
Florian Rey 73c5eac4f0 Handle commit author & message the same way 2016-11-24 13:33:42 +01:00
Florian Rey 06bebb63d0 Add log 2016-11-24 13:07:01 +01:00
Florian Rey c925acf502 Introduce docker commit changes 2016-11-24 11:42:34 +01:00
Rickard von Essen 8257c2dabd Merge pull request #4172 from rickard-von-essen/default-ssh-user
ssh: Remove ssh_username default values
2016-11-17 22:40:09 +01:00
Rickard von Essen 96e9a8e6e9 Removed default value for ssh_username 2016-11-17 22:30:34 +01:00
jasminSPC 68ca7490bb Removed default value for ssh_username 2016-11-17 21:15:28 +01:00
Sander van Harmelen 285ff6940e Revert some changes made in #4149 (#4175)
After some more research and testing it turns out we can support the use case where you want to reuse an associated IP address that already has port 22 or 5985 forwarded, by using a random public port.

The correct port to open in the firewall is different for the type of firewall used. The standard firewall requires the public port to be opened and the network ACL requires the private port to be opened.

So by partially reverting this code and updating which ports to open in which cases, we can support all use cases again.
2016-11-16 10:30:32 +01:00
Arthur Burkart 2e65867cba Closes #3908: Adds snapshot tag overrides
This commit adds the ability to configure unique tags on snapshots
that are separate from the tags defined on the AMI. Anything applied
to the AMI will also be applied to the snapshots, but `snapshot_tags`
will override and append tags to the tags already applied to the snapshots
2016-11-15 23:16:27 -05:00
jasminSPC 5649940fab Removed unecessary print messages 2016-11-16 00:20:22 +01:00
jasminSPC 484960c9d1 Fixes #4169 2016-11-16 00:17:30 +01:00
Matthew Hooker 9a91ae4e8f
fix new session error when creating cred chain.
the old and deprecated method won't error and so is safe to use
even if we're not in amazon.
2016-11-14 11:39:22 -08:00
jasminSPC dc231f9600 PR remarks 2016-11-13 23:54:55 +01:00
jasminSPC 4bcba37f38 Packer Builder 1&1 2016-11-13 23:34:36 +01:00
Peter Schultz bcb319640e builder/googlecompute: support source image family
Closes #4100
2016-11-13 16:54:04 +01:00
Sander van Harmelen 68c6835bb5 Do not create a random public port (#4149)
This is meant to be a gentle solution for a very specific use case, but is causing more issues then it solves.

If you have a port conflict when trying to use an already associated public IP, the easiest way around it is to let the builder associate a new temporary public IP address.
2016-11-10 13:59:58 +01:00
nyankichi820 d1eadd91bb Fix cloudstack builder (#4139)
* add zone id when associate ip address in cloudstack

* configure keypair

* fix bug firewall port
2016-11-10 13:21:08 +01:00
Matthew Hooker d81c06765d
fix go vet issue.
closes #4130
2016-11-07 10:17:53 -08:00
febc.yamamoto 6088c1887c Fix keycodes for ctrl,shift and alt key when sending over VNC 2016-11-04 19:26:14 +09:00
Sander van Harmelen 33f430bf25 Use the private port for the firewall rules (#4114)
Because of how CloudStack configures the firerwall on the router VM, you need to allow traffic to the private port instead of the public port.
2016-11-04 09:56:49 +01:00
Matthew Hooker 5d0892bd37 Merge pull request #4101 from lwander/f-googlecompute-ssh-private-key-file
builder/googlecompute: Use ssh_private_key_file if provided
2016-11-03 11:04:02 -07:00
Lars Wander 583e341ae7 builder/googlecompute: Store empty public_key 2016-11-03 12:49:09 -04:00
Lars Wander 7f474d8f78 builder/googlecompute: Tests added 2016-11-03 12:45:52 -04:00
Scott Crunkleton 85210afe92 googlecompute: conditionally omit the wait for startup script step if no startup script is provided. 2016-11-02 15:20:21 -07:00
Lars Wander d70e783455 builder/googlecompute: Use ssh_private_key_file if provided
This seemed to be missing from the googlecompute provider. Now if the
ssh_private_key_file is provided, that will be used in place of a temporary
key. I didn't update the googlecompute specific docs under `./website/`, since
this parameter is already documented under the communicators templates page.
2016-11-02 17:04:34 -04:00
Matthew Hooker f3f5f89fe6 Merge pull request #4096 from mitchellh/filterday
builder/amazon-ebs: show ami id found from filter
2016-11-02 12:25:46 -07:00
Matthew Hooker 60c459d6c8 Merge pull request #4098 from mitchellh/newsession
aws-sdk: use session.NewSession
2016-11-02 12:25:14 -07:00
Matthew Hooker 9bc23ea512 Merge pull request #4099 from mitchellh/waitfail
Waitfail
2016-11-02 12:21:51 -07:00
James Nugent 36c09af992 builder/amazon: Add tests for the `ebs-volume` builder
These smoke tests are effectively a mirror of the EBS builder tests.
2016-11-02 12:56:39 -04:00
James Nugent b1ff8c3bfc builder/amazon: Add `ebs-volume` builder
This commit adds a builder that works like EBS builders, except does not
create an AMI, and instead is intended to create EBS volumes in an
initialized state. For example, the following template can be used to
create and export a set of 3 EBS Volumes in a ZFS zpool named `data` for
importing by instances running production systems:

```
{
	"variables": {
		"aws_access_key_id": "{{ env `AWS_ACCESS_KEY_ID` }}",
		"aws_secret_access_key": "{{ env `AWS_SECRET_ACCESS_KEY` }}",
		"region": "{{ env `AWS_REGION` }}",
		"source_ami": "{{ env `PACKER_SOURCE_AMI` }}",
		"vpc_id": "{{ env `PACKER_VPC_ID` }}",
		"subnet_id": "{{ env `PACKER_SUBNET_ID` }}"
	},
	"builders": [{
		"type": "amazon-ebs-volume",
		"access_key": "{{ user `aws_access_key_id` }}",
		"secret_key": "{{ user `aws_secret_access_key` }}",
		"region": "{{user `region`}}",
		"spot_price_auto_product": "Linux/UNIX (Amazon VPC)",

		"ssh_pty": true,
		"instance_type": "t2.medium",
		"vpc_id": "{{user `vpc_id` }}",
		"subnet_id": "{{user `subnet_id` }}",
		"associate_public_ip_address": true,
		"source_ami": "{{user `source_ami` }}",
		"ssh_username": "ubuntu",
		"ssh_timeout": "5m",

		"ebs_volumes": [
			{
				"device_name": "/dev/xvdf",
				"delete_on_termination": false,
				"volume_size": 10,
				"volume_type": "gp2",
				"tags": {
					"Name": "TeamCity-Data1",
					"zpool": "data",
					"Component": "TeamCity"
				}
			},
			{
				"device_name": "/dev/xvdg",
				"delete_on_termination": false,
				"volume_size": 10,
				"volume_type": "gp2",
				"tags": {
					"Name": "TeamCity-Data2",
					"zpool": "data",
					"Component": "TeamCity"
				}
			},
			{
				"device_name": "/dev/xvdh",
				"delete_on_termination": false,
				"volume_size": 10,
				"volume_type": "gp2",
				"tags": {
					"Name": "TeamCity-Data3",
					"zpool": "data",
					"Component": "TeamCity"
				}
			}
		]
	}],
	"provisioners": [
	{
		"type": "shell",
		"start_retry_timeout": "10m",
		"inline": [
			"DEBIAN_FRONTEND=noninteractive sudo apt-get update",
			"DEBIAN_FRONTEND=noninteractive sudo apt-get install -y zfs",
			"lsblk",
			"sudo parted /dev/xvdf --script mklabel GPT",
			"sudo parted /dev/xvdg --script mklabel GPT",
			"sudo parted /dev/xvdh --script mklabel GPT",
			"sudo zpool create -m none data raidz xvdf xvdg xvdh",
			"sudo zpool status",
			"sudo zpool export data",
			"sudo zpool status"
		]
	}
	]
}
```

StepModifyInstance and StepStopInstance are now shared between EBS and
EBS-Volume builders - move them into the AWS common directory and rename
them to indicate that they only apply to EBS-backed builders.
2016-11-02 12:56:39 -04:00
Matthew Hooker d47e47cf1f rewrite to not use private aws package 2016-11-01 18:29:18 -07:00
Matthew Hooker c4c46c349e implement security group waiter 2016-11-01 18:10:42 -07:00
Matthew Hooker 970b37077e Merge pull request #4050 from jen20/ssh-agent
builder/amazon: Allow use of local SSH Agent
2016-11-01 17:27:37 -07:00
Matthew Hooker 48bdae93d1 aws-sdk: use session.NewSession 2016-11-01 15:53:04 -07:00
Matthew Hooker 83b57b98ac show ami id found from filter 2016-11-01 15:26:43 -07:00
Matthew Hooker d920b3fbf4 run gofmt 2016-11-01 14:08:04 -07:00
Matthew Hooker 0dd7d7ff3b fix error message 2016-10-31 16:44:18 -07:00
Ganesh kumar Sankaran b9c6139d67 AWS async operations sometimes takes long times, if there are multiple parallel builds, polling at 2 second frequency will exceed the request limit. Allow 2 seconds to be overwritten with AWS_POLL_DELAY_SECONDS 2016-10-31 16:44:18 -07:00