terraform/website/source/docs/providers/aws/r
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
..
autoscale.html.markdown Revert "docs: consistent use of array configuration syntax" 2015-01-14 09:28:25 -08:00
db_instance.html.markdown Support storage_type parameter for aws_db_instance 2015-01-30 13:01:10 -05:00
db_parameter_group.html.markdown Implement apply_method for RDS parameters 2015-01-30 13:06:15 -05:00
db_security_group.html.markdown Revert "docs: consistent use of array configuration syntax" 2015-01-14 09:28:25 -08:00
db_subnet_group.html.markdown Revert "docs: consistent use of array configuration syntax" 2015-01-14 09:28:25 -08:00
eip.html.markdown
elb.html.markdown Clarify usage of `aws_elb` 2015-02-10 11:13:54 -05:00
instance.html.markdown providers/aws: add root_block_device to aws_instance 2015-02-18 13:15:11 -06:00
internet_gateway.html.markdown Add docs for AWS IG tags 2015-02-11 13:33:59 +00:00
key_pair.html.markdown Add docs for key_pair AWS resource 2015-01-05 21:45:05 -08:00
launch_config.html.markdown Added missing line for aws_launch_configuration resource on AWS provider docs 2015-02-05 17:05:14 +00:00
main_route_table_assoc.html.markdown providers/aws: docs for aws_main_route_table_association 2015-02-03 15:13:15 -06:00
network_acl.html.markdown website: address spelling mistakes, casing and links 2015-01-03 19:31:53 +01:00
route53_record.html.markdown Revert "docs: consistent use of array configuration syntax" 2015-01-14 09:28:25 -08:00
route53_zone.html.markdown
route_table.html.markdown allow vpc_peering_connection_id in aws_route_table 2015-02-10 17:50:29 +01:00
route_table_assoc.html.markdown
s3_bucket.html.markdown
security_group.html.markdown adding documentation 2015-02-17 13:23:10 -05:00
subnet.html.markdown
vpc.html.markdown providers/aws: docs for aws_main_route_table_association 2015-02-03 15:13:15 -06:00
vpc_peering.html.markdown allow update 2015-02-18 10:45:12 +01:00