Set-OPS-Public/roles/serveur_grafana/templates/setops.conf.j2
Daniel Allaire ee0e33d452 flux : plus aucune sortie vers Internet sans un role qui le dise
La sortie 80/443 que le socle donnait a toute machine ne servait plus a apt
(tout passe par le cache du site) mais a de la telemetrie et a des sorties
non declarees. Elle devient conditionnelle (seulement_si artefacts_amorcage
vide) ; la telemetrie de Grafana, Loki, Alloy et la verification de version
de Collabora sont coupees a la source ; rspamd et la sonde du genome
declarent leur sortie. Le devis du site evalue enfin seulement_si, ce qui
retire aussi le 465/587 vers un Postfix du site qui n'ecoute que sur 25.
Garde : test_conditions_site.py. Journal (125).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 23:11:13 -04:00

51 lines
3.3 KiB
Django/Jinja

[Service]
# `Restart=on-failure` vient du paquet, SANS `RestartSec` — donc 100 ms par defaut.
# Le 2026-08-10, une migration de base a echoue au premier demarrage : systemd a relance
# six fois en une seconde, chaque relance rejouant les migrations sur la meme base SQLite.
# Un echec unique s'est ainsi presente comme un desastre, et il a fallu remonter tout le
# journal pour retrouver la PREMIERE erreur — la seule qui disait quelque chose.
#
# Dix secondes laissent le temps de voir, de journaliser, et n'empilent pas les migrations.
RestartSec=10
Environment=GF_SERVER_DOMAIN={{ serveur_grafana_hostname }}
Environment=GF_SERVER_ROOT_URL={{ serveur_grafana_root_url }}
Environment=GF_SECURITY_ADMIN_PASSWORD={{ serveur_grafana_admin_password }}
Environment=GF_USERS_ALLOW_SIGN_UP=false
{# GRAFANA N'APPELLE PERSONNE (mesure du 2026-10-10). Par defaut il interroge grafana.com
(versions, greffons) et envoie ses compteurs d'usage a stats.grafana.org : ~124 et ~70
connexions par jour, depuis le site et depuis chaque locataire. Les avatars viennent de
gravatar.com, les nouvelles de grafana.com. Rien de tout cela ne sert une console
interne ; les mises a jour arrivent par apt, comme le reste. #}
Environment=GF_ANALYTICS_REPORTING_ENABLED=false
Environment=GF_ANALYTICS_CHECK_FOR_UPDATES=false
Environment=GF_ANALYTICS_CHECK_FOR_PLUGIN_UPDATES=false
Environment=GF_ANALYTICS_FEEDBACK_LINKS_ENABLED=false
Environment=GF_SECURITY_DISABLE_GRAVATAR=true
Environment=GF_NEWS_NEWS_FEED_ENABLED=false
{# LA SYNTHESE COMME PAGE D'ACCUEIL (2026-10-04) : a la connexion, la question « faut-il
agir ? » plutot que la liste des tableaux. Le fichier est pose par ce role (tableau de
synthese) ; sans lui, Grafana revient a son accueil par defaut, sans erreur. #}
Environment=GF_DASHBOARDS_DEFAULT_HOME_DASHBOARD_PATH={{ serveur_grafana_dashboards_dir }}/setops-synthese.json
{# Le formulaire local est offert, ou il ne l'est pas — et le gabarit le DIT dans
les deux cas. Cette ligne vivait sous le `if` du SSO : SSO eteint, elle
disparaissait, et c'est le defaut de Grafana qui decidait en silence. Un
reglage d'authentification qu'aucun fichier n'ecrit est un reglage que
personne ne peut relire.
Masquer le formulaire ne supprime pas le compte : `grafana-cli admin
reset-admin-password` reste utilisable sur l'hote. #}
Environment=GF_AUTH_DISABLE_LOGIN_FORM={{ 'false' if serveur_grafana_connexion_locale | bool else 'true' }}
{% if serveur_grafana_oidc_actif %}
Environment=GF_AUTH_GENERIC_OAUTH_ENABLED=true
Environment=GF_AUTH_GENERIC_OAUTH_NAME={{ serveur_grafana_oidc_nom }}
Environment=GF_AUTH_GENERIC_OAUTH_CLIENT_ID={{ serveur_grafana_oidc_client_id }}
Environment=GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET={{ serveur_grafana_oidc_client_secret }}
Environment="GF_AUTH_GENERIC_OAUTH_SCOPES={{ serveur_grafana_oidc_scopes }}"
Environment=GF_AUTH_GENERIC_OAUTH_AUTH_URL={{ serveur_grafana_oidc_base }}/auth
Environment=GF_AUTH_GENERIC_OAUTH_TOKEN_URL={{ serveur_grafana_oidc_base }}/token
Environment=GF_AUTH_GENERIC_OAUTH_API_URL={{ serveur_grafana_oidc_base }}/userinfo
Environment=GF_AUTH_GENERIC_OAUTH_LOGIN_ATTRIBUTE_PATH=preferred_username
{% if serveur_grafana_oidc_role_path %}
Environment="GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_PATH={{ serveur_grafana_oidc_role_path }}"
Environment=GF_AUTH_GENERIC_OAUTH_ROLE_ATTRIBUTE_STRICT=false
{% endif %}
{% endif %}