Skip to content

Instantly share code, notes, and snippets.

View mynameisameed's full-sized avatar

Mohammed Sameed Uddin mynameisameed

View GitHub Profile
credentials = "./terraform-gke-keyfile.json" # service account json file name & path
project_id = "<project-name>" # make sure you enter your project id from gcp
region = "<region>" # region where you wanna create in
zones = ["<region>-a", "<region>-b", "<region>-c"] # zone
name = "terraform-gke" # name of your cluster
machine_type = "<machine_type>" # type of compute size
min_count = 1
max_count = 3
disk_size_gb = 10
service_account = "<service-account-name>@<project-name>.iam.gserviceaccount.com" # service account name which we created
@mynameisameed
mynameisameed / variables.tf
Created May 1, 2022 19:59
Need variables details to refer the gke module configuration
variable "credentials" {
type = string
description = "Location of the credential keyfile."
}
variable "project_id" {
type = string
description = "The project ID to create the cluster."
}
@mynameisameed
mynameisameed / gke.tf
Created May 1, 2022 19:40
You need this file to create GKE Cluster & configuration with terraform
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google"
project_id = var.project_id
name = var.name
region = var.region
zones = var.zones
network = "default"
subnetwork = "default"
ip_range_pods = ""
ip_range_services = ""
@mynameisameed
mynameisameed / gke.tf
Created May 1, 2022 19:37
this file consist of gke module & custom settings
module "gke" {
source = "terraform-google-modules/kubernetes-engine/google"
project_id = var.project_id
name = var.name
region = var.region
zones = var.zones
network = "default"
subnetwork = "default"
ip_range_pods = ""
ip_range_services = ""
@mynameisameed
mynameisameed / provider.tf
Created May 1, 2022 18:51
terraform provider helps you get
provider "google" {
project = var.project_id
region = var.region
credentials = "${file(var.credentials)}"
}
@mynameisameed
mynameisameed / gcp-terraform-backend.tf
Created May 1, 2022 11:53
this file helps terraform state file to be stored in remote backend, which can be used by other teams in the organization & dont have to manually update
terraform {
backend "gcs" {
bucket = "<bucket-name>"
prefix = "terraform/state"
credentials = "./terraform-gke-keyfile.json"
}
}
@mynameisameed
mynameisameed / gke-apis.sh
Last active May 2, 2022 11:07
Need these api services to be enabled before you can deploy GKE clusters
gcloud services enable compute.googleapis.com
gcloud services enable container.googleapis.com
@mynameisameed
mynameisameed / roles-gke.sh
Last active May 2, 2022 10:34
roles needed for GKE
gcloud projects add-iam-policy-binding <project-name> --member serviceAccount:<service account name>@<project-name>.iam.gserviceaccount.com --role roles/compute.admin
gcloud projects add-iam-policy-binding <project-name> --member serviceAccount:<service account name>@<project-name>.iam.gserviceaccount.com --role roles/iam.serviceAccountUser
gcloud projects add-iam-policy-binding <project-name> --member serviceAccount:<service account name>@<project-name>.iam.gserviceaccount.com --role roles/resourcemanager.projectIamAdmin
gcloud projects add-iam-policy-binding <project-name> --member serviceAccount:<service account name>@<project-name>.iam.gserviceaccount.com --role roles/container.clusterAdmin
gcloud projects add-iam-policy-binding <project-name> --member serviceAccount:<service account name>@<project-name>.iam.gserviceaccount.com --role roles/compute.viewer
gcloud projects add-iam-policy-binding <project-name> --member se
\GCP on Terraform> terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# google_compute_instance.test will be created
+ resource "google_compute_instance" "test" {
+ can_ip_forward = false
#!/bin/bash
sudo apt-get update && sudo apt -y install apache2
echo '<!doctype html><html><body><h1>Hello You Successfully was able to run a webserver on GCP with Terraform!</h1></body></html>' | sudo tee /var/www/html/index.html