tplconfig

Configuration with jinja templates


Keywords
jinja2, template, devops
License
BSD-3-Clause
Install
pip install tplconfig==0.1.0

Documentation

tplconfig

Configuration par template jinja à partir d'une source (yaml, json, http, python, environnement)

Travis Build Status Number of PyPI downloads Latest Version License

Fonctionnalités

  • Templates Jinja2
  • Configuration multi-sources (yaml, json, http, python, env)
  • Stockage de la configuration dans un cache permanent (30 secondes)

Exemples

$ tplconfig -C yaml:///config.yml -i /etc/postfix/main.cf.tpl -o /etc/postfix/main.cf

# Pareil à ci-dessus car le nom et chemin du fichier final est déduit du template:
$ tplconfig -C yaml:///config.yml -i /etc/postfix/main.cf.tpl

# Chargement par un package python stockant les templates
$ tplconfig -C http://localhost/config.yml -t mypackage \
   -i postfix/main.cf.tpl -o /etc/postfix/main.cf

Chargement de la configuration

Formats implémentés:

  • yaml: yaml://<chemin_relatif_ou_absolu>
  • json: json://<chemin_relatif_ou_absolu>
  • http / https (REST json): http://uri
  • module python: python://mypackage.mymodule
  • class python: python://mypackage.mymodule:MyClass
  • etcd: (en cours...)

Choix par le paramètre -C FORMAT:// ou par la variable d'environnement : SETTINGS=FORMAT://<chemin>

Templates Jinja2

  • Un template peut se trouver dans un package ou dans un répertoire.

Dans un répertoire

/etc/postfix/main.cf.tpl

Structure d'un package python avec des templates

  • Le package doit être installé ou disponible dans PYTHONPATH
mypackage
    __init__.py
    templates/postfix.conf.tpl
    templates/system/resolv.conf.tpl

Variables d'environnement une configuration

Si vous utiliser ENV_MYVAR comme valeur, tplconfig cherchera dans l'environnement la variable MYVAR et l'utilisera en remplacement de ENV_MYVAR

Exemple avec une configuration YAML:

hosts:
    - 1.1.1.1
    - 2.2.2.2
hostname: ENV_HOSTNAME

La configuration deviendra:

# En admettant que votre HOSTNAME renvoi mx1

{
    'hosts': ['1.1.1.1', '2.2.2.2'],
    'hostname': 'mx1'
}

Environnement

TPLCONFIG_SETTINGS

default: yaml://config.yml

TPLCONFIG_PACKAGE

default: None

Fonctions incluses dans les templates

cpu_count

  • Renvoi en valeur numérique, le nombre de processeurs disponibles
{{ cpu_count }}

from_env

  • Charge le contenu d'une variable d'environnemnt
{{ from_env('MY_VAR') }}

{{ from_env('MY_VAR', 'mydefaultvalue') }}

{{ from_env('MY_VAR', '123', cast='int') }}

Transformations de type pour les variables d'environnement (par défaut: aucun)

cast='str'

cast='int'

cast='float'

cast='bool'

cast='list'