github.com/rmenn/terraform@v0.3.8-0.20150225065417-fc84b3a78802/CHANGELOG.md (about)

     1  ## 0.4.0 (unreleased)
     2  
     3  FEATURES:
     4  
     5    * **Self-variables** can be used to reference the current resource's
     6        attributes within a provisioner. Ex. `${self.private_ip_address}` [GH-1033]
     7    * **Continous state** saving during `terraform apply`. The state file is
     8        continously updated as apply is running, meaning that the state is
     9        less likely to become corrupt in a catastrophic case: terraform panic
    10        or system killing Terraform.
    11  
    12  IMPROVEMENTS:
    13  
    14    * **New config function: `split`** - Split a value based on a delimiter.
    15        This is useful for faking lists as parameters to modules.
    16    * core: The serial of the state is only updated if there is an actual
    17        change. This will lower the amount of state changing on things
    18        like refresh.
    19  
    20  BUG FIXES:
    21  
    22    * core: module outputs can be used as inputs to other modules [GH-822]
    23    * core: Self-referencing splat variables are no longer allowed in
    24        provisioners. [GH-795][GH-868]
    25    * core: Validate that `depends_on` doesn't contain interpolations. [GH-1015]
    26    * core: Module inputs can be non-strings. [GH-819]
    27    * providers/aws: manually deleted VPC removes it from the state
    28    * providers/aws: `source_dest_check` regression fixed (now works). [GH-1020]
    29  
    30  ## 0.3.7 (February 19, 2015)
    31  
    32  IMPROVEMENTS:
    33  
    34    * **New resources: `google_compute_forwarding_rule`, `google_compute_http_health_check`,
    35        and `google_compute_target_pool`** - Together these provide network-level
    36        load balancing. [GH-588]
    37    * **New resource: `aws_main_route_table_association`** - Manage the main routing table
    38        of a VPC. [GH-918]
    39    * **New resource: `aws_vpc_peering_connection`** [GH-963]
    40    * core: Formalized the syntax of interpolations and documented it
    41        very heavily.
    42    * core: Strings in interpolations can now contain further interpolations,
    43        e.g.: `foo ${bar("${baz}")}`.
    44    * provider/aws: Internet gateway supports tags [GH-720]
    45    * provider/aws: Support the more standard environmental variable names
    46        for access key and secret keys. [GH-851]
    47    * provider/aws: The `aws_db_instance` resource no longer requires both
    48        `final_snapshot_identifier` and `skip_final_snapshot`; the presence or
    49        absence of the former now implies the latter. [GH-874]
    50    * provider/aws: Avoid unecessary update of `aws_subnet` when
    51        `map_public_ip_on_launch` is not specified in config. [GH-898]
    52    * provider/aws: Add `apply_method` to `aws_db_parameter_group` [GH-897]
    53    * provider/aws: Add `storage_type` to `aws_db_instance` [GH-896]
    54    * provider/aws: ELB can update listeners without requiring new. [GH-721]
    55    * provider/aws: Security group support egress rules. [GH-856]
    56    * provider/aws: Route table supports VPC peering connection on route. [GH-963]
    57    * provider/aws: Add `root_block_device` to `aws_db_instance` [GH-998]
    58    * provider/google: Remove "client secrets file", as it's no longer necessary
    59        for API authentication [GH-884].
    60    * provider/google: Expose `self_link` on `google_compute_instance` [GH-906]
    61  
    62  BUG FIXES:
    63  
    64    * core: Fixing use of remote state with plan files. [GH-741]
    65    * core: Fix a panic case when certain invalid types were used in
    66        the configuration. [GH-691]
    67    * core: Escape characters `\"`, `\n`, and `\\` now work in interpolations.
    68    * core: Fix crash that could occur when there are exactly zero providers
    69        installed on a system. [GH-786]
    70    * core: JSON TF configurations can configure provisioners. [GH-807]
    71    * core: Sort `depends_on` in state to prevent unnecessary file changes. [GH-928]
    72    * core: State containing the zero value won't cause a diff with the
    73        lack of a value. [GH-952]
    74    * core: If a set type becomes empty, the state will be properly updated
    75        to remove it. [GH-952]
    76    * core: Bare "splat" variables are not allowed in provisioners. [GH-636]
    77    * core: Invalid configuration keys to sub-resources are now errors. [GH-740]
    78    * command/apply: Won't try to initialize modules in some cases when
    79        no arguments are given. [GH-780]
    80    * command/apply: Fix regression where user variables weren't asked [GH-736]
    81    * helper/hashcode: Update `hash.String()` to always return a positive index.
    82        Fixes issue where specific strings would convert to a negative index
    83        and be ommited when creating Route53 records. [GH-967]
    84    * provider/aws: Automatically suffix the Route53 zone name on record names. [GH-312]
    85    * provider/aws: Instance should ignore root EBS devices. [GH-877]
    86    * provider/aws: Fix `aws_db_instance` to not recreate each time. [GH-874]
    87    * provider/aws: ASG termination policies are synced with remote state. [GH-923]
    88    * provider/aws: ASG launch configuration setting can now be updated in-place. [GH-904]
    89    * provider/aws: No read error when subnet is manually deleted. [GH-889]
    90    * provider/aws: Tags with empty values (empty string) are properly
    91        managed. [GH-968]
    92    * provider/aws: Fix case where route table would delete its routes
    93        on an unrelated change. [GH-990]
    94    * provider/google: Fix bug preventing instances with metadata from being
    95        created [GH-884].
    96  
    97  PLUGIN CHANGES:
    98  
    99    * New `helper/schema` type: `TypeFloat` [GH-594]
   100    * New `helper/schema` field for resources: `Exists` must point to a function
   101        to check for the existence of a resource. This is used to properly
   102        handle the case where the resource was manually deleted. [GH-766]
   103    * There is a semantic change in `GetOk` where it will return `true` if
   104        there is any value in the diff that is _non-zero_. Before, it would
   105        return true only if there was a value in the diff.
   106  
   107  ## 0.3.6 (January 6, 2015)
   108  
   109  FEATURES:
   110  
   111    * **New provider: `cloudstack`**
   112  
   113  IMPROVEMENTS:
   114  
   115    * **New resource: `aws_key_pair`** - Import a public key into AWS. [GH-695]
   116    * **New resource: `heroku_cert`** - Manage Heroku app certs.
   117    * provider/aws: Support `eu-central-1`, `cn-north-1`, and GovCloud. [GH-525]
   118    * provider/aws: `route_table` can have tags. [GH-648]
   119    * provider/google: Support Ubuntu images. [GH-724]
   120    * provider/google: Support for service accounts. [GH-725]
   121  
   122  BUG FIXES:
   123  
   124    * core: temporary/hidden files that look like Terraform configurations
   125        are no longer loaded. [GH-548]
   126    * core: Set types in resources now result in deterministic states,
   127        resulting in cleaner plans. [GH-663]
   128    * core: fix issue where "diff was not the same" would come up with
   129        diffing lists. [GH-661]
   130    * core: fix crash where module inputs weren't strings, and add more
   131        validation around invalid types here. [GH-624]
   132    * core: fix error when using a computed module output as an input to
   133        another module. [GH-659]
   134    * core: map overrides in "terraform.tfvars" no longer result in a syntax
   135        error. [GH-647]
   136    * core: Colon character works in interpolation [GH-700]
   137    * provider/aws: Fix crash case when internet gateway is not attached
   138        to any VPC. [GH-664]
   139    * provider/aws: `vpc_id` is no longer required. [GH-667]
   140    * provider/aws: `availability_zones` on ELB will contain more than one
   141        AZ if it is set as such. [GH-682]
   142    * provider/aws: More fields are marked as "computed" properly, resulting
   143        in more accurate diffs for AWS instances. [GH-712]
   144    * provider/aws: Fix panic case by using the wrong type when setting
   145        volume size for AWS instances. [GH-712]
   146    * provider/aws: route table ignores routes with 'EnableVgwRoutePropagation'
   147        origin since those come from gateways. [GH-722]
   148    * provider/aws: Default network ACL ID and default security group ID
   149        support for `aws_vpc`. [GH-704]
   150    * provider/aws: Tags are not marked as computed. This introduces another
   151        issue with not detecting external tags, but this will be fixed in
   152        the future. [GH-730]
   153  
   154  ## 0.3.5 (December 9, 2014)
   155  
   156  FEATURES:
   157  
   158   * **Remote State**: State files can now be stored remotely via HTTP,
   159       Consul, or HashiCorp's Atlas.
   160   * **New Provider: `atlas`**: Retrieve artifacts for deployment from
   161       HashiCorp's Atlas service.
   162   * New `element()` function to index into arrays
   163  
   164  IMPROVEMENTS:
   165  
   166    * provider/aws: Support tenancy for aws\_instance
   167    * provider/aws: Support block devices for aws\_instance
   168    * provider/aws: Support virtual\_name on block device
   169    * provider/aws: Improve RDS reliability (more grace time)
   170    * provider/aws: Added aws\_db\_parameter\_group resource
   171    * provider/aws: Added tag support to aws\_subnet
   172    * provider/aws: Routes in RouteTable are optional
   173    * provider/aws: associate\_public\_ip\_address on aws\_launch\_configuration
   174    * provider/aws: Added aws\_network\_acl
   175    * provider/aws: Ingress rules in security groups are optional
   176    * provider/aws: Support termination policy for ASG
   177    * provider/digitalocean: Improved droplet size compatibility
   178  
   179  BUG FIXES:
   180  
   181    * core: Fixed issue causing double delete. [GH-555]
   182    * core: Fixed issue with create-before-destroy not being respected in
   183        some circumstances.
   184    * core: Fixing issue with count expansion with non-homogenous instance
   185        plans.
   186    * core: Fix issue with referencing resource variables from resources
   187        that don't exist yet within resources that do exist, or modules.
   188    * core: Fixing depedency handling for modules
   189    * core: Fixing output handling [GH-474]
   190    * core: Fixing count interpolation in modules
   191    * core: Fixing multi-var without module state
   192    * core: Fixing HCL variable declaration
   193    * core: Fixing resource interpolation for without state
   194    * core: Fixing handling of computed maps
   195    * command/init: Fixing recursion issue [GH-518]
   196    * command: Validate config before requesting input [GH-602]
   197    * build: Fixing GOPATHs with spaces
   198  
   199  MISC:
   200  
   201    * provider/aws: Upgraded to helper.Schema
   202    * provider/heroku: Upgraded to helper.Schema
   203    * provider/mailgun: Upgraded to helper.Schema
   204    * provider/dnsimple: Upgraded to helper.Schema
   205    * provider/cloudflare: Upgraded to helper.Schema
   206    * provider/digitalocean: Upgraded to helper.Schema
   207    * provider/google: Upgraded to helper.Schema
   208  
   209  ## 0.3.1 (October 21, 2014)
   210  
   211  IMPROVEMENTS:
   212  
   213    * providers/aws: Support tags for security groups.
   214    * providers/google: Add "external\_address" to network attributes [GH-454]
   215    * providers/google: External address is used as default connection host. [GH-454]
   216    * providers/heroku: Support `locked` and `personal` booleans on organization
   217        settings. [GH-406]
   218  
   219  BUG FIXES:
   220  
   221    * core: Remove panic case when applying with a plan that generates no
   222        new state. [GH-403]
   223    * core: Fix a hang that can occur with enough resources. [GH-410]
   224    * core: Config validation will not error if the field is being
   225        computed so the value is still unknown.
   226    * core: If a resource fails to create and has provisioners, it is
   227        marked as tainted. [GH-434]
   228    * core: Set types are validated to be sets. [GH-413]
   229    * core: String types are validated properly. [GH-460]
   230    * core: Fix crash case when destroying with tainted resources. [GH-412]
   231    * core: Don't execute provisioners in some cases on destroy.
   232    * core: Inherited provider configurations will be properly interpolated. [GH-418]
   233    * core: Refresh works properly if there are outputs that depend on resources
   234        that aren't yet created. [GH-483]
   235    * providers/aws: Refresh of launch configs and autoscale groups load
   236        the correct data and don't incorrectly recreate themselves. [GH-425]
   237    * providers/aws: Fix case where ELB would incorrectly plan to modify
   238        listeners (with the same data) in some cases.
   239    * providers/aws: Retry destroying internet gateway for some amount of time
   240        if there is a dependency violation since it is probably just eventual
   241        consistency (public facing resources being destroyed). [GH-447]
   242    * providers/aws: Retry deleting security groups for some amount of time
   243        if there is a dependency violation since it is probably just eventual
   244        consistency. [GH-436]
   245    * providers/aws: Retry deleting subnet for some amount of time if there is a
   246        dependency violation since probably asynchronous destroy events take
   247        place still. [GH-449]
   248    * providers/aws: Drain autoscale groups before deleting. [GH-435]
   249    * providers/aws: Fix crash case if launch config is manually deleted. [GH-421]
   250    * providers/aws: Disassociate EIP before destroying.
   251    * providers/aws: ELB treats subnets as a set.
   252    * providers/aws: Fix case where in a destroy/create tags weren't reapplied. [GH-464]
   253    * providers/aws: Fix incorrect/erroneous apply cases around security group
   254        rules. [GH-457]
   255    * providers/consul: Fix regression where `key` param changed to `keys. [GH-475]
   256  
   257  ## 0.3.0 (October 14, 2014)
   258  
   259  FEATURES:
   260  
   261    * **Modules**: Configuration can now be modularized. Modules can live on
   262      GitHub, BitBucket, Git/Hg repos, HTTP URLs, and file paths. Terraform
   263      automatically downloads/updates modules for you on request.
   264    * **New Command: `init`**. This command initializes a Terraform configuration
   265      from an existing Terraform module (also new in 0.3).
   266    * **New Command: `destroy`**. This command destroys infrastructure
   267      created with `apply`.
   268    * Terraform will ask for user input to fill in required variables and
   269      provider configurations if they aren't set.
   270    * `terraform apply MODULE` can be used as a shorthand to quickly build
   271      infrastructure from a module.
   272    * The state file format is now JSON rather than binary. This allows for
   273      easier machine and human read/write. Old binary state files will be
   274      automatically upgraded.
   275    * You can now specify `create_before_destroy` as an option for replacement
   276      so that new resources are created before the old ones are destroyed.
   277    * The `count` metaparameter can now contain interpolations (such as
   278      variables).
   279    * The current index for a resource with a `count` set can be interpolated
   280      using `${count.index}`.
   281    * Various paths can be interpolated with the `path.X` variables. For example,
   282      the path to the current module can be interpolated using `${path.module}`.
   283  
   284  IMPROVEMENTS:
   285  
   286    * config: Trailing commas are now allowed for the final elements of lists.
   287    * core: Plugins are loaded from `~/.terraform.d/plugins` (Unix) or
   288      `%USERDATA%/terraform.d/plugins` (Windows).
   289    * command/show: With no arguments, it will show the default state. [GH-349]
   290    * helper/schema: Can now have default values. [GH-245]
   291    * providers/aws: Tag support for most resources.
   292    * providers/aws: New resource `db_subnet_group`. [GH-295]
   293    * providers/aws: Add `map_public_ip_on_launch` for subnets. [GH-285]
   294    * providers/aws: Add `iam_instance_profile` for instances. [GH-319]
   295    * providers/aws: Add `internal` option for ELBs. [GH-303]
   296    * providers/aws: Add `ssl_certificate_id` for ELB listeners. [GH-350]
   297    * providers/aws: Add `self` option for security groups for ingress
   298        rules with self as source. [GH-303]
   299    * providers/aws: Add `iam_instance_profile` option to
   300        `aws_launch_configuration`. [GH-371]
   301    * providers/aws: Non-destructive update of `desired_capacity` for
   302        autoscale groups.
   303    * providers/aws: Add `main_route_table_id` attribute to VPCs. [GH-193]
   304    * providers/consul: Support tokens. [GH-396]
   305    * providers/google: Support `target_tags` for firewalls. [GH-324]
   306    * providers/google: `google_compute_instance` supports `can_ip_forward` [GH-375]
   307    * providers/google: `google_compute_disk` supports `type` to support disks
   308        such as SSDs. [GH-351]
   309    * provisioners/local-exec: Output from command is shown in CLI output. [GH-311]
   310    * provisioners/remote-exec: Output from command is shown in CLI output. [GH-311]
   311  
   312  BUG FIXES:
   313  
   314    * core: Providers are validated even without a `provider` block. [GH-284]
   315    * core: In the case of error, walk all non-dependent trees.
   316    * core: Plugin loading from CWD works properly.
   317    * core: Fix many edge cases surrounding the `count` meta-parameter.
   318    * core: Strings in the configuration can escape double-quotes with the
   319        standard `\"` syntax.
   320    * core: Error parsing CLI config will show properly. [GH-288]
   321    * core: More than one Ctrl-C will exit immediately.
   322    * providers/aws: autoscaling_group can be launched into a vpc [GH-259]
   323    * providers/aws: not an error when RDS instance is deleted manually. [GH-307]
   324    * providers/aws: Retry deleting subnet for some time while AWS eventually
   325        destroys dependencies. [GH-357]
   326    * providers/aws: More robust destroy for route53 records. [GH-342]
   327    * providers/aws: ELB generates much more correct plans without extranneous
   328        data.
   329    * providers/aws: ELB works properly with dynamically changing
   330        count of instances.
   331    * providers/aws: Terraform can handle ELBs deleted manually. [GH-304]
   332    * providers/aws: Report errors properly if RDS fails to delete. [GH-310]
   333    * providers/aws: Wait for launch configuration to exist after creation
   334        (AWS eventual consistency) [GH-302]
   335  
   336  ## 0.2.2 (September 9, 2014)
   337  
   338  IMPROVEMENTS:
   339  
   340    * providers/amazon: Add `ebs_optimized` flag. [GH-260]
   341    * providers/digitalocean: Handle 404 on delete
   342    * providers/digitalocean: Add `user_data` argument for creating droplets
   343    * providers/google: Disks can be marked `auto_delete`. [GH-254]
   344  
   345  BUG FIXES:
   346  
   347    * core: Fix certain syntax of configuration that could cause hang. [GH-261]
   348    * core: `-no-color` flag properly disables color. [GH-250]
   349    * core: "~" is expanded in `-var-file` flags. [GH-273]
   350    * core: Errors with tfvars are shown in console. [GH-269]
   351    * core: Interpolation function calls with more than two args parse. [GH-282]
   352    * providers/aws: Refreshing EIP from pre-0.2 state file won't error. [GH-258]
   353    * providers/aws: Creating EIP without an instance/network won't fail.
   354    * providers/aws: Refreshing EIP manually deleted works.
   355    * providers/aws: Retry EIP delete to allow AWS eventual consistency to
   356        detect it isn't attached. [GH-276]
   357    * providers/digitalocean: Handle situations when resource was destroyed
   358        manually. [GH-279]
   359    * providers/digitalocean: Fix a couple scenarios where the diff was
   360        incorrect (and therefore the execution as well).
   361    * providers/google: Attaching a disk source (not an image) works
   362        properly. [GH-254]
   363  
   364  ## 0.2.1 (August 31, 2014)
   365  
   366  IMPROVEMENTS:
   367  
   368    * core: Plugins are automatically discovered in the executable directory
   369        or pwd if named properly. [GH-190]
   370    * providers/mailgun: domain records are now saved to state
   371  
   372  BUG FIXES:
   373  
   374    * core: Configuration parses when identifier and '=' have no space. [GH-243]
   375    * core: `depends_on` with `count` generates the proper graph. [GH-244]
   376    * core: Depending on a computed variable of a list type generates a
   377        plan without failure. i.e. `${type.name.foos.0.bar}` where `foos`
   378        is computed. [GH-247]
   379    * providers/aws: Route53 destroys in parallel work properly. [GH-183]
   380  
   381  ## 0.2.0 (August 28, 2014)
   382  
   383  BACKWARDS INCOMPATIBILITIES:
   384  
   385    * We've replaced the configuration language in use from a C library to
   386      a pure-Go reimplementation. In the process, we removed some features
   387      of the language since it was too flexible:
   388      * Semicolons are no longer valid at the end of lines
   389      * Keys cannot be double-quoted strings: `"foo" = "bar"` is no longer
   390        valid.
   391      * JSON style maps `{ "foo": "bar" }` are no longer valid outside of JSON.
   392        Maps must be in the format of `{ foo = "bar" }` (like other objects
   393        in the config)
   394    * Heroku apps now require (will not validate without) `region` and
   395      `name` due to an upstream API change. [GH-239]
   396  
   397  FEATURES:
   398  
   399    * **New Provider: `google`**: Manage Google Compute instances, disks,
   400        firewalls, and more.
   401    * **New Provider: `mailgun`**: Manage mailgun domains.
   402    * **New Function: `concat`**: Concatenate multiple strings together.
   403      Example: `concat(var.region, "-", var.channel)`.
   404  
   405  IMPROVEMENTS:
   406  
   407    * core: "~/.terraformrc" (Unix) or "%APPDATA%/terraform.rc" (Windows)
   408      can be used to configure custom providers and provisioners. [GH-192]
   409    * providers/aws: EIPs now expose `allocation_id` and `public_ip`
   410        attributes.
   411    * providers/aws: Security group rules can be updated without a
   412        destroy/create.
   413    * providers/aws: You can enable and disable dns settings for VPCs. [GH-172]
   414    * providers/aws: Can specify a private IP address for `aws_instance` [GH-217]
   415  
   416  BUG FIXES:
   417  
   418    * core: Variables are validated to not contain interpolations. [GH-180]
   419    * core: Key files for provisioning can now contain `~` and will be expanded
   420        to the user's home directory. [GH-179]
   421    * core: The `file()` function can load files in sub-directories. [GH-213]
   422    * core: Fix issue where some JSON structures didn't map properly into
   423       Terraform structures. [GH-177]
   424    * core: Resources with only `file()` calls will interpolate. [GH-159]
   425    * core: Variables work in block names. [GH-234]
   426    * core: Plugins are searched for in the same directory as the executable
   427        before the PATH. [GH-157]
   428    * command/apply: "tfvars" file no longer interferes with plan apply. [GH-153]
   429    * providers/aws: Fix issues around failing to read EIPs. [GH-122]
   430    * providers/aws: Autoscaling groups now register and export load
   431      balancers. [GH-207]
   432    * providers/aws: Ingress results are treated as a set, so order doesn't
   433        matter anymore. [GH-87]
   434    * providers/aws: Instance security groups treated as a set [GH-194]
   435    * providers/aws: Retry Route53 requests if operation failed because another
   436        operation is in progress [GH-183]
   437    * providers/aws: Route53 records with multiple record values work. [GH-221]
   438    * providers/aws: Changing AMI doesn't result in errors anymore. [GH-196]
   439    * providers/heroku: If you delete the `config_vars` block, config vars
   440        are properly nuked.
   441    * providers/heroku: Domains and drains are deleted before the app.
   442    * providers/heroku: Moved from the client library bgentry/heroku-go to
   443        cyberdelia/heroku-go [GH-239].
   444    * providers/heroku: Plans without a specific plan name for
   445        heroku\_addon work. [GH-198]
   446  
   447  PLUGIN CHANGES:
   448  
   449    * **New Package:** `helper/schema`. This introduces a high-level framework
   450      for easily writing new providers and resources. The Heroku provider has
   451      been converted to this as an example.
   452  
   453  ## 0.1.1 (August 5, 2014)
   454  
   455  FEATURES:
   456  
   457    * providers/heroku: Now supports creating Heroku Drains [GH-97]
   458  
   459  IMPROVEMENTS:
   460  
   461    * providers/aws: Launch configurations accept user data [GH-94]
   462    * providers/aws: Regions are now validated [GH-96]
   463    * providers/aws: ELB now supports health check configurations [GH-109]
   464  
   465  BUG FIXES:
   466  
   467    * core: Default variable file "terraform.tfvars" is auto-loaded. [GH-59]
   468    * core: Multi-variables (`foo.*.bar`) work even when `count = 1`. [GH-115]
   469    * core: `file()` function can have string literal arg [GH-145]
   470    * providers/cloudflare: Include the proper bins so the cloudflare
   471        provider is compiled
   472    * providers/aws: Engine version for RDS now properly set [GH-118]
   473    * providers/aws: Security groups now depend on each other and
   474    * providers/aws: DB instances now wait for destroys, have proper
   475        dependencies and allow passing skip_final_snapshot
   476    * providers/aws: Add associate_public_ip_address as an attribute on
   477        the aws_instance resource [GH-85]
   478    * providers/aws: Fix cidr blocks being updated [GH-65, GH-85]
   479    * providers/aws: Description is now required for security groups
   480    * providers/digitalocean: Private IP addresses are now a separate
   481        attribute
   482    * provisioner/all: If an SSH key is given with a password, a better
   483        error message is shown. [GH-73]
   484  
   485  ## 0.1.0 (July 28, 2014)
   486  
   487    * Initial release
   488