[Salt-fr] Quelques questions - best practices salt

Adnan Aita adnan.aita at gmail.com
Mer 18 Nov 16:36:53 CET 2015


Hello,

je bute sur un petit soucis d'ordre idéologique.

J'ai des formules qui me gère proprement mes installs BDD et Apache, etc.

j'essaie maintenant de m'assurer que les bonnes bases sont déployées au bon
endroit en fonction des applicatifs et des versions d'environnement sachant
que :
 * en dev, j'ai souvent les bases et les httpd sur la même machine
 * en test, c'est mixed
 * en prod c'est toujours séparés

Ce que j'ai fait :

* dans mes pillar, j'ai un folder apache (c'est pareil pour les BDD) qui
contient les données de confs pour mon vhost ou pour la base en question.
ils sont tous du type <env>_<nom appli>.

ex : $> ls /srv/salt/pillar/apache :
dev_appli1.sls
dev_appli2.sls
...
        $> ls /srv/salt/pillar/database:
dev_appli1.sls
dev_appli2.sls

* Dans les /etc/salt/grains de mes minions, je defini webenv:<env>_<nom
appli> en fonction de ce dont j'ai besoin, ainsi que le ou les roles
(webserver, database ou les deux comme pour les serveurs de tests par
exemple)

Ex de grain :
roles:
  - webserver
  - database

webenv:
  - dev_appli1
  - dev_appli2

Ça fonctionne bien aujourd'hui si dans le top.sls je fait un match grain,
sur webenv:<env>_<nom appli> pour définir à chaque fois ce que je veux, le
soucis c'est que j'ai bcp bcp d'applications, et je trouve le top file bien
trop gros.

exemple : $> cat top.sls
base:
  [...]
  'webenv:dev_appli1':
    - match: grain
    - apache.dev_appli1
    - databases.dev_appli1
    - crons.dev_appli1

  'webenv:dev_appli2':
    - match: grain
    - apache.dev_appli2
   [...]

Voici donc mes questions :
1/ J'ai essayé de faire en sorte de "déporter" les match grain pour les
vhosts par exemple dans un apache.sls dans mes pillar, le soucis est que je
n'arrive pas à inclure correctement quand je mix un 'include' avec un
(match grain). Si quelqu'un l'a déjà fait, je veux bien un exemple


2/ j'ai essayé de passer via jinja pour inclure les env via une boucle

    {% for env in salt['grains.get']('webenv', {}) %}
    - apache.{{ env }}
    {% endfor %}   ## LOOP : Install the Vhosts based on grains

C'est top, ca marche, mais j'ai le pb suivant :
* Toutes les applis n'ont pas de base, donc quand je fais pareil avec mes
bases, il n'est pas content des fichiers .sls non existant pour ces bases
qui n'existent pas.
* Si je crée un fichier vide avec par exemple juste (## No database) dans
le fichier, j'ai le même soucis. Et à supposer que ca soit la solution, ca
va me faire créer un packet de fichier vide car je compte gérer de la même
facon le déploiement des crons, etc.

3/ J'ai regardé pour utiliser les env de salt directement, mais je suis pas
très fan, car je me perd vite vu le nombre de state, je trouve la feature
topissime mais que si on a que quelques chaines très correctement
identifiées (et aujourd'hui c'est encore un peu le KO) donc je met cette
option de coté.

Je suis aussi preneur d'une autre idée.

bref, si certains d'entre vous on déjà eu cette problématique, je suis
preneur d'un retour d’expérience et d'un peu d'info.

Merci

Adnan
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.afpy.org/pipermail/salt-fr/attachments/20151118/47a09536/attachment.html>


Plus d'informations sur la liste de diffusion Salt-fr