Commit Graph

106 Commits

Author SHA1 Message Date
Paul Hinze 73d20b4c58 providers/aws: add root_block_device to aws_instance
AWS provides a single `BlockDeviceMapping` to manage three different
kinds of block devices:

 (a) The root volume
 (b) Ephemeral storage
 (c) Additional EBS volumes

Each of these types has slightly different semantics [1].

(a) The root volume is defined by the AMI; it can only be customized
with `volume_size`, `volume_type`, and `delete_on_termination`.

(b) Ephemeral storage is made available based on instance type [2]. It's
attached automatically if _no_ block device mappings are specified, and
must otherwise be defined with block device mapping entries that contain
only DeviceName set to a device like "/dev/sdX" and VirtualName set to
"ephemeralN".

(c) Additional EBS volumes are controlled by mappings that omit
`virtual_name` and can specify `volume_size`, `volume_type`,
`delete_on_termination`, `snapshot_id`, and `encryption`.

After deciding to ignore root block devices to fix #859, we had users
with configurations that were attempting to manage the root block device chime
in on #913.

Terraform does not have the primitives to be able to properly handle a
single collection of resources that is partially managed and partially
computed, so our strategy here is to break out logical sub-resources for
Terraform and hide the BlockDeviceMapping inside the provider
implementation.

Now (a) is supported by the `root_block_device` sub-resource, and (b)
and (c) are still both merged together under `block_device`, though I
have yet to see ephemeral block devices working properly.

Looking into possibly separating out `ephemeral_block_device` and
`ebs_block_device` sub-resources as well, which seem like the logical
next step. We'll wait until the next big release for this, though, since
it will break backcompat.

[1] http://bit.ly/ec2bdmap
[2] http://bit.ly/instancestorebytype

Fixes #913
Refs #858
2015-02-18 13:15:11 -06:00
Paul Hinze c88c4a33e1 providers/aws: ignore ec2 root devices
fixes #859

EC2 root block devices are attached automatically at launch [1] and show
up in DescribeInstances responses from then on. By skipping these when
recording state, Terraform can avoid thinking there should be block
device changes when there are none.

Note this requires that https://github.com/mitchellh/goamz/pull/214 land
first so the proper field is exposed.

[1] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/RootDeviceStorage.html
2015-01-28 05:14:21 -06:00
Sander van Harmelen 57ae6a5da6 Fixing aws_instance schema
Some instance types have a block device by default. So when selecting
such an instance type, you will not set a config for the block device,
but the update/refresh func will notice one and update the state
nonetheless.

So in those cases the `block_device` becomes a `computed` field.
2014-12-25 21:58:26 +01:00
Sander van Harmelen b96f373ee9 Fixing some logic issues with the aws-instance resource
1. The schema contained a few fields that where not marked as
`computed`, while they were updated inside the resource.

2. While updating the `volume_size` it was doing so with a `string`,
but in the schema this field is set as `int`.

3. The set func for calculating the hashes for the `block` set items,
also used computed values to calculate the hash. As these values will
not be in the config, but only in the state, this will always show as a
diff. The solution is to only use the fields that aren’t computed in
order to get consistent hashes.

These where all issues before, but weren’t visible as such. All should
be good again now.
2014-12-25 18:21:05 +01:00
Armon Dadgar 7182e5618e Merge pull request #612 from MerlinDMC/feature/aws_block_device_virtual_name
allow setting the block device virtual_name
2014-12-03 12:08:07 -08:00
Armon Dadgar a2c8859f04 Merge pull request #615 from Banno/fix-aws-instance-block-devices-index-range
fixing array length for aws instance volumes
2014-12-03 12:00:31 -08:00
Luke Amdor f3ff4bece8 fixing array length for aws instance volumes 2014-11-30 08:24:23 -06:00
Sneha Somwanshi f63e032c23 Merge remote-tracking branch 'upstream/master' 2014-11-26 17:06:42 +05:30
Daniel Malon 1e3065ae11 allow setting the block device virtual_name 2014-11-22 09:50:22 +00:00
Sander van Harmelen eccd5ad308 Refactored about 90%
Still need to update 2 resources and check the acceptance tests, but
overall we’re nearly there 😃
2014-11-21 17:58:34 +01:00
sneha somwanshi 750a36c51e AWS instance resource now supports tenancy 2014-11-04 16:38:30 +05:30
Eric Buth f10e84aa16 added block_device attribute 2014-10-17 12:12:45 -04:00
Sean Herron 3e16190e69 Expands AWS tagging to cover EC2 instances 2014-10-13 16:55:59 -04:00
Mitchell Hashimoto a362a97979 providers/aws: forcenew on SGs for now [GH-299] 2014-10-10 17:14:35 -07:00
Mitchell Hashimoto 699b2efa1c providers/aws: convert aws_vpc to helper/schema 2014-10-08 16:43:13 -07:00
Mitchell Hashimoto 3941dbac5d fmt 2014-09-28 11:51:49 -07:00
Ian Delahorne 9f91c4e8c3 Add IAM Instance profile support to AWS instance provider 2014-09-23 13:06:30 -05:00
Mitchell Hashimoto 166847d5dc Merge branch 'f-state'
Conflicts:
	builtin/providers/aws/resource_aws_subnet.go
2014-09-22 08:55:44 -07:00
Alek Storm ba0591c85d Force recreation when aws_instance.private_ip changes 2014-09-18 13:26:49 -07:00
Mitchell Hashimoto c5d6df692d providers/aws: tests passing, compiles 2014-09-16 17:49:24 -07:00
Mitchell Hashimoto a5c884f5aa fmt 2014-09-09 13:43:03 -07:00
Mitchell Hashimoto 634dd7e4a3 Merge pull request #260 from jkinred/master
providers/amazon: Allow building of EC2 instances with ebs_optimized flag
2014-09-07 16:01:59 -07:00
shin1x1 781e512dde fix associate_public_ip_address parameter name 2014-09-03 20:54:36 +09:00
Jonathan Kinred 2b764de383 Allow building of EC2 instances with ebs_optimized flag 2014-09-03 20:18:40 +10:00
Mitchell Hashimoto c9a541d95b helper/schema: generate a full diff in destroy/create cycle 2014-08-27 15:45:52 -07:00
Mitchell Hashimoto b7e16c6b53 providers/aws: source_dest_check applies [GH-229] 2014-08-26 15:05:36 -07:00
Ryan Uber e530eea226 provider/aws: fix panic when user_data receives nil from StateFunc 2014-08-23 00:20:41 -07:00
Mitchell Hashimoto 8f70920c17 providers/aws: fix some other issues with aws_instance 2014-08-22 12:20:06 -07:00
Mitchell Hashimoto ba68be5672 providers/aws: use StateFunc to process the user_data 2014-08-22 08:46:48 -07:00
Mitchell Hashimoto 7be2f1b091 helper/schema: add GetOk 2014-08-21 23:03:04 -07:00
Mitchell Hashimoto 2fd2470c92 providers/aws: resource_aws_instance partially to schema.Resource 2014-08-21 18:38:43 -07:00
Alek Storm b6c5e5bbf6 Allow aws_instance private IP's to be specified 2014-08-21 17:13:36 -07:00
Danny Cosson e838624468 Allow specifying the AWS availability zone on creation 2014-07-31 13:52:03 -04:00
Jack Pearkes 86c7aeb8a6 providers/aws: use merged reosource state for associate_public_ip
cc/ @vertis
2014-07-29 10:23:48 -04:00
Luke Chadwick 974074fee9 Add associate_public_ip_address as an attribute of the aws_instance resource 2014-07-29 22:06:53 +10:00
Armon Dadgar c2677b3c0a provider/aws: More strict check 2014-07-28 12:50:19 -04:00
Armon Dadgar c8d5ea4d9d provider/aws: fixing instance for EC2-VPC /cc:@pearkes 2014-07-28 12:47:40 -04:00
Armon Dadgar bc64366a92 provider/aws: Less aggressive API rate 2014-07-28 12:10:35 -04:00
Mitchell Hashimoto a6bb0144a6 providers/aws: remove some debug 2014-07-16 16:46:28 -07:00
Mitchell Hashimoto 0d8f6645fa providers/aws/aws_instance: user_data diffs properly 2014-07-16 16:41:20 -07:00
Mitchell Hashimoto 9ec1990608 providers/aws/aws_instance: fix security group and key name issues in count 2014-07-16 15:21:01 -07:00
Mitchell Hashimoto 082790c4c1 providers/aws: basic user data, doesn't fully work yet because diffs are broke 2014-07-16 09:01:56 -07:00
Armon Dadgar 104b28e19e terraform: Remove ResourceConnectionInfo, use raw map 2014-07-15 12:34:07 -07:00
Armon Dadgar 9cd69a2b29 aws: Expose host in the ConnInfo 2014-07-15 12:34:07 -07:00
Mitchell Hashimoto 16c99e78b3 providers/aws: security_groups support 2014-07-14 21:56:37 -07:00
Mitchell Hashimoto 72b7e2c11a providers/aws/aws_instance: key_name 2014-07-14 17:52:29 -07:00
Mitchell Hashimoto 735c909264 providers/aws/aws_instance: test modifying source_dest_check 2014-07-14 17:38:56 -07:00
Mitchell Hashimoto 2fa6ca1c4e providers/aws/aws_instance: source_dest_check support 2014-07-14 14:16:59 -07:00
Mitchell Hashimoto 88dd1baafe providers/aws/aws_instance: can bring up in VPC 2014-07-14 13:46:32 -07:00
Mitchell Hashimoto 7a1c40855e providers/aws/aws_instance: add availability_zone to state 2014-07-14 13:30:01 -07:00
Jack Pearkes 0319e89281 providers/aws: remove instance_id manual storage 2014-07-07 18:08:42 -04:00
Jack Pearkes 69acd6272a providers/aws: elb instance registration 2014-07-07 10:07:06 -04:00
Mitchell Hashimoto 5d25de017c providers/aws: fix for latest ResourceBuilder API 2014-07-07 10:07:06 -04:00
Jack Pearkes fd4eeac7dc providers/aws: timeout in state change conf 2014-07-07 10:07:06 -04:00
Jack Pearkes 2663bb993a providers/aws: use wait helper 2014-07-07 10:07:06 -04:00
Jack Pearkes 4c9a4ad041 providers/aws: add elb layout, move instance into it's own namespace 2014-07-07 10:07:06 -04:00