forked from pierront/but3-iac
ajout outputs
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user