dynv6 sert mal un TXT _acme-challenge à la racine de la zone : l'API ne le liste ni ne le supprime, et un seul de ses trois serveurs le renvoie. Le défi DNS-01 de la prod échouait donc à chaque essai, alors que rec. et dev. passaient. La prod rejoint ses voisines en sous-domaine, ce qui aligne aussi les trois noms sur les environnements. - provision-host.sh : hôte prod.$DOMAINE, enregistrement A prod publié. - Makefile : --dnssleep 90, le temps que les trois serveurs de dynv6 servent le TXT avant la validation multi-réseaux de Let's Encrypt. - deploy.yml, ADR 0018, 10-infra.md, infra/README.md, Terraform.
97 lines
3.6 KiB
Terraform
97 lines
3.6 KiB
Terraform
variable "ssh_host" {
|
|
type = string
|
|
description = "Adresse de la VM ENI qui porte les trois environnements (ADR 0009, ADR 0017)."
|
|
}
|
|
|
|
variable "ssh_port" {
|
|
type = number
|
|
description = "Port SSH de la VM."
|
|
default = 22
|
|
}
|
|
|
|
variable "ssh_user" {
|
|
type = string
|
|
description = "Utilisateur SSH du provisionnement. Different de root, les commandes privilegiees sont prefixees par sudo."
|
|
default = "root"
|
|
}
|
|
|
|
variable "ssh_private_key_path" {
|
|
type = string
|
|
description = "Chemin local vers la cle privee SSH. L'authentification par mot de passe n'est volontairement pas prise en charge : une variable de mot de passe finit en clair dans le state ou dans les triggers."
|
|
sensitive = true
|
|
}
|
|
|
|
variable "proprietaire" {
|
|
type = string
|
|
description = "Utilisateur qui possede la racine et fait tourner le runner. Il doit exister sur la machine : git refuse les depots appartenant a un autre utilisateur, et un .env en 600 lui echapperait."
|
|
|
|
validation {
|
|
condition = can(regex("^[a-z_][a-z0-9_-]*$", var.proprietaire))
|
|
error_message = "proprietaire doit etre un nom d'utilisateur Unix valide."
|
|
}
|
|
}
|
|
|
|
variable "racine" {
|
|
type = string
|
|
description = "Dossier qui porte un clone du depot par environnement."
|
|
default = "/srv/enervision"
|
|
}
|
|
|
|
variable "depot_url" {
|
|
type = string
|
|
description = "URL de clonage du depot, passee a provision-host.sh."
|
|
default = "https://github.com/ineszang/ProjetPiscine_EnerVision.git"
|
|
}
|
|
|
|
variable "domaine" {
|
|
type = string
|
|
description = "Zone dynv6 des trois environnements, prod., rec. et dev. en sous-domaines (ADR 0018). Son jeton doit se trouver dans <racine>/dns.token sur la machine : provision-host.sh y fait pointer la zone et ses trois sous-domaines vers la machine."
|
|
default = "enervision-g3.dynv6.net"
|
|
}
|
|
|
|
variable "adresse_publique" {
|
|
type = string
|
|
description = "Adresse annoncee dans les certificats auto-signes. Vide : la premiere adresse de la VM."
|
|
default = ""
|
|
}
|
|
|
|
variable "runner_url" {
|
|
type = string
|
|
description = "Depot GitHub auquel le runner s'enregistre."
|
|
default = "https://github.com/ineszang/ProjetPiscine_EnerVision"
|
|
}
|
|
|
|
variable "runner_version" {
|
|
type = string
|
|
description = "Version d'actions-runner a installer, sans le v initial (ex: 2.330.0). Voir https://github.com/actions/runner/releases."
|
|
|
|
validation {
|
|
condition = can(regex("^[0-9]+\\.[0-9]+\\.[0-9]+$", var.runner_version))
|
|
error_message = "runner_version doit etre epinglee explicitement (ex: 2.330.0), sinon l'installation cesse d'etre reproductible."
|
|
}
|
|
}
|
|
|
|
variable "runner_token" {
|
|
type = string
|
|
description = "Jeton d'enregistrement du runner. Expire au bout d'une heure et ne vaut que pour une inscription : Parametres du depot > Actions > Runners > New self-hosted runner. Seul un administrateur du depot peut le creer."
|
|
sensitive = true
|
|
}
|
|
|
|
variable "runner_labels" {
|
|
type = string
|
|
description = "Libelles supplementaires du runner. deploy.yml cible [self-hosted, linux, eni-g3], les deux premiers etant poses par GitHub."
|
|
default = "eni-g3"
|
|
}
|
|
|
|
variable "runner_nom" {
|
|
type = string
|
|
description = "Nom du runner cote GitHub, unique dans le depot. Vide : le nom d'hote de la machine, qui reste unique si cette racine est reprise pour une seconde VM. A renseigner pour faire tourner deux runners sur la meme machine."
|
|
default = ""
|
|
}
|
|
|
|
variable "runner_dossier" {
|
|
type = string
|
|
description = "Dossier d'installation du runner sur la machine."
|
|
default = "/opt/actions-runner"
|
|
}
|