/terraform-google-sql-db

Modular Cloud SQL database instance for Terraform.

Primary LanguageHCLApache License 2.0Apache-2.0

terraform-google-sql

terraform-google-sql makes it easy to create Google CloudSQL instance and implement high availability settings. This module consists of the following submodules:

See more details in each module's README.

Compatibility

This module is meant for use with Terraform 0.13+ and tested using Terraform 1.0+. If you find incompatibilities using Terraform >=0.13, please open an issue.

If you haven't upgraded and need a Terraform 0.12.x-compatible version of this module, the last released version intended for Terraform 0.12.x is v5.0.0.

Upgrading

The current version is 13.X. The following guides are available to assist with upgrades:

Root module

The root module has been deprecated. Please switch to using one of the submodules.

Requirements

Installation Dependencies

The following dependency must be available for SQL Server module:

Configure a Service Account

In order to execute this module you must have a Service Account with the following:

Roles

  • Cloud SQL Admin: roles/cloudsql.admin
  • Compute Network Admin: roles/compute.networkAdmin

Enable APIs

In order to operate with the Service Account you must activate the following APIs on the project where the Service Account was created:

  • Cloud SQL Admin API: sqladmin.googleapis.com

In order to use Private Service Access, required for using Private IPs, you must activate the following APIs on the project where your VPC resides:

  • Cloud SQL Admin API: sqladmin.googleapis.com
  • Compute Engine API: compute.googleapis.com
  • Service Networking API: servicenetworking.googleapis.com
  • Cloud Resource Manager API: cloudresourcemanager.googleapis.com

Service Account Credentials

You can pass the service account credentials into this module by setting the following environment variables:

  • GOOGLE_CREDENTIALS
  • GOOGLE_CLOUD_KEYFILE_JSON
  • GCLOUD_KEYFILE_JSON

See more details.

Provision Instructions

This module has no root configuration. A module with no root configuration cannot be used directly.

Copy and paste into your Terraform configuration, insert the variables, and run terraform init :

For MySQL :

module "sql-db" {
  source  = "GoogleCloudPlatform/sql-db/google//modules/mysql"
  version = "8.0.0"
}

or for PostgreSQL :

module "sql-db" {
  source  = "GoogleCloudPlatform/sql-db/google//modules/postgresql"
  version = "8.0.0"
}

or for MSSQL Server :

module "sql-db" {
  source  = "GoogleCloudPlatform/sql-db/google//modules/mssql"
  version = "8.0.0"
}

Contributing

Refer to the contribution guidelines for information on contributing to this module.