7.4 KiB
deploydb
est un moyen de décrire des informations de déploiement ou de
configuration à propos de certains objets (hôtes, modules, webapps, woapps,
etc.)
Syntaxe
Le format du fichier de configuration est volontairement simple. Toute la logique est implémentée dans les clients qui accèdent à l'information stockée
Le fichier contient deux sortes d'informations:
- définition d'objet
- définition de faits
Les lignes vides ou commençant par '#' sont ignorées. Si une ligne commence par un espace, elle est fusionnée avec la ligne précédente.
Définition d'objet
Une définition d'objet a le format suivant:
otype oid[=values] [ATTRS...] [LINKS...]
otype
- type d'objet à créer ou à mettre à jour
oid
- identifiant de l'objet à créer ou à mettre à jour
values
- valeurs de l'objet, séparées par des virgules
ATTR
- attribut de l'objet
LINK
- définition d'objet lié
Une définition d'attribut a l'un des formats suivants:
name[=value]
name+[=value]
name-[=value]
name%[=value]
Les attributs sont multivalués, et par défaut, on rajoute la nouvelle valeur aux valeurs existantes sauf si elle existe déjà dans l'attribut.
value vaut par défaut 'true', ce qui n'est pas la même chose qu'une valeur vide. comparer les deux définitions suivantes:
first # first vaut 'true'
second= # second vaut ''
Les types de mise à jour valides sont:
=
ajout de la valeur si l'attribut ne la contient pas déjà+=
ajout inconditionnel d'une valeur à l'attribut-=
suppression d'une valeur de l'attribut%=
remettre à zéro l'attribut d'abord
Ainsi, les définitions suivantes sont équivalentes deux à deux:
attr=value attr=value # le doublon est supprimé
attr=value # c'est comme si on ne spécifie la valeur qu'une seule fois
attr=value attr%=first attr=second
attr=value attr-=value attr=first attr=second
Une définition de lien a le format suivant:
-otype oids... [ATTRS...]
otype
- type de l'objet lié
oids
- liste d'identifiants d'objets liés séparés par des virgules
ATTR
- attribut à rajouter à la définition du lien
Voici un exemple complet:
humain bob nom=Payet prenom=Robert
age=42
desc="un humain qui a un père, une mère et deux voitures"
-humain eric type=pere
-humain martine type=mere
-vehicule titine,bumblebee
humain eric nom=Payet prenom=Eric
humain martine nom=Payet prenom="Martine Joséphine"
vehicule titine marque=Citroen immatriculation=BX-467-PM
vehicule bumblebee marque=Camaro type=autobot
Définition de faits
Un fait est l'affirmation d'un lien d'action ou d'état entre deux objets, décrit par un verbe. Par exemple, pour décrire le fait que bob mange une tarte, on écrirait:
humain bob
aliment tarte
-humain bob
mange -aliment tarte
Une définition de fait a le format suivant:
-sotype soids... [DEFATTRS...]
verb -totype toids... [FACTATTRS...]
...
sotype
totype
- types d'objets source et cible
soid
toid
- identifiants des objets source et cible
verb
- identifiant du lien entre la source et la destination. en général, il s'agit
d'un verbe d'action ou d'état conjugué à la 3ème personne du singulier.
si le verbe commence par
~
alors la définition est inversée. par exemple, les deux faits suivants sont rigoureusement équivalents: ~~~ -otype src verb -otype dest -otype dest ~verb -otype src ~~~ cela permet de supporter les cas où la définition inverse est plus facile. DEFATTR
- attribut pour tous les faits définis dans cette déclaration
FACTATTR
- attribut spécifique au fait défini
deploydb
Le script deploydb
permet d'interroger la base de données ou de lancer une
fonction pour traiter le contenu de la base de données
Dans ce document, DEPLOYDBDIR
désigne le répertoire du script deploydb
- Options
-c, --config CONFIG
- spécifier un fichier de configuration à charger. la valeur par défaut est
deploydb.conf
si le fichier de configuration n'est pas spécifié ou est spécifié sans chemin,
deploydb:path
est initialisé avec la valeur par défaut suivante:~/etc/deploydb:/var/local/deploydb:DEPLOYDBDIR
sinon,
deploydb:path
est initialisé avec le répertoire de CONFIG -m, --module MODULE
- spécifier un module supplémentaire à charger. le module python effectivement
cherché dans le path et chargé est
MODULE_module
. La liste par défaut des modules à charger contient un seul élément,base
, ce qui signifie que le modulebase_module
est chargé. Les modules permettent de définir de la logique pour les objets, ou l'outil à lancer. -r, --func FUNC
- spécifier le nom de la fonction à lancer après le chargement des modules et
des fichiers de configuration. La valeur par défaut est
base.query
, qui interroge la base de données et affiche son contenu.La fonction est appelée avec les arguments de la ligne de commande, sans les options, qui sont traitées en amont.
--dump
- afficher le contenu complet de la base de données, pour débugger. ignorer
l'option
-r
Module base
Le module base
chargé par défaut définit
- les objets de type
deploydb
,host
- la fonction
query()
deploydb
En créant des instances de cet objet avec des identifiants normalisés, il est possible de modifier la configuration.
deploydb path dir=CONFDIR
- définir les répertoires de recherche pour les fichiers de configuration
spécifiés sans chemin. dans ce document, cette valeur est appelée
deploydb:path
deploydb include file=CONFIG
- définir des fichiers de configuration supplémentaire à charger. Si les
fichiers sont spécifiés sans chemin, il sont cherchés dans
deploydb:path
deploydb loadcsv file=CSVFILE
- charger des définitions d'objets depuis des fichiers CSV. Si les fichiers sont
spécifiés sans chemin, ils sont cherchés dans
deploydb:path
L'attribut
otype_col
qui vaut par défautotype
permet de définir la colonne qui contient le type d'objet. L'attributotype
permet de spécifier le type d'objet si la colonne n'existe pas dans le fichier.L'attribut
oid_col
qui vaut par défautoid
permet de définir la colonne qui contient l'identifiant d'objet à créer.Toutes les autres colonnes du fichier sont utilisées pour définir les attributs des objets.
host
Cet objet définit un hôte vers lequel on peut par exemple déployer un artifact.
host * domain=DOMAIN.TLD
- définir un domaine par défaut pour tous les hôtes spécifiés sans domaine
Les attributs suivants sont supportés:
host
- nom d'hôte. le domaine par défaut est ajouté le cas échéant. pour ne pas
rajouter un domaine, spécifier le nom avec un point final e.g
localhost.
hostname
- nom d'hôte sans le domaine
domain
- domaine sans le nom d'hôte
ip
- adresse IP de l'hôte
Si seul host
est spécifié, hostname
et domain
sont calculés en fonction de
sa valeur.
Si seul hostname
est spécifié, host
est calculé en fonction de sa valeur et
de celle de domain
Si ip
n'est pas spécifié, une résolution DNS est effectuée pour déterminer
l'adresse de host
Si l'objet est défini sans valeurs, alors la valeur finale est la liste des hôtes.
base.query()
Interroger la base de données
XXX déterminer le format des requêtes
-- coding: utf-8 mode: markdown -- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary