Skip to content

Toutes les variables ​

Chaque variable de l'infrastructure : où elle est définie, ce qu'elle vaut, et qui la lit.

Ansible : l'inventaire ​

ansible/inventory.ini

Variabletm-prodtm-toolingRôle
ansible_host34.140.149.18734.156.3.169L'IP publique, pour se connecter en SSH
private_ip10.132.0.210.132.0.3L'IP interne, lue par all.yml

Ansible : les valeurs partagées ​

ansible/group_vars/all.yml, en clair.

VariableValeurLue par
ansible_usereliashounnouAnsible (connexion), rôles docker, traefik, jenkins
ansible_ssh_private_key_file~/.ssh/id_ed25519Ansible (connexion)
app_root/opt/timemanagerrôles traefik, app, jenkins
docker_networktimemanagerrôle traefik (création du réseau)
ghcr_ownersaliehsabrôles app et jenkins (nom des images, connexion GHCR)
domain_fronttime.jostud.comrôle app (CORS_ORIGINS)
domain_apiapi.time.jostud.comrôle app (PHX_HOST), vite_api_url
domain_cici.time.jostud.comrôle jenkins (JENKINS_PUBLIC_URL)
vite_api_urlhttps://api.time.jostud.com/apirôle jenkins (VITE_API_URL)
prod_private_iplu dans l'inventairerôle jenkins (PROD_HOST)
tooling_private_iplu dans l'inventairerôle jenkins (JENKINS_BIND_IP)
jenkins_deploy_pubkeyla clé publique jenkins_timemanagerrôle app (authorized_keys de deploy)
postgres_usertimemanagerrôle app (.env)
postgres_dbtimemanagerrôle app (.env)

Ansible : les secrets ​

VariableFichier (vault)Lue par
postgres_passwordprod.ymlrôle app (.env)
secret_key_baseprod.ymlrôle app (.env)
ghcr_read_tokenprod.ymlrôle app (docker login de deploy)
brevo_api_keyprod.ymlrôle app (.env)
mail_fromprod.ymlrôle app (.env)
jenkins_admin_passwordtooling.ymlrôle jenkins (.env)
github_tokentooling.ymlrôle jenkins (.env, deux fois : GitHub et GHCR)
jenkins_deploy_keytooling.ymlrôle jenkins (secrets/deploy_key)

Le .env de l'application ​

/opt/timemanager/app/.env sur tm-prod, écrit par le rôle app, lu par app/docker-compose.yml.

VariableValeurPassée à
GHCR_OWNER{ghcr_owner}nom des images front et back
POSTGRES_USER{postgres_user}db, et DATABASE_URL de back
POSTGRES_PASSWORD{postgres_password}db, et DATABASE_URL de back
POSTGRES_DB{postgres_db}db, et DATABASE_URL de back
SECRET_KEY_BASE{secret_key_base}back
PHX_HOSTapi.time.jostud.comback
CORS_ORIGINShttps://time.jostud.comback
BREVO_API_KEY{brevo_api_key}back
MAIL_FROM{mail_from}back
TEST_TO{test_to}back, mais aucun code de l'API ne la lit : à retirer, ou à documenter par l'équipe backend

L'API au démarrage ​

timemanager-api/config/runtime.exs lit :

VariableObligatoireValeur par défautRôle
DATABASE_URLOuiecto://user:mot-de-passe@db/timemanager, construite par le compose
SECRET_KEY_BASEOuiSignature de Phoenix
PHX_HOSTNonexample.comLe nom de domaine de l'API
CORS_ORIGINSOui, ou WEB_URLLes sites autorisés à appeler l'API avec des cookies, séparés par des virgules
WEB_URLNonle premier CORS_ORIGINSL'adresse du site dans les emails
JWT_SECRETNonSECRET_KEY_BASESignature des jetons
BREVO_API_KEYNonSans elle, les emails ne sont qu'écrits dans les journaux
MAIL_FROMNonno-reply@<PHX_HOST>L'expéditeur des emails
PORTNon4000Le port d'écoute
POOL_SIZENon10Le nombre de connexions à la base
PHX_SERVERNonmise par bin/serverDémarre le serveur HTTP

Le .env de Jenkins ​

/opt/timemanager/jenkins/.env sur tm-tooling, généré depuis roles/jenkins/templates/jenkins.env.j2.

VariableValeurLue par
JENKINS_ADMIN_PASSWORD{jenkins_admin_password}casc.yml (compte admin)
JENKINS_PUBLIC_URLhttps://ci.time.jostud.comcasc.yml (adresse de Jenkins)
JENKINS_BIND_IP10.132.0.3jenkins/docker-compose.yml (port publié sur l'IP interne seulement)
GITHUB_USERNAME{ghcr_owner}casc.yml (identifiant github-token)
GITHUB_TOKEN{github_token}casc.yml (identifiant github-token)
GHCR_USERNAME{ghcr_owner}casc.yml (identifiant ghcr, variable GHCR_OWNER)
GHCR_TOKEN{github_token}casc.yml (identifiant ghcr)
VITE_API_URLhttps://api.time.jostud.com/apicasc.yml, puis pipeline frontend
PROD_HOST10.132.0.2casc.yml, puis étape Deploy des deux pipelines

Dans les pipelines ​

Disponibles dans tous les jobs grâce à casc.yml :

VariableUtilisée pour
env.GHCR_OWNERLe nom des images : ghcr.io/<owner>/timemanager-web et -api
env.VITE_API_URL--build-arg du build du site
env.PROD_HOSTL'adresse SSH du déploiement
env.BUILD_NUMBERFournie par Jenkins : nom unique des conteneurs de test

Le site web, au build ​

VariableValeurOù
VITE_API_URLhttps://api.time.jostud.com/apiArgument de build obligatoire du Dockerfile : figée dans le JavaScript du site

L'application mobile ​

VariableValeur par défautOù
EXPO_PUBLIC_API_URLhttps://api.time.jostud.com/apitimemanager-mobile/.env.local (facultatif). Voir Lancer l'app.