init: fichier terraform pour le backend
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
locals {
|
||||
backend_dir = "../../../../apps/backend"
|
||||
backend_image_name = "enervision-back"
|
||||
backend_image_tag = "latest"
|
||||
backend_container_name = "enervision-backend"
|
||||
}
|
||||
|
||||
resource "docker_image" "backend" {
|
||||
name = "${local.backend_image_name}:${local.backend_image_tag}"
|
||||
|
||||
build {
|
||||
context = local.backend_dir
|
||||
dockerfile = "Dockerfile"
|
||||
}
|
||||
|
||||
triggers = {
|
||||
build_hash = sha256(join("", [
|
||||
for file in fileset(local.backend_dir, "**") :
|
||||
filesha256("${local.backend_dir}/${file}")
|
||||
]))
|
||||
}
|
||||
}
|
||||
|
||||
resource "docker_container" "backend" {
|
||||
image = docker_image.backend.image_id
|
||||
name = local.backend_container_name
|
||||
|
||||
ports {
|
||||
internal = 8000
|
||||
external = var.backend_port
|
||||
}
|
||||
|
||||
volumes {
|
||||
host_path = "/var/log/enervision"
|
||||
container_path = "/var/log/enervision"
|
||||
}
|
||||
|
||||
depends_on = [docker_image.backend]
|
||||
}
|
||||
|
||||
resource "null_resource" "deploy_backend_to_server" {
|
||||
depends_on = [docker_image.backend]
|
||||
|
||||
triggers = {
|
||||
image_id = docker_image.backend.image_id
|
||||
}
|
||||
|
||||
connection {
|
||||
type = "ssh"
|
||||
host = var.ssh_host
|
||||
port = var.ssh_port
|
||||
user = var.ssh_user
|
||||
password = var.ssh_password
|
||||
private_key = try(file(pathexpand(var.ssh_private_key_path)), null)
|
||||
timeout = "5m"
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
source = "${local.backend_dir}/Dockerfile"
|
||||
destination = "/tmp/Dockerfile"
|
||||
}
|
||||
provisioner "file" {
|
||||
source = "${local.backend_dir}/"
|
||||
destination = "/tmp/backend/"
|
||||
}
|
||||
|
||||
provisioner "remote-exec" {
|
||||
inline = [
|
||||
"cd /tmp/backend",
|
||||
"sudo docker stop ${local.backend_container_name} 2>/dev/null || true",
|
||||
"sudo docker rm ${local.backend_container_name} 2>/dev/null || true",
|
||||
"sudo docker build -t ${local.backend_image_name}:${local.backend_image_tag} .",
|
||||
"sudo docker run -d --name ${local.backend_container_name} -p ${var.backend_port}:8000 --restart always -v /var/log/enervision:/var/log/enervision ${local.backend_image_name}:${local.backend_image_tag}"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,6 +44,12 @@ variable "frontend_port" {
|
||||
description = "Port externe du frontend"
|
||||
}
|
||||
|
||||
variable "backend_port" {
|
||||
type = number
|
||||
default = 8000
|
||||
description = "Port externe du backend"
|
||||
}
|
||||
|
||||
variable "k3s_version" {
|
||||
type = string
|
||||
description = "Version k3s a epingler pour un deploiement reproductible (ex: v1.31.5+k3s1). Voir https://github.com/k3s-io/k3s/releases."
|
||||
|
||||
Reference in New Issue
Block a user