Mes aventures numériques et citoyennes...

Libriste, Rust, Techno Critique, Photographie...

14 Jul 24

Mise en place de l'architecture DeuxFleurs

Ce petit mémo que j'ai réalisé à l'occasion de l'extension de la web api de garage.


Liste des ingrédients

OS - Debian 12

Langages - rust, go

Versioning - Git

Applicatifs - consul, bottin, garage, guichet

Facultatif - garage-admin-sdk-golang


Préparatifs

Consul

Pour ma part j'ai choisit l'installation depuis les binaires.

Sous Debian ca donne ceci...

> wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
> echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
> sudo apt update && sudo apt install consul

Bottin

LDAP Serveur sourcé DeuxFleurs. Ecrit en GO.

Récupération des sources sur le git de deuxfleurs

> git clone https://git.deuxfleurs.fr/Deuxfleurs/bottin

Garage

Solution développée par deuxfleurs pour faire de l'entre-hébergement.
Utilise le protocole S3 afin de géorépartir et synchroniser les données entre plusieurs site.
Ecrit en rust.

Plus d'infos sur le site web dédié de l'association

> git clone https://git.deuxfleurs.fr/Deuxfleurs/garage

Guichet

Interface d'administration web utilisée par Deuxfleurs. Ecrite en GO.

> https://git.deuxfleurs.fr/Deuxfleurs/guichet

Open API garage-admin-sdk-golang (Facultatif)

A utiliser si vous souhaitez contribuer à la WEB API de garage.

> https://git.deuxfleurs.fr/garage-sdk/garage-admin-sdk-golang

Mise en bouche

Consul

> consul agent -dev

Vérification depuis un navigateur

http://localhost:8500

Bottin

Depuis le répertoire de bottin

> go run .

    dn:          cn=admin,dc=bottin,dc=eu
    password:    oN2ITVymlkY

Guichet

> usr/local/go/bin/go run .
2024/07/16 07:56:06 Starting Guichet Server
2024/07/16 07:56:06 Starting HTTP server on :9991

Ouverture de l'interface web => http://localhost:9991

Login et MdP sont ceux fournis au démarrage de Bottin

Garage

0 - Exemple d'un fichier garage.toml

metadata_dir = "/tmp/meta"
data_dir = "/tmp/data"
db_engine = "sqlite"

replication_factor = 1

rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "5a64e910c3177bd91161f9431053b4c8d558e8f4cb3362927d778e22d78f2386"

[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"

[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"

[k2v_api]
api_bind_addr = "[::]:3904"

[admin]
api_bind_addr = "[::]:3903"
admin_token = "wHluLhBgzy6suqFmeLYOygJoLg/+PqfS22QmvF8FeXA="
metrics_token = "vxUz/9iYz3fmeag1FZ2FfknK3WD3Qm/oJ/bPRgLOp26="
> cargo run -- -c garage.toml server

1 - Récupérer l'ID du noeud

> target/debug/garage -c garage.toml status
==== HEALTHY NODES ====
ID                Hostname    Address         Tags  Zone  Capacity          DataAvail
875b228d68108aa3  debian-dev  127.0.0.1:3901              NO ROLE ASSIGNED

2 - Assigner un volume

> target/debug/garage -c garage.toml layout assign -z dc1 -c 1G 875b228d68108aa3
> target/debug/garage -c garage.toml layout show

==== CURRENT CLUSTER LAYOUT ====
ID                Tags  Zone  Capacity   Usable capacity
875b228d68108aa3        dc1   1000.0 MB  1000.0 MB (100.0%)

Zone redundancy: maximum

Current cluster layout version: 1
target/debug/garage -c garage.toml layout apply --version 1
==== COMPUTATION OF A NEW PARTITION ASSIGNATION ====

Partitions are replicated 1 times on at least 1 distinct zones.

Optimal partition size:                     3.9 MB
Usable capacity / total cluster capacity:   1000.0 MB / 1000.0 MB (100.0 %)
Effective capacity (replication factor 1):  1000.0 MB

dc1                 Tags  Partitions        Capacity   Usable capacity
  875b228d68108aa3        256 (256 new)     1000.0 MB  1000.0 MB (100.0%)
  TOTAL                   256 (256 unique)  1000.0 MB  1000.0 MB (100.0%)

Savourer

Réaliser une requête vers l'API Garage

> curl -X GET -H "Authorization: Bearer wHluLhBgzy3suqFmeLYMygJoLg/+PqfS22QmvF8FeXQ="  http://localhost:3903/v1/repair/scrub/start