Premier article d’une série consacrée à GCP piloté par Terraform.

On commence par une préparation générale de l’environnement.

GCP : Un compte avec 300€ pour s’amuser un peu

Création du compte

Vous pouvez créer un compte Google ou en utiliser un déjà existant.

La page d’accueil de GCP est ici : https://console.cloud.google.com/

gcloud, la CLI de GCP

Pour installer gcloud, la CLI de Google qui vous permet d’interagir avec votre terminal, les instructions sont ici.

Autre solution pour ne pas installer ça directement sur votre machine, vous pouvez utiliser l’image Docker de Google gcloud :

docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:latest gcloud version

Vous pouvez ensuite simplifier ça en :

alias gcloud="docker run --rm gcr.io/google.com/cloudsdktool/google-cloud-cli:latest gcloud"

Enfin, vous que ce soit en Docker ou avec l’installation classique, vous pouvez utiliser la CLI, à commencer par :

gcloud init

L’init va directement vous renvoyer vers une page Web pour vous authentifier et autoriser la CLI.

Terraform avec le provider GCP

Présentation, installation et configuration de Terraform

Je vous renvoie vers l’article que j’ai dédié à Terraform.

Autorisations

Il faut déjà sélectionner un projet ou créer un nouveau projet dans la console.

Il faut ensuite activer l’API.

Authentification

Pour autoriser les applications tierces à interagir avec les API Google :

gcloud auth application-default login

Organisation

Mon_repo
|- variables.tf
|- providers.tf
|- bucket.tf
|- ...

On va prendre deux habitudes :

  1. Séparer les ressources dans différents fichiers pour plus de clarté
  2. Écrire toutes les variables dans un fichier spécifiques (que nous allons appeler variables.tf mais peu importe)

Variables

A vous d’indquer les bonnes valeurs de variables

# variables.tf

variable "project_name" {
  default = "mon-projet-123456"
  type    = string
}

variable "region" {
  default = "europe-west9"
  type    = string
}

variable "zone" {
  default = "europe-west9-a"
  type    = string
}

variable "location" {
  default = "EUROPE-WEST9"
  type    = string
}

variable "domain_name" {
  default = "mondomaine.fr"
  type    = string
}

variable "bucket_name" {
  default = "sws-bucket"
  type    = string
}

Le provider GCP

Enfin, le premier fichier concerne le provider GCP :

# provider.tf

provider "google" {
  project     = var.project_name
  region      = var.region
  zone        = var.zone
}