diff --git a/pica-graphbot/Dockerfile b/pica-graphbot/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..95936c59e45d8eca8e13f1f28c1916dbd8901f3b --- /dev/null +++ b/pica-graphbot/Dockerfile @@ -0,0 +1,3 @@ +FROM chosto/graphbot:v1.4 + +CMD [ "/inject_env.sh" ] diff --git a/pica-graphbot/README.md b/pica-graphbot/README.md new file mode 100644 index 0000000000000000000000000000000000000000..4b7fc23e14e5c93c9b557e9f9168ee3aed8a9dc9 --- /dev/null +++ b/pica-graphbot/README.md @@ -0,0 +1,31 @@ +## GraphBot + +### Introduction + +Ce dossier contient les fichiers nécessaires pour lancer [Docker Graph Bot](https://gitlab.utc.fr/picasoft/projets/graph-bot) sur l'infrastructure de Picasoft. Voir le projet pour la documentation de référence. + +Le Dockerfile se base sur l'image officielle et rajoute un entrypoint permettant d'injecter les identifiants du serveur FTP au moment du lancement du conteneur, à partir de l'environnement. Sans cela, les identifiants seraient dans le fichier de configuration, ce qui empêche de le versionner. + +### Configuration + +La configuration se fait : +* Dans le [docker-compose.yml](./docker-compose.yml) pour les variables d'environnement (niveau de log, dossier de configuration...) +* Dans [config.json](./config/config.json) pour le comportement de DGB + +Pour le premier lancement, dans la mesure où DGB interroge plusieurs machines virtuelles, dont certaines à distance, il est nécessaire de créer un dossier `./config/auth` contenant les clés privées et certificats pour communiquer avec les socket Docker distants. + +Voir : +* [La nomenclature des fichiers](https://gitlab.utc.fr/picasoft/projets/graph-bot#hosts) +* [Le renouvellement des certificats pour se connecter à distance au socket Docker](https://wiki.picasoft.net/doku.php?id=technique:adminsys:docker:docker-socket-certs) si les certificats sont expirés ou qu'ils n'existent pas sur la machine de lancement. + +La configuration actuelle prévoit que DGB soit lancé sur la machine `monitoring`. + +### Secrets + +Au premier lancement, copier `./secrets/sftp.secrets.example` dans `./secrets/sftp.secrets` et remplacer par les valeurs de production. + +### Mise à jour + +Il suffit de changer le tag dans le [Dockerfile](./Dockerfile), de construire l'image, la pousser sur le registre de Picasoft et mettre à jour le Docker Compose. + +Vérifier le cas échéant les changements de configuration dans les [releases](https://gitlab.utc.fr/picasoft/projets/graph-bot/-/releases). diff --git a/pica-graphbot/config/config.json b/pica-graphbot/config/config.json new file mode 100644 index 0000000000000000000000000000000000000000..00f9e697069c53956966861d6d4b5e846b84fe06 --- /dev/null +++ b/pica-graphbot/config/config.json @@ -0,0 +1,70 @@ +{ + "organization": "Picasoft", + "merge": false, + "hosts": [ + { + "name": "pica01", + "url": "pica01.picasoft.net", + "port": 2376, + "exclude": [], + "tls_config": + { + "ca_cert": "auth/pica01/ca.pem", + "cert": "auth/pica01/cert.pem", + "key": "auth/pica01/key.pem" + } + }, + { + "name": "pica02", + "url": "pica02.picasoft.net", + "port": 2376, + "exclude": [], + "tls_config": + { + "ca_cert": "auth/pica02/ca.pem", + "cert": "auth/pica02/cert.pem", + "key": "auth/pica02/key.pem" + } + }, + { + "name": "pica01-test", + "url": "pica01-test.picasoft.net", + "port": 2376, + "exclude": [], + "tls_config": + { + "ca_cert": "auth/pica01-test/ca.pem", + "cert": "auth/pica01-test/cert.pem", + "key": "auth/pica01-test/key.pem" + } + }, + { + "name": "monitoring", + "url": "localhost" + } + ], + "color_scheme": { + "traefik": "#edb591", + "port": "#86c49b", + "link": "#75e9cd", + "image": "#e1efe6", + "container": "#ffffff", + "network": "#ffffff", + "volume": "#819cd9", + "bind_mount": "#b19cd9", + "host": "#c7ceea", + "dark_text": "#32384f", + "bright_text": "#ffffff" + }, + "hide": ["binds"], + "actions": [ + { + "type": "sftp", + "hostname": "uploads.picasoft.net", + "port": 2222, + "login": "pica", + "password": "SFTP_USER", + "remote_path": "SFTP_PASSWORD" + } + ] +} diff --git a/pica-graphbot/docker-compose.yml b/pica-graphbot/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..10e363b3626e17647ae3b75022cdcbaa81cdba81 --- /dev/null +++ b/pica-graphbot/docker-compose.yml @@ -0,0 +1,27 @@ +version: "3.7" + +networks: + graphbot: + +volumes: + output: + name: graphbot + +services: + app: + image: registry.picasoft.net/graph-bot:v1.4 + container_name: graph-bot + init: true + networks: + - graphbot + volumes: + - ./config:/config + - /var/run/docker.sock:/var/run/docker.sock + - output:/output + environment: + CONFIG_PATH: '/config' + OUTPUT_PATH: '/output' + CRON_CONFIG: '0 0 * * *' + env_file: + - ./secrets/sftp.secrets + restart: unless-stopped diff --git a/pica-graphbot/inject_env.sh b/pica-graphbot/inject_env.sh new file mode 100644 index 0000000000000000000000000000000000000000..90baa39274e969673bd60d87ac45cae4b1dca9f2 --- /dev/null +++ b/pica-graphbot/inject_env.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +if [ -z "${SFTP_USER}" ]; then + echo "SFTP_USER not set, exiting!" + exit 1 +else + +if [ -z "${SFTP_PASSWORD}" ]; then + echo "SFTP_PASSWORD not set, exiting!" + exit 1 +else + +echo "Inject SFTP credentials..." +sed -i "s/SFTP_USER/$SFTP_USER/g" /entrypoint.sh +sed -i "s/SFTP_PASSWORD/$SFTP_PASSWORD/g" /entrypoint.sh + +echo "Launching original entrypoint..." +/entrypoint.sh diff --git a/pica-graphbot/secrets/sftp.secrets.example b/pica-graphbot/secrets/sftp.secrets.example new file mode 100644 index 0000000000000000000000000000000000000000..6aa58bdae386a2a468d94a37fce0aac15f52454e --- /dev/null +++ b/pica-graphbot/secrets/sftp.secrets.example @@ -0,0 +1,2 @@ +SFTP_USER=user +SFTP_PASSWORD=password