[AlternC-dev] puppet, tentative de PoC

Retour à l'archive de la liste
Le site d'AlternC
Google Custom Search

Lunar lunar at anargeek.net
Lun 7 Mai 23:52:05 CEST 2007


Le lundi 07 mai à 22:50 +0200, Lunar écrivait:
> Le lundi 07 mai à 22:42 +0200, Nahuel ANGELINETTI écrivait:
> > Surtout si on peu l'étendre, maintenant est ce qu'on peut l'étendre
> > modulairement ?
> 
> Oui, c'est du Ruby. Dans le pire cas (ce n'est pas celui de Puppet, il
> est extensible ou intégrable proprement, de ce que j'ai vu), tu peux
> toujours « monkey patcher » (changement dynamique des méthodes des
> objets).

Bon, j'avais envie de me changer les idées, alors j'ai regardé pour
faire une « Proof of Concept ».

Le code est pas assez documenté, et j'ai perdu mon courage après une
demi-heure, pour que ce soit complètement évident. Donc c'est pas du
tout une mauvaise idée de demander des conseils.

Voici ce que j'imaginais faire :
 * Créer une table dans MySQL avec une liste de nom de fichier,
   propriétaire et et leur mode.
 * M'inspirer de la page expliquant comment écrire ses propres
   fonctions [1], afin d'écrire une fonction générant autant d'élements
   de type « file » que d'entrée dans la table.
 * Avoir un « manifest » appelant cette fonction et le donner à
   « puppetmasterd ».
 * Y relier un « puppetd », et espérer qu'il crée les fichiers demandés.

[1] http://reductivelabs.com/trac/puppet/wiki/WritingYourOwnFunctions

Ce qui m'a un peu découragé : il n'existe que deux types de fonctions :
« rvalue » et « statement ». Celle du premier type permettent de générer
une valeur que l'on trouvera à droite d'une flèche (example simple : un
nombre aléatoire). Celle du second type sont plus flexibles, car elles
permettent de faire tout et n'importe quoi, vu qu'elles sont justes
exécutées.

La fonction « include » qui ressemble assez à ce que j'avais envie de
faire est un « statement ». Sauf qu'en fait, elle triche : elle rappelle
le parser sur un nouveau fichier, dans le contexte actuel du parser.

J'aurais bien aimé un intermédiaire, et ça me semble pas si compliqué à
faire. C'est juste que j'ai pas réussi à identifier comment je pouvais
facilement aller ajouter des éléments dans le context.

Les tests contiennent de nombreux exemples de génération dynamique de
morceaux d'AST (« grep newfile »), suffit de faire pareil.

À vous de fouiller plus loin, je sais pas si je me repencherai plus sur
la question avant un moment...

À peluche,
-- 
Lunar                                               http://anargeek.net/
   ·-|-·dans un data-center personne ne vous entendra crier·-|-·
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: signature.asc
Type: application/pgp-signature
Taille: 189 octets
Desc: Digital signature
URL: <http://lists.alternc.org/arch/dev/attachments/20070507/0aa382cf/attachment.pgp>


Plus d'informations sur la liste de diffusion Dev