mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-06 09:06:44 +00:00
74 lines
2.6 KiB
Markdown
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.
|