Table des matières

Manager

Présentation d'un outil python pour manipuler/gérer les process du serveur de jeu Ryzom Core pour Khanat.

Pre-requis

Il faut installer :

On récupère les scripts

Attention, dans la version de test on pointe sur mon repo khanat-code, a terme on sera sur la branche officielle

git clone https://git.khaganat.net/aleajactaest/khanat-code.git
cd khanat-code; git checkout feature/19-package-server-in-a-Docker-container; cd ..

programme

Serveur

Le serveur de management est géré par un script. Il est lancé en tâche de fond et attend les commandes

khanat-code/code/khaganat/tools/manage.py

Client

Il existe actuellement un client pour manipuler le serveur.

A terme, il existera un autre client pour manipuler le serveur. [objectif l'intégrer à l'outil Web de management de khaganat - django]

khanat-code/code/khaganat/tools/client.py

Installation

Controler la présence des scripts

Création d'un certificat

Pour la création du certificat, nous utilisons la version TLS1.2.

Vous retrouver dans le code un script python pour générer (pour le test) les certificats

khanat-code/code/khaganat/tools/create_certificate.py

Il génère (en autre) :

Configuration

La configuration se compose de deux parties.

  1. configuration général (port d'écoute, certificat, adresse réseau d'écoute
  2. configuration de chacun des programmes (commande, répertoire de base, taille de la log et taille du buffer
[config]
# Define port listen (default 8000)
port = 8000

# key
keyfile = /home/gameserver/ca/appli/private/serverkey.pem

# certificate
certfile = /home/gameserver/ca/appli/certs/servercert.pem

# certification to check signature
ca_cert = /home/gameserver/ca/appli/certs/cachaincert.pem

# address listen (default all port)
address =

##############################
##############################
# List all program we manage #
##############################
##############################

##############################
# Admin Executor Service
##############################
[aes]

# command to launch the program
command = ryzom_admin_service -A/home/gameserver/khanat/server -C/home/gameserver/khanat/server -L/home/gameserver/log/khanat --nobreak --fulladminname=admin_executor_service --shortadminname=AES

# Path : where this program is launched
path = /home/gameserver/khanat/server/

# size buffer log for each program launched (number line stdout)
logsize = 1000

# buffer size (define value bufsize on subprocess.Popen, this buffer is use before read by manager)
bufsize = 100

# Define other program

Utilisation

Serveur

Démarrer le serveur

nohup /home/gameserver/ext/khaganat/tools/manage.py --log info --show-log-console --filelog /home/gameserver/log/khanat/manager.log -c /home/gameserver/khanat/khaganat.cfg --launch-program 2>/dev/null 1>/dev/null 0</dev/zero &

Client

Status de tous les programmes

contrôle l'état de tous les programmes (retourne “started” ou “stopped”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="STATUSALL"

Démarre tous les programmes

Démarre tous les programmes (retourne “started”, “already-started” ou “crashed”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="STARTALL"

Arrête tous les programmes

Arrête tous les programmes (retourne “stopped”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="STOPALL"

Arrête le manager (et tous les programmes)

Arrête le manager (ainsi que tous les programmes)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="SHUTDOWN"

Liste des programmes

Retourne la liste de tous les programmes disponible (démarré ou arrêté)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="LIST"

Status d'un programme

contrôle l'état de d'un programme (retourne “started” ou “stopped”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="STATUS" --program="aes"

Démarre d'un programme

Démarre un programme (retourne “started” ou “stopped”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="START" --program="aes"

Arrête un programme

Arrête un programme (retourne “stopped”)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="STOP" --program="aes"

Retourne la log d'un programme

Retourne les X derniers messages de la sortie standard (stdout) d'un programme.

firstline: première ligne que vous souhaitez récupérer

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="LOG" --program="aes" --firstline=0

Envoyer une entrée dans un programme

Envoie dans l'entrée du programme une action (Ex. help)

/home/gameserver/ext/khaganat/tools/client.py --key /home/gameserver/ca/appli/private/clientkey.pem --cert /home/gameserver/ca/appli/certs/clientcert.pem --ca_cert /home/gameserver/ca/appli/certs/cachaincert.pem --log="info" --show-log-console --command="ACTION" --program="aes" --action="help all"

Souvent utilisé avec la commande “LOG” qui permet de voir le résultat.

Fonctionnement

Le serveur “manager” se met en écoute “style” https.

Il attend les commandes et les envoient à ces fils (chaque fils gère un programme)

Nous utilisons le format REST pour communiquer avec le serveur (les données envoyées au format json).

A Faire