Google Cloud Platform
Automating project creation with Google Cloud Deployment Manager
Do you need to create a lot of Google Cloud Platform (GCP) projects for your company? Maybe the sheer volume or the need to standardize project creation is making you look for a way to automate project creation. We now have a tool to simplify this process for you.
Google Cloud Deployment Manager is the native GCP tool you can use to create and manage GCP resources, including Compute Engine (i.e., virtual machines), Container Engine, Cloud SQL, BigQuery and Cloud Storage. Now, you can use Deployment Manager to create and manage projects as well.
Whether you have ten or ten thousand projects, automating the creation and configuration of your projects with Deployment Manager allows you to manage projects consistently. We have a set of templates that handle:
- Project Creation - create the new project with the name you provide
- Billing - set the billing account for the new project
- Permissions - set the IAM policy on the project
- Service Accounts - optionally create service accounts for the applications or services to run in this project
- APIs - turn on compatible Google APIs that the services or applications in a project may need
Getting startedManaging project creation with Deployment Manager is simple. Here are few steps to get you started:
Download the templates from our github samples.
- The project creation samples are available in the Deployment Manager github repo under the
project_creationdirectory. Or clone the whole DM github repo:
Then copy the templates under the
- Follow the steps in the Readme in the project_creation directory. The readme includes detailed instructions, but there is one point to emphasize. You should create a new project using the Cloud Console that will be used as your “Project Creation” project. The service account under which Deployment Manager runs needs powerful IAM permissions to create projects and manage billing accounts, hence the recommendation to create this special project and use it only for creation of other projects.
- Customize your deployments.
- At a minimum, you'll need to change the config.yaml file to add the name of the project you want to create, your billing account, the APIs you want, the IAM permissions you choose to use and the APIs to enable.
- Advanced customization — you can do as little or as much as you want here. Let’s assume that your company typically has three types of projects: production service projects, test service projects and developer sandbox projects. These projects require vastly different IAM permissions, different types of service accounts and may also need different APIs. You could add a new top level template with a parameter for “project-type”. That parameter takes a string as input (such as “prodservice”, “testservice” or “developer”) and uses that value to customize the project for your needs. Alternatively, you can make three copies of the .yaml file — one for each project type with the correct settings for your three project types.
- Create your project.
From the directory where you stored your templates, use the command line interface to run Deployment Manager:
gcloud deployment-manager deployments create <newproject_deployment> --config config.yaml --project <Project Creation project>
Where <newproject_deployment> is the name you want to give the deployment. This is not the new project name, that comes from the value in the config.yaml file. But you may want to use the same name for the deployment, or something similar so you know how they match up once you’ve stamped out a few hundred projects.