Files
ENI-projet-piscine/infra/terraform/environments/dev/frontend.tf
T
2026-09-18 09:48:20 +02:00

75 lines
1.8 KiB
Terraform

locals {
frontend_environments = {
dev = {
source_dir = "${path.root}/../../../../apps/frontend/dist/frontend/browser"
domain = "dev.enervision"
}
}
selected_frontend = local.frontend_environments[var.deployment_environment]
}
provider "docker" {
host = "npipe:////.//pipe//docker_cli"
}
resource "docker_image" "frontend" {
name = "enervision-front:latest"
keep_locally = false
depends_on = [module.k3s]
triggers = {
environment = var.deployment_environment
build_hash = sha256(join("", [
for file in fileset(local.selected_frontend.source_dir, "**") :
filesha256("${local.selected_frontend.source_dir}/${file}")
]))
}
// Variables pour la connexion SSH
connection {
type = "ssh"
host = var.ssh_host
port = var.ssh_port
user = var.ssh_user
password = var.ssh_password
private_key = file(pathexpand(var.ssh_private_key_path))
}
// Lancement de script en SSH avec remote-exec
// Installation de Nginx et initialisation du répertoire du frontend
provisioner "remote-exec" {
inline = [
"sudo apt-get update",
"sudo apt-get install -y nginx",
"sudo mkdir -p /var/www/enervision",
"sudo rm -rf /var/www/enervision/*"
]
}
// Copie des fichiers vers le serveur
provisioner "file" {
source = "${local.selected_frontend.source_dir}/"
destination = "/tmp/enervision-frontend"
}
// Déplacement des fichiers
provisioner "remote-exec" {
inline = [
"sudo cp -r /tmp/enervision-frontend/ /var/www/enervision/",
"sudo chown -R www-data:www-data /var/www/enervision"
]
}
}
resource "docker_container" "nginx" {
image = "enervision-front:latest"
name = "front"
ports {
internal = 4200
external = 3000
}
}