Skip to content

v1.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 09 Feb 09:20
· 265 commits to main since this release
v1.0.0
ac3e45f

1.0.0 (February 8, 2022)

ENHANCEMENTS:

  • Changes for v1.0.0 #534

BUG FIXES:

  • Fix the example usage in docs/index.md #533
  • Support Terraform CLI 1.1.4 #536

Migration Guide

Resources omit _v1 suffix:

All resources now have a consistent naming convention which omit the previous v1 suffix.

  • fastly_service_v1 -> fastly_service_vcl (renamed with _vcl suffix)
  • fastly_service_acl_entries_v1 -> fastly_service_acl_entries
  • fastly_service_dictionary_items_v1 -> fastly_service_dictionary_items
  • fastly_service_dynamic_snippet_content_v1 -> fastly_service_dynamic_snippet_content
  • fastly_user_v1 -> fastly_user

When switching to the new 1.0.0 release, some existing projects might see an error such as:

Error: no schema available for module.fastly.<...> while reading state; this is a bug in Terraform and should be reported

This error is because the Terraform state file will have a different resource name to what's now exposed via the 1.0.0 release. To resolve this issue you'll need to first remove the old resource from the state file and then reimport the data using the new resource name.

As an example, if you had defined an fastly_service_acl_entries_v1 resource, then you could remove and reimport using the following commands (any brackets <...> should be replaced with actual values):

terraform state rm 'fastly_service_acl_entries_v1.<your_resource_name>["<your_acl_name>"]'
terraform import 'fastly_service_acl_entries.<your_resource_name>["<your_acl_name>"]' <service_id>/<acl_id>

terraform state rm 'fastly_service_v1.<your_resource_name>'
terraform import 'fastly_service_vcl.<your_resource_name>' <service_id>

It's also recommended that you keep a backup of your state file so you can use it to reference any resource IDs necessary.

Logging resources have consistent naming format:

All logging resources now have a consistent naming convention with the provider prefixed with logging_.

  • bigquerylogging -> logging_bigquery
  • blobstoragelogging -> logging_blobstorage
  • gcslogging -> logging_gcs
  • httpslogging -> logging_https
  • logentries -> logging_logentries
  • papertrail -> logging_papertrail
  • s3logging -> logging_s3
  • splunk -> logging_splunk
  • sumologic -> logging_sumologic
  • syslog -> logging_syslog

Director capacity removed:

The Fastly API never supported the capacity field for a director resource (this was added to the Terraform provider by mistake). Load balancing of director backends is managed by the weight field on each associated backend resource.

GCS Logging field email renamed:

The Fastly API was updated with a new user field to replace email.

Logging format and format_version defaults changed:

Pre-1.0.0 the default values for format and format_version were incorrectly set to an older version 1. All new logging endpoints use the version 2 custom log format by default.

Backend auto_loadbalance default changed:

The Fastly web interface defaults "Auto load balance" to "No". The most common reason for having multiple backends in a single service is to route different paths to different backends, rather than load balance between different origins. The provider pre-1.0.0 defaulted auto_loadbalance to true, which was considered unexpected behaviour. The default is now false.

Gzip content_types and extensions type changed:

The content_types and extensions fields for a gzip resource, pre-1.0.0, were implemented as a TypeSet (an unordered collection of items whose state index is calculated by the hash of the attributes of the set). This would result in confusing and unexpected diffs. Now they are implemented as a TypeList (an ordered collection of items).

Automatically opt-in to ignore_changes behaviour for versionless resources:

The versionless resources (ACL entries, Dictionary items and Dynamic VCL Snippets) are sometimes used in a way whereby they are "seeded" via Terraform and then updated/managed externally via the API or UI console. For this, the documentation suggests using ignore_changes, a built-in Terraform meta-argument, that allows the user to specify fields to ignore and from which to allow the state to drift.

However, sometimes this isn't obvious or the user doesn't understand this suggestion until it is too late, and data ends up getting lost. This happens because the user makes changes elsewhere and doesn't use ignore_changes, so Terraform takes action to remove the state drift and deletes their changes. This data is then unrecoverable.

In 1.0.0 the default behaviour of these resources has changed. Terraform now ignores any changes, and only allows the "dangerous" behaviour by explicitly opting in with a manage_* option (e.g. manage_entries, manage_items, manage_snippets depending on the versionless resource).