Configurer GCP
Configuration​
Obtenir l'ID du projet​
Copier/coller la valeur suivante dans la variable d'environnement GCP_PROJECT_ID :

Générer le service account et ses permissions​
Créer un service account cwcloud
Ensuite, lui ajouter le role owner comme ceci :


Le service account doit aussi apparaitre dans les comptes principaux :

Générer la clef d'authentification​
Aller dans IAM > Service Account > Manage key

Ensuite, créer une nouvelle clef (choisir le format JSON) :

Le fichier téléchargé devrait ressembler à quelque chose comme ceci :
{
  "type": "service_account",
  "project_id": "projectid",
  "private_key_id": "22fXXXXXXXXXXXXXXXXXXX",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvYYYYYYYYYYYYYYYYYY4G4A=\n-----END PRIVATE KEY-----\n",
  "client_email": "cwcloud@projectid.iam.gserviceaccount.com",
  "client_id": "ZZZZZZZZZZZZZZZZ",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/cwcloud%40projectid.iam.gserviceaccount.com",
  "universe_domain": "googleapis.com"
}
Ensuite enregistrer la valeur en base64 de ce fichier dans la variable d'environnement GCP_APPLICATION_CREDENTIALS.
Vous pouvez utiliser cette commande pour générer la valeur en base64 :
base64 -i projectid.json
Configuration du réseau​
Créer un réseau default comme ceci :

Voici le code terraform pour y parvenir :
variable "project_id" {
  type        = string
  description = "The GCP project ID"
  default     = null
}
resource "google_compute_network" "vpc_network" {
  project                 = var.project_id
  name                    = "default"
  auto_create_subnetworks = true
}
Vous pouvez ensuite stocker la valeur default dans la variable d'environnement GCP_NETWORK.
Configuration des firewalls​
Voici le code terraform :
variable "project_id" {
  type        = string
  description = "The GCP project ID"
  default     = null
}
variable "network" {
  type        = string
  description = "The GCP vpc/network name"
  default     = null
}
resource "google_compute_firewall" "allow_ssh" {
  name    = "allow-ssh"
  network = var.network
  project = var.project_id
  allow {
    protocol = "tcp"
    ports    = ["22"]
  }
  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-ssh"]
}
resource "google_compute_firewall" "allow_http" {
  name    = "allow-http"
  network = var.network
  project = var.project_id
  allow {
    protocol = "tcp"
    ports    = ["80"]
  }
  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-http"]
}
resource "google_compute_firewall" "allow_https" {
  name    = "allow-https"
  network = var.network
  project = var.project_id
  allow {
    protocol = "tcp"
    ports    = ["443"]
  }
  source_ranges = ["0.0.0.0/0"]
  target_tags   = ["allow-https"]
}
Ensuite vous pouvez ajouter les tags dans le fichier cloud_environments.yml :
firewall_tags:
  - allow-http
  - allow-https
  - allow-ssh