Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

providers/aws: add root_block_device to aws_instance #998

Merged
merged 1 commit into from
Feb 18, 2015

Commits on Feb 18, 2015

  1. 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
    phinze committed Feb 18, 2015
    Configuration menu
    Copy the full SHA
    73d20b4 View commit details
    Browse the repository at this point in the history