This commit is contained in:
parent
bb16277876
commit
ce942eefa4
@ -15,10 +15,27 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: hashicorp/setup-terraform@v3
|
- name: Set up Terraform
|
||||||
|
uses: hashicorp/setup-terraform@v3
|
||||||
with:
|
with:
|
||||||
terraform_version: 1.7.5
|
terraform_version: 1.7.5
|
||||||
|
|
||||||
|
- name: Set up GCloud SDK
|
||||||
|
uses: google-github-actions/setup-gcloud@v2
|
||||||
|
with:
|
||||||
|
project_id: ${{ secrets.GCP_PROJECT_ID }}
|
||||||
|
service_account_key: ${{ secrets.GCP_SA_KEY }}
|
||||||
|
export_default_credentials: true
|
||||||
|
version: '>= 506.0.0'
|
||||||
|
|
||||||
|
- name: 'Use GCloud CLI'
|
||||||
|
run: 'gcloud info'
|
||||||
|
|
||||||
|
- name: Authenticate with Google Cloud Platform
|
||||||
|
uses: google-github-actions/auth@v2
|
||||||
|
with:
|
||||||
|
credentials_json: ${{ secrets.GCP_CREDENTIALS }}
|
||||||
|
|
||||||
- name: Terraform fmt
|
- name: Terraform fmt
|
||||||
id: fmt
|
id: fmt
|
||||||
run: terraform fmt -check -diff -recursive
|
run: terraform fmt -check -diff -recursive
|
||||||
|
96
folder.tf
Normal file
96
folder.tf
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
# Dossier de premier niveau de notre organisation.
|
||||||
|
resource "google_folder" "HPROD" {
|
||||||
|
display_name = "HPROD"
|
||||||
|
parent = "organizations/113433426282"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "PREPROD" {
|
||||||
|
display_name = "PREPROD"
|
||||||
|
parent = "organizations/113433426282"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "PROD" {
|
||||||
|
display_name = "PROD"
|
||||||
|
parent = "organizations/113433426282"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "SANDBOX" {
|
||||||
|
display_name = "SANDBOX"
|
||||||
|
parent = "organizations/113433426282"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dossier imbriqué dans un autre dossier.
|
||||||
|
# Périmètre DATA
|
||||||
|
resource "google_folder" "DATA_HPROD" {
|
||||||
|
display_name = "DATA"
|
||||||
|
parent = google_folder.HPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "DATA_PREPROD" {
|
||||||
|
display_name = "DATA"
|
||||||
|
parent = google_folder.PREPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "DATA_PROD" {
|
||||||
|
display_name = "DATA"
|
||||||
|
parent = google_folder.PROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "DATA_SANDBOX" {
|
||||||
|
display_name = "DATA"
|
||||||
|
parent = google_folder.SANDBOX.name
|
||||||
|
}
|
||||||
|
|
||||||
|
# Périmètre INFRA
|
||||||
|
resource "google_folder" "INFRA_HPROD" {
|
||||||
|
display_name = "INFRA"
|
||||||
|
parent = google_folder.HPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "INFRA_PREPROD" {
|
||||||
|
display_name = "INFRA"
|
||||||
|
parent = google_folder.PREPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "INFRA_PROD" {
|
||||||
|
display_name = "INFRA"
|
||||||
|
parent = google_folder.PROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
# Périmètre PUBLIC
|
||||||
|
resource "google_folder" "PUBLIC_HPROD" {
|
||||||
|
display_name = "PUBLIC"
|
||||||
|
parent = google_folder.HPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "PUBLIC_PREPROD" {
|
||||||
|
display_name = "PUBLIC"
|
||||||
|
parent = google_folder.PREPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "PUBLIC_PROD" {
|
||||||
|
display_name = "PUBLIC"
|
||||||
|
parent = google_folder.PROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
# Périmètre SECURITY
|
||||||
|
resource "google_folder" "SECURITY_HPROD" {
|
||||||
|
display_name = "SECURITY"
|
||||||
|
parent = google_folder.HPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "SECURITY_PREPROD" {
|
||||||
|
display_name = "SECURITY"
|
||||||
|
parent = google_folder.PREPROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_folder" "SECURITY_PROD" {
|
||||||
|
display_name = "SECURITY"
|
||||||
|
parent = google_folder.PROD.name
|
||||||
|
}
|
||||||
|
|
||||||
|
# Périmètre OPS
|
||||||
|
resource "google_folder" "OPS_PROD" {
|
||||||
|
display_name = "OPS"
|
||||||
|
parent = google_folder.PROD.name
|
||||||
|
}
|
8
project.tf
Normal file
8
project.tf
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Structure de démarrage Ok à voir si le numéro d'organisation ne devrait pas être dans le Vault ?
|
||||||
|
|
||||||
|
resource "google_project" "my_project" {
|
||||||
|
name = "My Project"
|
||||||
|
project_id = "your-project-id"
|
||||||
|
org_id = "113433426282"
|
||||||
|
folder_id = google_folder.DATA_SANDBOX.name
|
||||||
|
}
|
23
provider.tf
23
provider.tf
@ -0,0 +1,23 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
google = {
|
||||||
|
version = "~> 6.16.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
required_version = ">= 1.7.5"
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "google" {
|
||||||
|
project = var.project
|
||||||
|
region = var.region
|
||||||
|
# credentials = var.file
|
||||||
|
}
|
||||||
|
|
||||||
|
data "google_client_config" "default" {}
|
||||||
|
|
||||||
|
provider "vault" {
|
||||||
|
address = "https://vault.saint-maclou.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# manque la partie du vault pour récupérer l'authentification GCP afin d'obtenir les droits
|
17
variables.tf
17
variables.tf
@ -0,0 +1,17 @@
|
|||||||
|
# Ne doit pas être ici, on va fonctionner en mode liste qui se trouvera dans le fichier project.tf
|
||||||
|
variable "project" {
|
||||||
|
description = "GCP project ID"
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "region" {
|
||||||
|
description = "GCP region"
|
||||||
|
type = string
|
||||||
|
default = "europe-west1"
|
||||||
|
}
|
||||||
|
|
||||||
|
#variable "file" {
|
||||||
|
# description = "GCP credential"
|
||||||
|
# type = string
|
||||||
|
# default = "creds/service-account-key.json"
|
||||||
|
#}
|
Loading…
x
Reference in New Issue
Block a user