Google Cloud Platform using GCloud CLI to create projects and billing
Well in the world of Infrastructure as Code, the idea is that you try not to use the graphical interface and instead use the command line. Put it in scripts and other tools. So here are the basics for doing this with Google Cloud Platform. The nice thing is that command completion works really well, if you need a list of active projects, it will appear. So decently easy.
As an example, to create a bunch of project, here is what you do. First, you need to initialize it and then logon and then scripting is pretty easy for instance to list all resources in a project
# To initialize is all brew install gcloud gcloud init # now logon, note if you have multiple accounts, you have to login different things then switch configuration. gcloud auth login # to switch to a new configuration gcloud config list && gcloud config configuration activate _new_config # Now to see the projects and things gcloud projects list # Or to just look at project Ids gcloud projects list --format="value(projectId)" # set the default project gcloud config set project _a project id_
All of these let’s you create a new project with a single long command line where the important things are a unique project id (it has to be unique across GCP I think like AWS has the same requirement):
# if you want to see actual field names gcloud organizations list --format=json # now set an environment so you have that organization id in name GCP_ORG=$(gcloud organizations list --format="value(name)" gcloud project create _new_project_id_ # Find billing accounts gcloud beta billing accounts list # Use json to figure out field names gcloud beta billing accounts list --format=json # now assuming you want the second line GCP_BILL=$(glcoud beta billing accounts list --format="value(name)" | sed -n 2p) # Assuming you want the second # Now you are ready to create a project gcloud projects create richtong-1 --organization=$GCP_ORG \ --labels="cost_center=dev,env=dev" # now link the project to the right billing gcloud beta billing projects link richtong-1 --billing-account=$GCP_BILL