Skip to content

GCP project prerequisites

qumulo_filesystem_gcp deploys into an existing GCP project, VPC, and subnetwork. The provider creates no project, network, or subnetwork, and enables no API.

Checklist

Requirement Applies to Details
Billing Every deployment Billing is enabled on the project.
Compute Engine API Every deployment compute.googleapis.com is enabled.
Cloud Storage API Every deployment storage.googleapis.com is enabled.
IAM API Every deployment iam.googleapis.com is enabled.
Cloud KMS API kms_key_name is set cloudkms.googleapis.com is enabled.
Subnetwork Every deployment An existing subnetwork in the cluster's region, in the cluster's own project. Shared VPC host-project subnetworks are not supported.
Private Google Access Every deployment Turned on for the subnetwork.
Credentials Every deployment Application Default Credentials (gcloud auth application-default login) or GOOGLE_APPLICATION_CREDENTIALS.

Roles for the deploying principal

The deploying principal is the identity that runs terraform apply.

Role Granted on Applies to
roles/compute.admin The project Every deployment. It includes compute.instances.setDeletionProtection, so deletion_protection needs no further role.
roles/storage.admin The project Every deployment
roles/iam.serviceAccountAdmin The project service_account_email is omitted
roles/cloudkms.cryptoKeyEncrypterDecrypter The KMS key kms_key_name is set
roles/compute.imageUser The image, or the project that holds it node_image, node_image_project, provisioner_image, or provisioner_image_project names an image in another project

Node service account

When service_account_email is omitted, the provider creates a service account for the cluster nodes and grants it these roles on the project.

Role Permissions
roles/storage.objectAdmin Predefined role
roles/logging.logWriter Predefined role
roles/monitoring.metricWriter Predefined role
A custom role created per cluster compute.instances.get, compute.instances.list, compute.instances.updateNetworkInterface, compute.regions.get

An account supplied through service_account_email is used as it is, and the provider grants it nothing. A cross-project custom image also needs roles/compute.imageUser granted to this account.