opentofu/website
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
..
helpers Update to middleman-hashicorp 2014-10-13 12:44:38 -04:00
source providers/aws: add root_block_device to aws_instance 2015-02-18 13:15:11 -06:00
.buildpacks website: initial commit 2014-07-16 17:51:48 -04:00
config.rb Set base_url 2014-10-21 23:21:19 -04:00
config.ru website: initial commit 2014-07-16 17:51:48 -04:00
Gemfile website: don't change the Ruby version 2014-10-14 12:46:04 -07:00
Gemfile.lock Update eventmachine to a version that compiles 2015-01-22 16:09:25 -05:00
LICENSE.md website: initial commit 2014-07-16 17:51:48 -04:00
Procfile website: initial commit 2014-07-16 17:51:48 -04:00
README.md website: another touch for heroku 2014-08-06 08:57:44 -04:00
Vagrantfile website: update Vagrantfile for grunt 2014-07-26 16:26:17 -07:00

Terraform Website

This subdirectory contains the entire source for the Terraform Website. This is a Middleman project, which builds a static site from these source files.

Contributions Welcome!

If you find a typo or you feel like you can improve the HTML, CSS, or JavaScript, we welcome contributions. Feel free to open issues or pull requests like any normal GitHub project, and we'll merge it in.

Running the Site Locally

Running the site locally is simple. Clone this repo and run the following commands:

$ bundle
$ bundle exec middleman server

Then open up http://localhost:4567. Note that some URLs you may need to append ".html" to make them work (in the navigation).