Files
gitlab-gcp-deployment/2-configure-gcp-project.sh
2021-02-17 18:15:07 +13:00

41 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# Once we have authenticated we can create a project and then create a new virtual machine instance within that project.
# Firstly let's create a new project, a project is the logical boundary all our cloud resources for this deployment will live within. To be able to deploy resources we also need to enable billing.
# Tangle the shell block below to a shell script by pressing *, b t* in emacs command mode:
# #+NAME: Create a new google cloud project
# Create a project id based on date
export gcp_project_id="gitlab-gcp-ci-cd"
# Create new project using a random project id
gcloud projects create $gcp_project_id
# Ensure billing is enabled for the project
export gcp_billing_account=$(gcloud alpha billing accounts list --limit=1 --format='value(name.basename())')
gcloud alpha billing projects link $gcp_project_id --billing-account $gcp_billing_account
# Make sure the project is set active
gcloud config set project $gcp_project_id
# Create service accounts
gcloud iam service-accounts create $gcp_project_id-sa \
--description="GitHub actions deploy account" \
--display-name="GitHub-Action-Deploy"
# Assign role
gcloud projects add-iam-policy-binding $gcp_project_id \
--member=serviceAccount:$gcp_project_id-sa@$gcp_project_id.iam.gserviceaccount.com \
--role=roles/compute.instanceAdmin.v1
gcloud projects add-iam-policy-binding $gcp_project_id \
--member=serviceAccount:$gcp_project_id-sa@$gcp_project_id.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountUser
gcloud iam service-accounts keys create key.json \
--iam-account $gcp_project_id-sa@$gcp_project_id.iam.gserviceaccount.com