* Terraform's built-in plugins are now distributed as part of the main Terraform binary, and use the go-plugin framework. Overrides are still available using separate binaries, but will need recompiling against Terraform 0.7.
* The `terraform plan` command no longer persists state. This makes the command much safer to run, since it is now side-effect free. The `refresh` and `apply` commands still persist state to local and remote storage. Any automation that assumes that `terraform plan` persists state will need to be reworked to explicitly call `terraform refresh` to get the equivalent side-effect. (The `terraform plan` command no longer has the `-state-out` or `-backup` flags due to this change.)
* The `concat()` interpolation function can no longer be used to join strings.
* Quotation marks may no longer be escaped in HIL expressions [GH-7201]
* Quotation marks may no longer be escaped in HIL expressions ([#7201](https://github.com/hashicorp/terraform/issues/7201))
* Lists materialized using splat syntax, for example `aws_instance.foo.*.id` are now ordered by the count index rather than lexographically sorted. If this produces a large number of undesirable differences, you can use the new `sort()` interpolation function to produce the previous behaviour.
* You now access the values of maps using the syntax `var.map["key"]` or the `lookup` function instead of `var.map.key`.
* Outputs on `terraform_remote_state` resources are now top level attributes rather than inside the `output` map. In order to access outputs, use the syntax: `terraform_remote_state.name.outputname`. Currently outputs cannot be named `config` or `backend`.
* AWS Provider
* `aws_elb` now defaults `cross_zone_load_balancing` to `true`
* `aws_instance`: EC2 Classic users may continue to use `security_groups` to reference Security Groups by their `name`. Users who are managing Instances inside VPCs will need to use `vpc_security_group_ids` instead, and reference the security groups by their `id`. Ref https://github.com/hashicorp/terraform/issues/6416#issuecomment-219145065
* `aws_kinesis_firehose_delivery_stream`: AWS Kinesis Firehose has been refactored to support Redshift as a destination in addition to S3. As a result, the configuration has changed and users will need to update their configuration to match the new `s3_configuration` block. Checkout the documentaiton on [AWS Kinesis Firehose](http://localhost:4567/docs/providers/aws/r/kinesis_firehose_delivery_stream.html) for more information [GH-7375]
* `aws_route53_record`: `latency_routing_policy`, `geolocation_routing_policy`, and `failover_routing_policy` block options have been added. With these additions we’ve renamed the `weight` attribute to `weighted_routing_policy`, and it has changed from a string to a block to match the others. Please see the updated documentation on using `weighted_routing_policy`: https://www.terraform.io/docs/providers/aws/r/route53_record.html . [GH-6954]
* `aws_kinesis_firehose_delivery_stream`: AWS Kinesis Firehose has been refactored to support Redshift as a destination in addition to S3. As a result, the configuration has changed and users will need to update their configuration to match the new `s3_configuration` block. Checkout the documentaiton on [AWS Kinesis Firehose](http://localhost:4567/docs/providers/aws/r/kinesis_firehose_delivery_stream.html) for more information ([#7375](https://github.com/hashicorp/terraform/issues/7375))
* `aws_route53_record`: `latency_routing_policy`, `geolocation_routing_policy`, and `failover_routing_policy` block options have been added. With these additions we’ve renamed the `weight` attribute to `weighted_routing_policy`, and it has changed from a string to a block to match the others. Please see the updated documentation on using `weighted_routing_policy`: https://www.terraform.io/docs/providers/aws/r/route53_record.html . ([#6954](https://github.com/hashicorp/terraform/issues/6954))
* `aws_db_instance` now defaults `publicly_accessible` to false
* Microsoft Azure Provider
* In documentation, the "Azure (Resource Manager)" provider has been renamed to the "Microsoft Azure" provider.
* **Data sources** are a new kind of primitive in Terraform. Attributes for data sources are refreshed and available during the planning stage. [GH-6598]
* **Lists and maps** can now be used as first class types for variables and may also be passed between modules. [GH-6322]
* **State management CLI commands** provide a variety of state manipulation functions for advanced use cases. This should be used where possible instead of manually modifying state files. [GH-5811]
* **Data sources** are a new kind of primitive in Terraform. Attributes for data sources are refreshed and available during the planning stage. ([#6598](https://github.com/hashicorp/terraform/issues/6598))
* **Lists and maps** can now be used as first class types for variables and may also be passed between modules. ([#6322](https://github.com/hashicorp/terraform/issues/6322))
* **State management CLI commands** provide a variety of state manipulation functions for advanced use cases. This should be used where possible instead of manually modifying state files. ([#5811](https://github.com/hashicorp/terraform/issues/5811))
* **State Import** allows a way to import existing resources into Terraform state for many types of resource. Initial coverage of AWS is quite high, and it is straightforward to add support for new resources.
* **New Command:** `terraform state` to provide access to a variety of state manipulation functions [GH-5811]
* **New Option:** `terraform output` now supports the `-json` flag to print a machine-readable representation of outputs [GH-7608]
* **New Data Source:** `aws_ami`[GH-6911]
* **New Data Source:** `aws_availability_zones`[GH-6805]
* **New Data Source:** `aws_iam_policy_document`[GH-6881]
* **New Data Source:** `aws_s3_bucket_object`[GH-6946]
* **New Data Source:** `aws_ecs_container_definition`[GH-7230]
* **New Data Source:** `atlas_artifact`[GH-7419]
* **New Data Source:** `docker_registry_image`[GH-7000]
* core: Tainted resources now show up in the plan and respect dependency ordering [GH-6600]
* core: The `lookup` interpolation function can now have a default fall-back value specified [GH-6884]
* core: The `terraform plan` command no longer persists state. [GH-6811]
* **New Command:** `terraform state` to provide access to a variety of state manipulation functions ([#5811](https://github.com/hashicorp/terraform/issues/5811))
* **New Option:** `terraform output` now supports the `-json` flag to print a machine-readable representation of outputs ([#7608](https://github.com/hashicorp/terraform/issues/7608))
* **New Data Source:** `aws_ami`([#6911](https://github.com/hashicorp/terraform/issues/6911))
* **New Data Source:** `aws_availability_zones`([#6805](https://github.com/hashicorp/terraform/issues/6805))
* **New Data Source:** `aws_iam_policy_document`([#6881](https://github.com/hashicorp/terraform/issues/6881))
* **New Data Source:** `aws_s3_bucket_object`([#6946](https://github.com/hashicorp/terraform/issues/6946))
* **New Data Source:** `aws_ecs_container_definition`([#7230](https://github.com/hashicorp/terraform/issues/7230))
* **New Data Source:** `atlas_artifact`([#7419](https://github.com/hashicorp/terraform/issues/7419))
* **New Data Source:** `docker_registry_image`([#7000](https://github.com/hashicorp/terraform/issues/7000))
* **New Data Source:** `consul_keys`([#7678](https://github.com/hashicorp/terraform/issues/7678))
* **New Provider:** `random` - allows generation of random values without constantly generating diffs ([#6672](https://github.com/hashicorp/terraform/issues/6672))
* **New Remote State Provider:** - `gcs` - Google Cloud Storage ([#6814](https://github.com/hashicorp/terraform/issues/6814))
* **New Remote State Provider:** - `azure` - Microsoft Azure Storage ([#7064](https://github.com/hashicorp/terraform/issues/7064))
* core: Tainted resources now show up in the plan and respect dependency ordering ([#6600](https://github.com/hashicorp/terraform/issues/6600))
* core: The `lookup` interpolation function can now have a default fall-back value specified ([#6884](https://github.com/hashicorp/terraform/issues/6884))
* core: The `terraform plan` command no longer persists state. ([#6811](https://github.com/hashicorp/terraform/issues/6811))
IMPROVEMENTS:
* core: The `jsonencode` interpolation function now supports encoding lists and maps [GH-6749]
* core: Add the ability for resource definitions to mark attributes as "sensitive" which will omit them from UI output. [GH-6923]
* core: Support `.` in map keys [GH-7654]
* core: Enhance interpolation functions to account for first class maps and lists [GH-7832] [GH-7834]
* command: Remove second DefaultDataDirectory const [GH-7666]
* provider/aws: Add `dns_name` to `aws_efs_mount_target`[GH-7428]
* provider/aws: Add `force_destroy` to `aws_iam_user` for force-deleting access keys assigned to the user [GH-7766]
* provider/aws: Add `option_settings` to `aws_db_option_group`[GH-6560]
* provider/aws: Add more explicit support for Skipping Final Snapshot in RDS Cluster [GH-6795]
* provider/aws: Add support for S3 Bucket Acceleration [GH-6628]
* provider/aws: Add support for `kms_key_id` to `aws_db_instance`[GH-6651]
* provider/aws: Specifying more than one health check on an `aws_elb` fails with an error prior to making an API request [GH-7489]
* provider/aws: Add support to `aws_redshift_cluster` for `iam_roles`[GH-6647]
* provider/aws: SQS use raw policy string if compact fails [GH-6724]
* provider/aws: Set default description to "Managed by Terraform" [GH-6104]
* provider/aws: Support for Redshift Cluster encryption using a KMS key [GH-6712]
* provider/aws: Support tags for AWS redshift cluster [GH-5356]
* provider/aws: Add `iam_arn` to aws_cloudfront_origin_access_identity [GH-6955]
* provider/aws: Add `cross_zone_load_balancing` on `aws_elb` default to true [GH-6897]
* provider/aws: Add support for `character_set_name` to `aws_db_instance`[GH-4861]
* provider/aws: Add support for DB parameter group with RDS Cluster Instances (Aurora) [GH-6865]
* provider/aws: Add `name_prefix` to `aws_iam_instance_profile` and `aws_iam_role`[GH-6939]
* provider/aws: Allow authentication & credentials validation for federated IAM Roles and EC2 instance profiles [GH-6536]
* provider/aws: Rename parameter_group_name to db_cluster_parameter_group_name [GH-7083]
* provider/aws: Add ability to set Performance Mode in `aws_efs_file_system`[GH-7791]
* provider/azurerm: Add support for EnableIPForwarding to `azurerm_network_interface`[GH-6807]
* provider/azurerm: Add support for exporting the `azurerm_storage_account` access keys [GH-6742]
* provider/azurerm: The Azure SDK now exposes better error messages [GH-6976]
* provider/azurerm: `azurerm_dns_zone` now returns `name_servers`[GH-7434]
* provider/azurerm: dump entire Request/Response in autorest Decorator [GH-7719]
* provider/azurerm: add option to delete VMs Data disks on termination [GH-7793]
* core: The `jsonencode` interpolation function now supports encoding lists and maps ([#6749](https://github.com/hashicorp/terraform/issues/6749))
* core: Add the ability for resource definitions to mark attributes as "sensitive" which will omit them from UI output. ([#6923](https://github.com/hashicorp/terraform/issues/6923))
* core: Support `.` in map keys ([#7654](https://github.com/hashicorp/terraform/issues/7654))
* core: Enhance interpolation functions to account for first class maps and lists ([#7832](https://github.com/hashicorp/terraform/issues/7832)) ([#7834](https://github.com/hashicorp/terraform/issues/7834))
* command: Remove second DefaultDataDirectory const ([#7666](https://github.com/hashicorp/terraform/issues/7666))
* provider/aws: Add `dns_name` to `aws_efs_mount_target`([#7428](https://github.com/hashicorp/terraform/issues/7428))
* provider/aws: Add `force_destroy` to `aws_iam_user` for force-deleting access keys assigned to the user ([#7766](https://github.com/hashicorp/terraform/issues/7766))
* provider/aws: Add `option_settings` to `aws_db_option_group`([#6560](https://github.com/hashicorp/terraform/issues/6560))
* provider/aws: Add more explicit support for Skipping Final Snapshot in RDS Cluster ([#6795](https://github.com/hashicorp/terraform/issues/6795))
* provider/aws: Add support for S3 Bucket Acceleration ([#6628](https://github.com/hashicorp/terraform/issues/6628))
* provider/aws: Add support for `kms_key_id` to `aws_db_instance`([#6651](https://github.com/hashicorp/terraform/issues/6651))
* provider/aws: Specifying more than one health check on an `aws_elb` fails with an error prior to making an API request ([#7489](https://github.com/hashicorp/terraform/issues/7489))
* provider/aws: Add support to `aws_redshift_cluster` for `iam_roles`([#6647](https://github.com/hashicorp/terraform/issues/6647))
* provider/aws: SQS use raw policy string if compact fails ([#6724](https://github.com/hashicorp/terraform/issues/6724))
* provider/aws: Set default description to "Managed by Terraform" ([#6104](https://github.com/hashicorp/terraform/issues/6104))
* provider/aws: Support for Redshift Cluster encryption using a KMS key ([#6712](https://github.com/hashicorp/terraform/issues/6712))
* provider/aws: Support tags for AWS redshift cluster ([#5356](https://github.com/hashicorp/terraform/issues/5356))
* provider/aws: Add `iam_arn` to aws_cloudfront_origin_access_identity ([#6955](https://github.com/hashicorp/terraform/issues/6955))
* provider/aws: Add `cross_zone_load_balancing` on `aws_elb` default to true ([#6897](https://github.com/hashicorp/terraform/issues/6897))
* provider/aws: Add support for `character_set_name` to `aws_db_instance`([#4861](https://github.com/hashicorp/terraform/issues/4861))
* provider/aws: Add support for DB parameter group with RDS Cluster Instances (Aurora) ([#6865](https://github.com/hashicorp/terraform/issues/6865))
* provider/aws: Add `name_prefix` to `aws_iam_instance_profile` and `aws_iam_role`([#6939](https://github.com/hashicorp/terraform/issues/6939))
* provider/aws: Allow authentication & credentials validation for federated IAM Roles and EC2 instance profiles ([#6536](https://github.com/hashicorp/terraform/issues/6536))
* provider/aws: Rename parameter_group_name to db_cluster_parameter_group_name ([#7083](https://github.com/hashicorp/terraform/issues/7083))
* provider/aws: `delegation_set_id` conflicts w/ `vpc_id` in `aws_route53_zone` as delegation sets can only be used for public zones ([#7213](https://github.com/hashicorp/terraform/issues/7213))
* provider/aws: Support Elastic Beanstalk scheduledaction ([#7376](https://github.com/hashicorp/terraform/issues/7376))
* provider/aws: Add support for NewInstancesProtectedFromScaleIn to `aws_autoscaling_group`([#6490](https://github.com/hashicorp/terraform/issues/6490))
* provider/aws: Added support for `snapshot_identifier` parameter in aws_rds_cluster ([#7158](https://github.com/hashicorp/terraform/issues/7158))
* provider/aws: Add inplace edit/update DB Security Group Rule Ingress ([#7245](https://github.com/hashicorp/terraform/issues/7245))
* provider/aws: Added support for redshift destination to firehose delivery streams ([#7375](https://github.com/hashicorp/terraform/issues/7375))
* provider/aws: Allow `aws_redshift_security_group` ingress rules to change ([#5939](https://github.com/hashicorp/terraform/issues/5939))
* provider/aws: Add support for `encryption` and `kms_key_id` to `aws_ami`([#7181](https://github.com/hashicorp/terraform/issues/7181))
* provider/aws: AWS prefix lists to enable security group egress to a VPC Endpoint ([#7511](https://github.com/hashicorp/terraform/issues/7511))
* provider/aws: Retry creation of IAM role depending on new IAM user ([#7324](https://github.com/hashicorp/terraform/issues/7324))
* provider/aws: Allow `port` on `aws_db_instance` to be updated ([#7441](https://github.com/hashicorp/terraform/issues/7441))
* provider/aws: Support `task_role_arn` on `aws_ecs_task_definition ([#7653](https://github.com/hashicorp/terraform/issues/7653))
* provider/aws: Support Tags on `aws_rds_cluster`([#7695](https://github.com/hashicorp/terraform/issues/7695))
* provider/aws: Support kms_key_id for `aws_rds_cluster`([#7662](https://github.com/hashicorp/terraform/issues/7662))
* provider/aws: Allow setting a `poll_interval` on `aws_elastic_beanstalk_environment`([#7523](https://github.com/hashicorp/terraform/issues/7523))
* provider/aws: Add support for Kinesis streams shard-level metrics ([#7684](https://github.com/hashicorp/terraform/issues/7684))
* provider/aws: Support create / update greater than twenty db parameters in `aws_db_parameter_group`([#7364](https://github.com/hashicorp/terraform/issues/7364))
* provider/aws: expose network interface id in `aws_instance`([#6751](https://github.com/hashicorp/terraform/issues/6751))
* provider/aws: Adding passthrough behavior for API Gateway integration ([#7801](https://github.com/hashicorp/terraform/issues/7801))
* provider/vsphere: set uuid as `vsphere_virtual_machine` output [GH-4382]
* provider/vsphere: Add support for `keep_on_remove` to `vsphere_virtual_machine`[GH-7169]
* provider/vsphere: Add support for additional `vsphere_virtial_machine` SCSI controller types [GH-7525]
* provisioner/file: File provisioners may now have file content set as an attribute [GH-7561]
* provider/clc: Fix optional server password ([#6414](https://github.com/hashicorp/terraform/issues/6414))
* provider/cloudstack: Add support for affinity groups to `cloudstack_instance`([#6898](https://github.com/hashicorp/terraform/issues/6898))
* provider/cloudstack: Enable swapping of ACLs without having to rebuild the network tier ([#6741](https://github.com/hashicorp/terraform/issues/6741))
* provider/cloudstack: Add project support to `cloudstack_network_acl` and `cloudstack_network_acl_rule`([#7612](https://github.com/hashicorp/terraform/issues/7612))
* provider/cloudstack: Add option to set `root_disk_size` to `cloudstack_instance`([#7070](https://github.com/hashicorp/terraform/issues/7070))
* provider/cloudstack: Do no longer force a new `cloudstack_instance` resource when updating `user_data`([#7074](https://github.com/hashicorp/terraform/issues/7074))
* provider/cloudstack: Add option to set `security_group_names` to `cloudstack_instance`([#7240](https://github.com/hashicorp/terraform/issues/7240))
* provider/cloudstack: Add option to set `affinity_group_names` to `cloudstack_instance`([#7242](https://github.com/hashicorp/terraform/issues/7242))
* provider/datadog: Add support for 'require full window' and 'locked' ([#6738](https://github.com/hashicorp/terraform/issues/6738))
* provider/docker: Docker Container DNS Setting Enhancements ([#7392](https://github.com/hashicorp/terraform/issues/7392))
* provider/docker: Add `destroy_grace_seconds` option to stop container before delete ([#7513](https://github.com/hashicorp/terraform/issues/7513))
* provider/docker: Add `pull_trigger` option to `docker_image` to trigger pulling layers of a given image ([#7000](https://github.com/hashicorp/terraform/issues/7000))
* provider/fastly: Add support for Cache Settings ([#6781](https://github.com/hashicorp/terraform/issues/6781))
* provider/fastly: Add support for Service Request Settings on `fastly_service_v1` resources ([#6622](https://github.com/hashicorp/terraform/issues/6622))
* provider/fastly: Add support for custom VCL configuration ([#6662](https://github.com/hashicorp/terraform/issues/6662))
* provider/google: Support optional uuid naming for Instance Template ([#6604](https://github.com/hashicorp/terraform/issues/6604))
* provider/openstack: Add support for client certificate authentication ([#6279](https://github.com/hashicorp/terraform/issues/6279))
* provider/openstack: Allow Neutron-based Floating IP to target a specific tenant ([#6454](https://github.com/hashicorp/terraform/issues/6454))
* provider/openstack: Enable DHCP By Default ([#6838](https://github.com/hashicorp/terraform/issues/6838))
* provider/openstack: Implement fixed_ip on Neutron floating ip allocations ([#6837](https://github.com/hashicorp/terraform/issues/6837))
* provider/openstack: Increase timeouts for image resize, subnets, and routers ([#6764](https://github.com/hashicorp/terraform/issues/6764))
* provider/openstack: Add `lb_provider` argument to `lb_pool_v1` resource ([#6919](https://github.com/hashicorp/terraform/issues/6919))
* provider/openstack: Enforce `ForceNew` on Instance Block Device ([#6921](https://github.com/hashicorp/terraform/issues/6921))
* provider/openstack: Can now stop instances before destroying them ([#7184](https://github.com/hashicorp/terraform/issues/7184))
* provider/openstack: Disassociate LBaaS v1 Monitors from Pool Before Deletion ([#6997](https://github.com/hashicorp/terraform/issues/6997))
* provider/powerdns: Add support for PowerDNS 4 API ([#7819](https://github.com/hashicorp/terraform/issues/7819))
* provider/vsphere: `vsphere_virtual_machine` added support for `mac address` on `network_interface`([#6966](https://github.com/hashicorp/terraform/issues/6966))
* provider/vsphere: set uuid as `vsphere_virtual_machine` output ([#4382](https://github.com/hashicorp/terraform/issues/4382))
* provider/vsphere: Add support for `keep_on_remove` to `vsphere_virtual_machine`([#7169](https://github.com/hashicorp/terraform/issues/7169))
* provider/vsphere: Add support for additional `vsphere_virtial_machine` SCSI controller types ([#7525](https://github.com/hashicorp/terraform/issues/7525))
* provisioner/file: File provisioners may now have file content set as an attribute ([#7561](https://github.com/hashicorp/terraform/issues/7561))
BUG FIXES:
* core: Correct the previous fix for a bug causing "attribute not found" messages during destroy, as it was insufficient [GH-6599]
* core: Fix issue causing syntax errors interpolating count attribute when value passed between modules [GH-6833]
* core: Fix "diffs didn't match during apply" error for computed sets [GH-7205]
* core: Fix issue where `terraform init .` would truncate existing files [GH-7273]
* core: Don't compare diffs between maps with computed values [GH-7249]
* core: Don't copy existing files over themselves when fetching modules [GH-7273]
* core: Always increment the state serial number when upgrading the version [GH-7402]
* core: Fix a crash during eval when we're upgrading an empty state [GH-7403]
* core: Honor the `-state-out` flag when applying with a plan file [GH-7443]
* core: Fix a panic when a `terraform_remote_state` data source doesn't exist [GH-7464]
* core: Fix issue where `ignore_changes` caused incorrect diffs on dependent resources [GH-7563]
* provider/aws: Manual changes to `aws_codedeploy_deployment_group` resources are now detected [GH-7530]
* provider/aws: Changing keys in `aws_dynamodb_table` correctly force new resources [GH-6829]
* provider/aws: Fix a bug where CloudWatch alarms are created repeatedly if the user does not have permission to use the the DescribeAlarms operation [GH-7227]
* provider/aws: Fix crash in `aws_elasticache_parameter_group` occuring following edits in the console [GH-6687]
* provider/aws: Fix issue reattaching a VPN gateway to a VPC [GH-6987]
* provider/aws: Fix issue with Root Block Devices and encrypted flag in Launch Configurations [GH-6512]
* provider/aws: If more ENIs are attached to `aws_instance`, the one w/ DeviceIndex `0` is always used in context of `aws_instance` (previously unpredictable) [GH-6761]
* provider/azurerm: changing the name of an `azurerm_virtual_machine` now forces a new resource [GH-7646]
* provider/azurerm: azurerm_storage_account now returns storage keys value instead of their names [GH-7674]
* provider/azurerm: `azurerm_virtual_machine` computer_name now Required [GH-7308]
* provider/azurerm: Change of `availability_set_id` on `azurerm_virtual_machine` should ForceNew [GH-7650]
* provider/azurerm: Wait for `azurerm_storage_account` to be available [GH-7329]
* provider/cloudflare: Fix issue upgrading CloudFlare Records created before v0.6.15 [GH-6969]
* provider/cloudstack: Fix using `cloudstack_network_acl` within a project [GH-6743]
* provider/cloudstack: Fix refresing `cloudstack_network_acl_rule` when the associated ACL is deleted [GH-7612]
* provider/cloudstack: Fix refresing `cloudstack_port_forward` when the associated IP address is no longer associated [GH-7612]
* provider/cloudstack: Fix creating `cloudstack_network` with offerings that do not support specifying IP ranges [GH-7612]
* provider/digitalocean: Stop `digitocean_droplet` forcing new resource on uppercase region [GH-7044]
* provider/digitalocean: Reassign Floating IP when droplet changes [GH-7411]
* provider/google: Fix a bug causing an error attempting to delete an already-deleted `google_compute_disk`[GH-6689]
* provider/mysql: Specifying empty provider credentials no longer causes a panic [GH-7211]
* provider/openstack: Reassociate Floating IP on network changes [GH-6579]
* provider/openstack: Ensure CIDRs Are Lower Case [GH-6864]
* provider/openstack: Rebuild Instances On Network Changes [GH-6844]
* provider/openstack: Firewall rules are applied in the correct order [GH-7194]
* provider/openstack: Fix Security Group EOF Error when Adding / Removing Multiple Groups [GH-7468]
* provider/openstack: Fixing boot volumes interfering with block storage volumes list [GH-7649]
* provider/vsphere: `gateway` and `ipv6_gateway` are now read from `vsphere_virtual_machine` resources [GH-6522]
* provider/vsphere: `ipv*_gateway` parameters won't force a new `vsphere_virtual_machine`[GH-6635]
* provider/vsphere: adding a `vsphere_virtual_machine` migration [GH-7023]
* provider/vsphere: Don't require vsphere debug paths to be set [GH-7027]
* provider/vsphere: Fix bug where `enable_disk_uuid` was not set on `vsphere_virtual_machine` resources [GH-7275]
* provider/vsphere: Make `vsphere_virtual_machine``product_key` optional [GH-7410]
* provider/vsphere: Refreshing devices list after adding a disk or cdrom controller [GH-7167]
* provider/vsphere: `vsphere_virtual_machine` no longer has to be powered on to delete [GH-7206]
* provider/vSphere: Fixes the hasBootableVmdk flag when attaching multiple disks [GH-7804]
* provisioner/remote-exec: Properly seed random script paths so they are not deterministic across runs [GH-7413]
* core: Correct the previous fix for a bug causing "attribute not found" messages during destroy, as it was insufficient ([#6599](https://github.com/hashicorp/terraform/issues/6599))
* core: Fix issue causing syntax errors interpolating count attribute when value passed between modules ([#6833](https://github.com/hashicorp/terraform/issues/6833))
* core: Fix "diffs didn't match during apply" error for computed sets ([#7205](https://github.com/hashicorp/terraform/issues/7205))
* core: Fix issue where `terraform init .` would truncate existing files ([#7273](https://github.com/hashicorp/terraform/issues/7273))
* core: Don't compare diffs between maps with computed values ([#7249](https://github.com/hashicorp/terraform/issues/7249))
* core: Don't copy existing files over themselves when fetching modules ([#7273](https://github.com/hashicorp/terraform/issues/7273))
* core: Always increment the state serial number when upgrading the version ([#7402](https://github.com/hashicorp/terraform/issues/7402))
* core: Fix a crash during eval when we're upgrading an empty state ([#7403](https://github.com/hashicorp/terraform/issues/7403))
* core: Honor the `-state-out` flag when applying with a plan file ([#7443](https://github.com/hashicorp/terraform/issues/7443))
* core: Fix a panic when a `terraform_remote_state` data source doesn't exist ([#7464](https://github.com/hashicorp/terraform/issues/7464))
* core: Fix issue where `ignore_changes` caused incorrect diffs on dependent resources ([#7563](https://github.com/hashicorp/terraform/issues/7563))
* provider/aws: Manual changes to `aws_codedeploy_deployment_group` resources are now detected ([#7530](https://github.com/hashicorp/terraform/issues/7530))
* provider/aws: Changing keys in `aws_dynamodb_table` correctly force new resources ([#6829](https://github.com/hashicorp/terraform/issues/6829))
* provider/aws: Fix a bug where CloudWatch alarms are created repeatedly if the user does not have permission to use the the DescribeAlarms operation ([#7227](https://github.com/hashicorp/terraform/issues/7227))
* provider/aws: Fix crash in `aws_elasticache_parameter_group` occuring following edits in the console ([#6687](https://github.com/hashicorp/terraform/issues/6687))
* provider/aws: Fix issue reattaching a VPN gateway to a VPC ([#6987](https://github.com/hashicorp/terraform/issues/6987))
* provider/aws: Fix issue with Root Block Devices and encrypted flag in Launch Configurations ([#6512](https://github.com/hashicorp/terraform/issues/6512))
* provider/aws: If more ENIs are attached to `aws_instance`, the one w/ DeviceIndex `0` is always used in context of `aws_instance` (previously unpredictable) ([#6761](https://github.com/hashicorp/terraform/issues/6761))
* provider/aws: Handle spurious failures in resourceAwsSecurityGroupRuleRead ([#7377](https://github.com/hashicorp/terraform/issues/7377))
* provider/aws: Make 'stage_name' required in api_gateway_deployment ([#6797](https://github.com/hashicorp/terraform/issues/6797))
* provider/aws: Mark Lambda function as gone when it's gone ([#6924](https://github.com/hashicorp/terraform/issues/6924))
* provider/aws: Trim trailing `.` from `name` in `aws_route53_record` resources to prevent spurious diffs ([#6592](https://github.com/hashicorp/terraform/issues/6592))
* provider/aws: Update Lambda functions on name change ([#7081](https://github.com/hashicorp/terraform/issues/7081))
* provider/aws: Updating state when `aws_sns_topic_subscription` is missing ([#6629](https://github.com/hashicorp/terraform/issues/6629))
* provider/aws: `aws_codedeploy_deployment_group` panic when setting `on_premises_instance_tag_filter`([#6617](https://github.com/hashicorp/terraform/issues/6617))
* provider/aws: `aws_db_instance` now defaults `publicly_accessible` to false ([#7117](https://github.com/hashicorp/terraform/issues/7117))
* provider/aws: `aws_opsworks_application.app_source` SSH key is write-only ([#6649](https://github.com/hashicorp/terraform/issues/6649))
* provider/aws: Fix issue with Elastic Beanstalk and invalid settings ([#7222](https://github.com/hashicorp/terraform/issues/7222))
* provider/aws: Fix issue where aws_app_cookie_stickiness_policy fails on destroy if LoadBalancer doesn't exist ([#7166](https://github.com/hashicorp/terraform/issues/7166))
* provider/aws: Stickiness Policy exists, but isn't assigned to the ELB ([#7188](https://github.com/hashicorp/terraform/issues/7188))
* provider/aws: Fix issue with `manage_bundler` on `aws_opsworks_layers`([#7219](https://github.com/hashicorp/terraform/issues/7219))
* provider/aws: Set Elastic Beanstalk stack name back to state ([#7445](https://github.com/hashicorp/terraform/issues/7445))
* provider/aws: Allow recreation of VPC Peering Connection when state is rejected ([#7466](https://github.com/hashicorp/terraform/issues/7466))
* provider/aws: Remove EFS File System from State when NotFound ([#7437](https://github.com/hashicorp/terraform/issues/7437))
* provider/aws: `aws_customer_gateway` refreshing from state on deleted state ([#7482](https://github.com/hashicorp/terraform/issues/7482))
* provider/aws: Retry finding `aws_route` after creating it ([#7463](https://github.com/hashicorp/terraform/issues/7463))
* provider/aws: Refresh CloudWatch Group from state on 404 ([#7576](https://github.com/hashicorp/terraform/issues/7576))
* provider/aws: Adding in additional retry logic due to latency with delete of `db_option_group`([#7312](https://github.com/hashicorp/terraform/issues/7312))
* provider/aws: Safely get ELB values ([#7585](https://github.com/hashicorp/terraform/issues/7585))
* provider/aws: Fix bug for recurring plans on ec2-classic and vpc in beanstalk ([#6491](https://github.com/hashicorp/terraform/issues/6491))
* provider/aws: Bump rds_cluster timeout to 15 mins ([#7604](https://github.com/hashicorp/terraform/issues/7604))
* provider/aws: Fix ICMP fields in `aws_network_acl_rule` to allow ICMP code 0 (echo reply) to be configured ([#7669](https://github.com/hashicorp/terraform/issues/7669))
* provider/aws: Fix bug with Updating `aws_autoscaling_group``enabled_metrics`([#7698](https://github.com/hashicorp/terraform/issues/7698))
* provider/aws: Ignore IOPS on non io1 AWS root_block_device ([#7783](https://github.com/hashicorp/terraform/issues/7783))
* provider/aws: Ignore missing ENI attachment when trying to detach ENI ([#7185](https://github.com/hashicorp/terraform/issues/7185))
* provider/azurerm: Fixes terraform crash when using SSH keys with `azurerm_virtual_machine`([#6766](https://github.com/hashicorp/terraform/issues/6766))
* provider/azurerm: Fix a bug causing 'diffs do not match' on `azurerm_network_interface` resources ([#6790](https://github.com/hashicorp/terraform/issues/6790))
* provider/azurerm: Normalizes `availability_set_id` casing to avoid spurious diffs in `azurerm_virtual_machine`([#6768](https://github.com/hashicorp/terraform/issues/6768))
* provider/azurerm: Add support for storage container name validation ([#6852](https://github.com/hashicorp/terraform/issues/6852))
* provider/azurerm: Remove storage containers and blobs when storage accounts are not found ([#6855](https://github.com/hashicorp/terraform/issues/6855))
* provider/azurerm: `azurerm_virtual_machine` fix `additional_unattend_rm` Windows config option ([#7105](https://github.com/hashicorp/terraform/issues/7105))
* provider/azurerm: `azurerm_dns_cname_record` can create CNAME records again ([#7113](https://github.com/hashicorp/terraform/issues/7113))
* provider/azurerm: `azurerm_network_security_group` now waits for the provisioning state of `ready` before proceeding ([#7307](https://github.com/hashicorp/terraform/issues/7307))
* provider/azurerm: `computer_name` is now required for `azurerm_virtual_machine` resources ([#7308](https://github.com/hashicorp/terraform/issues/7308))
* provider/azurerm: destroy azurerm_virtual_machine OS Disk VHD on deletion ([#7584](https://github.com/hashicorp/terraform/issues/7584))
* provider/azurerm: changing the name of an `azurerm_virtual_machine` now forces a new resource ([#7646](https://github.com/hashicorp/terraform/issues/7646))
* provider/azurerm: azurerm_storage_account now returns storage keys value instead of their names ([#7674](https://github.com/hashicorp/terraform/issues/7674))
* provider/azurerm: `azurerm_virtual_machine` computer_name now Required ([#7308](https://github.com/hashicorp/terraform/issues/7308))
* provider/azurerm: Change of `availability_set_id` on `azurerm_virtual_machine` should ForceNew ([#7650](https://github.com/hashicorp/terraform/issues/7650))
* provider/azurerm: Wait for `azurerm_storage_account` to be available ([#7329](https://github.com/hashicorp/terraform/issues/7329))
* provider/cloudflare: Fix issue upgrading CloudFlare Records created before v0.6.15 ([#6969](https://github.com/hashicorp/terraform/issues/6969))
* provider/cloudstack: Fix using `cloudstack_network_acl` within a project ([#6743](https://github.com/hashicorp/terraform/issues/6743))
* provider/cloudstack: Fix refresing `cloudstack_network_acl_rule` when the associated ACL is deleted ([#7612](https://github.com/hashicorp/terraform/issues/7612))
* provider/cloudstack: Fix refresing `cloudstack_port_forward` when the associated IP address is no longer associated ([#7612](https://github.com/hashicorp/terraform/issues/7612))
* provider/cloudstack: Fix creating `cloudstack_network` with offerings that do not support specifying IP ranges ([#7612](https://github.com/hashicorp/terraform/issues/7612))
* provider/digitalocean: Stop `digitocean_droplet` forcing new resource on uppercase region ([#7044](https://github.com/hashicorp/terraform/issues/7044))
* provider/digitalocean: Reassign Floating IP when droplet changes ([#7411](https://github.com/hashicorp/terraform/issues/7411))
* provider/google: Fix a bug causing an error attempting to delete an already-deleted `google_compute_disk`([#6689](https://github.com/hashicorp/terraform/issues/6689))
* provider/mysql: Specifying empty provider credentials no longer causes a panic ([#7211](https://github.com/hashicorp/terraform/issues/7211))
* provider/openstack: Reassociate Floating IP on network changes ([#6579](https://github.com/hashicorp/terraform/issues/6579))
* provider/openstack: Ensure CIDRs Are Lower Case ([#6864](https://github.com/hashicorp/terraform/issues/6864))
* provider/openstack: Rebuild Instances On Network Changes ([#6844](https://github.com/hashicorp/terraform/issues/6844))
* provider/openstack: Firewall rules are applied in the correct order ([#7194](https://github.com/hashicorp/terraform/issues/7194))
* provider/openstack: Fix Security Group EOF Error when Adding / Removing Multiple Groups ([#7468](https://github.com/hashicorp/terraform/issues/7468))
* provider/openstack: Fixing boot volumes interfering with block storage volumes list ([#7649](https://github.com/hashicorp/terraform/issues/7649))
* provider/vsphere: `gateway` and `ipv6_gateway` are now read from `vsphere_virtual_machine` resources ([#6522](https://github.com/hashicorp/terraform/issues/6522))
* provider/vsphere: `ipv*_gateway` parameters won't force a new `vsphere_virtual_machine`([#6635](https://github.com/hashicorp/terraform/issues/6635))
* provider/vsphere: adding a `vsphere_virtual_machine` migration ([#7023](https://github.com/hashicorp/terraform/issues/7023))
* provider/vsphere: Don't require vsphere debug paths to be set ([#7027](https://github.com/hashicorp/terraform/issues/7027))
* provider/vsphere: Fix bug where `enable_disk_uuid` was not set on `vsphere_virtual_machine` resources ([#7275](https://github.com/hashicorp/terraform/issues/7275))
* provider/vsphere: Make `vsphere_virtual_machine``product_key` optional ([#7410](https://github.com/hashicorp/terraform/issues/7410))
* provider/vsphere: Refreshing devices list after adding a disk or cdrom controller ([#7167](https://github.com/hashicorp/terraform/issues/7167))
* provider/vsphere: `vsphere_virtual_machine` no longer has to be powered on to delete ([#7206](https://github.com/hashicorp/terraform/issues/7206))
* provider/vSphere: Fixes the hasBootableVmdk flag when attaching multiple disks ([#7804](https://github.com/hashicorp/terraform/issues/7804))
* provisioner/remote-exec: Properly seed random script paths so they are not deterministic across runs ([#7413](https://github.com/hashicorp/terraform/issues/7413))