ajout outputs

This commit is contained in:
James Boutaric
2025-12-04 11:05:37 +01:00
parent cfeee8df7f
commit f54d9bacfb
12 changed files with 115 additions and 58 deletions

View File

@@ -1,8 +1,3 @@
# À vous de :
# 1. Configurer le provider google
# 2. Appeler les trois modules avec les bonnes variables
# 3. Créer le fichier de configuration Ansible (template)
terraform {
required_providers {
google = {

View File

@@ -0,0 +1,29 @@
output "ip_internes" {
value = module.compute.ip_internes
}
output "ip_public_frontend" {
value = module.compute.ip_public_frontend
}
output "nom_instances" {
value = module.compute.nom_instances
}
output "service_account_email" {
description = "Email du compte de service Terraform."
value = module.iam.email
}
output "service_account_key" {
description = "Clé privée du compte de service Terraform (sensitive)."
value = module.iam.key
sensitive = true
}
output "vpc" {
value = module.network.vpc
}
output "subnets" {
value = module.network.subnets
}

View File

@@ -1,4 +1,8 @@
# définissez toutes les variables nécessaires avec des valeurs par défaut appropriées.
# variable "project_id" {
# description = "ID du projet GCP"
# type = string
# default = "mon-projet"
# }
variable "project_name" {
description = "Nom du projet"

View File

@@ -1,25 +1,26 @@
# À vous de créer :
# resource "google_compute_instance" "vm" {
# name = "ma-vm"
# machine_type = "e2-medium"
# zone = "europe-west1-b"
# 1. Instance frontend :
# - Image : debian-11
# - Disque : 10GB
# - IP publique
# - Tags : frontend, ssh
# - OS Login enabled
# boot_disk {
# initialize_params {
# image = "debian-cloud/debian-11"
# size = 10
# }
# }
# 2. Instance backend :
# - Image : debian-11
# - Disque : 10GB
# - Pas d'IP publique (interne seulement)
# - Tags : backend, ssh
# - OS Login enabled
# network_interface {
# access_config {} # IP publique
# subnetwork = google_compute_subnetwork.subnet.id
# }
# 3. Instance database :
# - Image : debian-11
# - Disque : 20GB
# - Pas d'IP publique
# - Tags : database, ssh
# - OS Login enabled
# tags = ["web", "app"]
# metadata = {
# enable-oslogin = "TRUE"
# }
# }
resource "google_compute_instance" "vm_frontend" {
name = "vm-frontend"

View File

@@ -1,7 +1,6 @@
# À vous d'exposer :
# 1. Les IPs internes de toutes les instances
# 2. L'IP publique du frontend
# 3. Les noms des instances
# output "instance_ip" {
# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip
# }
output "ip_internes" {
value = {

View File

@@ -1,9 +1,8 @@
# À vous de définir les variables pour :
# - instance_type
# - zone
# - frontend_subnet_id
# - backend_subnet_id
# - database_subnet_id
# variable "project_id" {
# description = "ID du projet GCP"
# type = string
# default = "mon-projet"
# }
variable "instance_type" {
description = "type de l'instance"

View File

@@ -1,9 +1,3 @@
# À vous de créer :
# 1. Un compte de service pour Terraform
# 2. Une clé pour ce compte de service
# 3. Les rôles IAM nécessaires
# 4. La configuration OS Login avec votre clé SSH
resource "google_service_account" "service_account" {
account_id = "terraform"
display_name = "terraform"

View File

@@ -1,12 +1,17 @@
# À vous d'exposer :
# 1. L'email du compte de service
# 2. La clé du compte de service (sensitive = true)
# output "instance_ip" {
# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip
# }
output "email" {
description = "Service account email."
value = google_service_account.service_account.email
}
# output "vpc_id" {
# description = "ID of project VPC"
# value = module.vpc.vpc_id
# }
output "key" {
description = "Service account private key."
sensitive = true

View File

@@ -1,5 +1,8 @@
# À vous de définir :
# - project_id (string)
# variable "project_id" {
# description = "ID du projet GCP"
# type = string
# default = "mon-projet"
# }
variable "project_id" {
description = "ID du projet"

View File

@@ -1,19 +1,22 @@
# À vous de créer :
# 1. Un VPC personnalisé avec auto_create_subnetworks = false
# 2. Trois sous-réseaux (frontend, backend, database)
# 3. Règles de firewall :
# - HTTP/HTTPS vers frontend
# - SSH vers toutes les instances
# - Port 8000 de frontend vers backend
# - Port 3306 de backend vers database
# VPC
# resource "google_compute_network" "vpc" {
# name = "mon-vpc"
# auto_create_subnetworks = false
# }
resource "google_compute_network" "vpc_terraform" {
name = "vpc-terraform-2"
auto_create_subnetworks = false
}
# Sous-réseau
# resource "google_compute_subnetwork" "subnet" {
# name = "mon-subnet"
# network = google_compute_network.vpc.id
# ip_cidr_range = "10.0.1.0/24"
# region = "europe-west1"
# }
resource "google_compute_subnetwork" "subnet_frontend" {
name = "frontend-2"
network = google_compute_network.vpc_terraform.id
@@ -35,6 +38,20 @@ resource "google_compute_subnetwork" "subnet_database" {
region = var.region
}
# Règles de Pare-feu
# resource "google_compute_firewall" "allow_http" {
# name = "allow-http"
# network = google_compute_network.vpc.id
# allow {
# protocol = "tcp"
# ports = ["80", "443"]
# }
# source_ranges = ["0.0.0.0/0"]
# target_tags = ["web"]
# }
resource "google_compute_firewall" "allow_user_frontend" {
name = "allow-user-frontend-2"
network = google_compute_network.vpc_terraform.id

View File

@@ -1,11 +1,16 @@
# À vous d'exposer :
# 1. L'ID du VPC
# 2. Les IDs des sous-réseaux sous forme de map
# output "instance_ip" {
# value = google_compute_instance.main.network_interface[0].access_config[0].nat_ip
# }
output "vpc" {
value = google_compute_network.vpc_terraform.id
}
# output "vpc_id" {
# description = "ID of project VPC"
# value = module.vpc.vpc_id
# }
output "subnets" {
value = {
frontend = google_compute_subnetwork.subnet_frontend.id

View File

@@ -6,6 +6,12 @@
# - database_cidr (string)
# - ssh_source_ranges (string)
# variable "project_id" {
# description = "ID du projet GCP"
# type = string
# default = "mon-projet"
# }
variable "project_name" {
description = "Nom du projet"
type = string