4.6 KiB
Guinness Server
Origine :
La version d'origine a un gros souci :
le Makefile
tourne désepérement
en boucle !
J'ai donc décidé, pour occuper mes longues journées de
retraite sanitaire, de sortir la disqueuse et de tenter de trouver
le bug. Et ça ne va pas être simple, le Makefile d'origine est
très convolué...
Par la suite, j'ai l'intention d'y apporter quelques modifications que je trouverais à mon gout. Elles seront décrites plus bas dans la page.
Méthodologie :
Pour commencer, je vais utiliser un mélange de rache et de poudre verte, additionné d'un peu de jus de citron pour le goût : importer les fichiers un à un jusqu'à ce que ça marche. Et par la suite, remttre les choses au clair.
Première étape : tenter de compiler le main()
du serveur. Oké, il demande
un certain nombre de .h
, que je m'empresse de lui fournir à partir de
l'original. C'est au moment où il me demande le config.h
que j'allume
la disqueuse, je n'ai qu'un config.h.in
sous la main. Qu'à cela ne tienne,
kraftons vite ce fichier manquant à la main.
Voilà finalement, avec cette méthode (que je n'hésite à appeler le goutte-à-goutte), j'ai reconstitué un Makefile qui fonctionne et compile le client et le serveur.
Résultat :
Et voilà une session typique de remote-picole :
tth@lubitel:~/Devel/GuinnessServer$ ./guinnessd
guinnessd: Sat 28 Mar 2020 15:21:35 - Impossible d'ouvrir le repertoire [/var/tmp/drinks.d]
guinnessd: Sat 28 Mar 2020 15:21:35 - Boissons disponibles :
guinnessd: Sat 28 Mar 2020 15:21:35 - 0 : guinness
guinnessd: Sat 28 Mar 2020 15:21:35 - Serveur en attente de connexions (port 1664)...
guinnessd: Sat 28 Mar 2020 15:22:18 - Connexion acceptee...
guinnessd: Sat 28 Mar 2020 15:22:18 - Connexion entrante : 127.0.0.1 localhost
guinnessd: Sat 28 Mar 2020 15:22:18 - Ports (loc/dist) : 1664 / 47647
guinnessd: Sat 28 Mar 2020 15:22:18 - Utilisateur : [tth]
guinnessd: Sat 28 Mar 2020 15:22:18 - Boisson preferee : [guinness]
guinnessd: Sat 28 Mar 2020 15:22:18 - Message de logout : [Bye bye...]
guinnessd: Sat 28 Mar 2020 15:22:18 - Date de connexion : [Sat 28 Mar 2020 15:22:18]
guinnessd: Sat 28 Mar 2020 15:22:19 - Broadcast pour [tth] : MESSAGE
guinnessd: Sat 28 Mar 2020 15:22:19 - de [---] : tth a rejoint le serveur de Guinness.
« Ah, c'est l'heure d'aller boire une bière, et comme il ne faut jamais boire le ventre vide, je vais manger une Guinness avant. »
tth@lubitel:~/Devel/GuinnessServer$ ./guinness -u tth
Serveur : [127.0.0.1] Port : [1664]
Utilisateur : [tth] Boisson : [guinness] Logout : [Bye bye...]
Pr<50>fixe : [/]
-+- Connexion acceptee. -+-
Bienvenue sur le serveur de Guinness.
> <---> tth a rejoint le serveur de Guinness.
> /1
.____,ooo____.
,d#MMMMMMMMMMMMMMMMMM#o.
|MMMMMMMMMMMMMMMMMMMMMMMM
|MMMMMMMMMMMMMMMMMMMMMMMM
|MMMMMMMMMMMMMMMMMMH#*#**
|M'"""""""""""""'`
|M.
`ML
HP ##o#
|L TMP]
M . *&' . `
|, |dL.?-\.~b \:^ |
`| ` ` ' `` ,
H `
|.
`| |
M ,'
| |
|, |
|| |
J' |
M. J|
HM\\ -':|
`"=+\&#HMH#*??v/''
`""""`""
>
Modifications
- ajouter une variable d'environnement
DRINKS_DIR
pour spécifier l'emplacement de la réserve de picole. - modifier la gestion des fichiers de picole afin d'avoir une description succinte dans le listing du bar.
Conteneur
Le serveur BaaS (Beverage as a Service) est dorénavant disponible sous forme de conteneur.
Génération de l'image
Création de l'image guinnessd:latest
make -f Makefile.docker build
Utilisation du conteneur
- Le service écoute sur le port
1664
. - Le bar se situe dans
/usr/local/share/picoles
et est déjà approvionné. il est donc possible d'en faire un volume Docker.
docker run --rm -p 1664:1664 guinnessd:latest
Docker Swarm
Ma préférence allant à l'utilisation de Docker via les Docker Swarm, vous touverez ci-dessous un fichier de stack
version: 3.9
service:
guinnessd:
image: guinnessd:latest
logging:
driver: journald
options:
tag: "docker: guinnessd"
ports:
- target: 1664
published: 1664
mode: host
deploy:
endpoint_mode: dnsrr
mode: replicated
replicas: 1 # Multipliez les barmen en ajoutant des réplicas :-)