terraform-provider-google/website/docs/provider_versions.html.markdown
The Magician 672ae729fa Update provider docs for 2.0.0 (#2360)
<!-- This change is generated by MagicModules. -->
/cc @rileykarson
2018-12-20 17:22:22 -08:00

74 lines
2.6 KiB
Markdown

---
layout: "google"
page_title: "Google Provider Versions"
sidebar_current: "docs-google-provider-versions"
description: |-
How to use the different Google Provider versions
---
# Google Provider Versions
Starting with version `1.19.0`, there are two versions of the Google provider:
* terraform-provider-google
* terraform-provider-google-beta
All GA products and features are available in both versions of the provider.
From version `2.0.0` onwards, beta features are only available in the beta version of the provider (`google-beta`).
Beta GCP Features have no deprecation policy and no SLA, but are otherwise considered to be feature-complete
with only minor outstanding issues after their Alpha period. Beta is when GCP
features are publicly announced, and is when they generally become publicly
available. For more information see [the official documentation on GCP launch stages](https://cloud.google.com/terms/launch-stages).
The beta provider sends all requests to the beta endpoint for GCP if one exists for that product, regardless of whether the request contains any beta features.
## Using multiple provider versions together
To have resources at different API versions, set up provider blocks for each version:
```hcl
provider "google" {
credentials = "${file("account.json")}"
project = "my-project-id"
region = "us-central1"
}
provider "google-beta" {
credentials = "${file("account.json")}"
project = "my-project-id"
region = "us-central1"
}
```
In each resource, state which provider that resource should be used with:
```hcl
resource "google_compute_instance" "ga-instance" {
provider = "google"
# ...
}
resource "google_compute_instance" "beta-instance" {
provider = "google-beta"
# ...
}
```
If the `provider` field is omitted, Terraform will choose one of the versions available to it. To be in control of which version Terraform chooses, be sure to set the `provider` field.
## Converting resources between versions
Resources can safely be converted from one version to the other without needing to rebuild infrastructure.
To go from GA to beta, change the `provider` field from `"google"` to `"google-beta"`.
To go from beta to GA, do the reverse. If you were previously using beta fields that you no longer wish to use:
1. (Optional) Explicitly set the fields back to their default values in your Terraform config file, and run `terraform apply`.
1. Change the `provider` field to `"google"`.
1. Remove any beta fields from your Terraform config.
1. Run `terraform plan` or `terraform refresh`+`terraform show` to see that the beta fields are no longer in state.