Allows creation and management of a Google Cloud Platform project.
Projects created with this resource must be associated with an Organization. See the Organization documentation for more details.
The user or service account that is running Terraform when creating a google_project
resource must have roles/resourcemanager.projectCreator
on the specified organization. See the
Access Control for Organizations Using IAM
doc for more information.
To get more information about projects, see:
resource "google_project" "my_project" {
name = "My Project"
project_id = "your-project-id"
org_id = "1234567"
}
To create a project under a specific folder
resource "google_project" "my_project-in-a-folder" {
name = "My Project"
project_id = "your-project-id"
folder_id = google_folder.department1.name
}
resource "google_folder" "department1" {
display_name = "Department 1"
parent = "organizations/1234567"
}
The following arguments are supported:
name
- (Required) The display name of the project.
project_id
- (Required) The project ID. Changing this forces a new project to be created.
org_id
- (Optional) The numeric ID of the organization this project belongs to.
Changing this forces a new project to be created. Only one of
org_id
or folder_id
may be specified. If the org_id
is
specified then the project is created at the top level. Changing
this forces the project to be migrated to the newly specified
organization.
folder_id
- (Optional) The numeric ID of the folder this project should be
created under. Only one of org_id
or folder_id
may be
specified. If the folder_id
is specified, then the project is
created under the specified folder. Changing this forces the
project to be migrated to the newly specified folder.
billing_account
- (Optional) The alphanumeric ID of the billing account this project
belongs to. The user or service account performing this operation with Terraform
must have at minimum Billing Account User privileges (roles/billing.user
) on the billing account.
See Google Cloud Billing API Access Control
for more details.
skip_delete
- (Optional) If true, the Terraform resource can be deleted
without deleting the Project via the Google API.
labels
- (Optional) A set of key/value label pairs to assign to the project.
Note: This field is non-authoritative, and will only manage the labels present in your configuration.
Please refer to the field 'effective_labels' for all of the labels present on the resource.
terraform_labels
-
The combination of labels configured directly on the resource and default labels configured on the provider.
effective_labels
-
All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Terraform, other clients and services.
auto_create_network
- (Optional) Controls whether the 'default' network exists on the project. Defaults
to true
, where it is created. If set to false
, the default network will still be created by GCP but
will be deleted immediately by Terraform. Therefore, for quota purposes, you will still need to have 1
network slot available to create the project successfully, even if you set auto_create_network
to
false
. Note that when false
, Terraform enables compute.googleapis.com
on the project to interact
with the GCE API and currently leaves it enabled.
In addition to the arguments listed above, the following computed attributes are exported:
id
- an identifier for the resource with format projects/{{project}}
number
- The numeric identifier of the project.
This resource provides the following Timeouts configuration options: configuration options:
create
- Default is 10 minutes.update
- Default is 10 minutes.delete
- Default is 10 minutes.Projects can be imported using the project_id
, e.g.
{{project_id}}
In Terraform v1.5.0 and later, use an import
block to import Projects using one of the formats above. For example:
import {
id = "{{project_id}}"
to = google_project.default
}
When using the terraform import
command, Projects can be imported using one of the formats above. For example:
$ terraform import google_project.default {{project_id}}