2016-02-04 1 views
1

Eh bien, la question n'est pas nouvelle mais je n'arrive toujours pas à trouver une solution sympa. Je distribue des fichiers binaires de 100 à 300 Mo via un serveur de fichiers de marionnettes, mais cela fonctionne très mal en cas de performance, j'en suis sûr à cause des vérifications de md5. Maintenant, j'ai plus de 100 serveurs et mon maître marionnette travaille vraiment dur pour gérer toutes ces vérifications de calcul md5. Dans la marionnette 3.x, la somme de contrôle pour le fichier {} ne fonctionne pas. Je suis incapable de mettre à jour à la marionnette 4.x et je n'ai aucune chance de changer le flux. les fichiers doivent provenir du serveur de fichiers de marionnettes. Donc je ne peux pas croire qu'il n'y a pas de type de fichier personnalisé avec l'option de checksum fixe, mais je ne peux pas le trouver :( Ou peut-être il ya un autre moyen de télécharger des fichiers depuis le serveur de fichiers de marionnettes? rsync ou paquet comme paquet natif l'option impossible pour moi.puppet fileserver distribuer les binaires

Répondre

3

Il est en effet raisonnable de supposer que l'utilisation de l'algorithme de contrôle par défaut (MD5) lors de la gestion des fichiers volumineux aura un impact sur les performances importantes. le File resource a un checksum attribute qui est supposé être utilisable pour spécifier un autre algorithme de checksumming parmi ceux pris en charge par Puppet (dont certains ne sont pas réellement checksums en soi), mais it was buggy in many versions of Puppet 3. cette fois, il ne semble pas que le correctif implémenté dans Puppet 4 ait été rétroporté dans la série Puppet 3.

Si vous avez seulement besoin de distribuer des fichiers, et que vous ne voulez pas les mettre à jour par la suite ou conserver leur cohérence via Puppet, alors vous pouvez envisager de désactiver complètement la somme de contrôle. Cela pourrait ressembler à ceci:

file { '/path/to/bigfile.bin': 
    ensure => 'file', 
    source => 'puppet:///modules/mymodule/bigfile.bin', 
    owner => 'root', 
    group => 'root', 
    mode  => '0644', 
    checksum => 'none', 
    replace => false 
} 

Si vous souhaitez gérer les fichiers existants, cependant, alors Puppet a besoin d'un moyen de déterminer si un fichier déjà présent sur le nœud est à jour. C'est l'un des deux principaux objectifs de la somme de contrôle. Si vous insistez pour distribuer le fichier via le serveur de fichiers Puppet, et que vous êtes bloqué sur Puppet 3, je crains que vous n'ayez pas de chance pour alléger la charge. Le serveur de fichiers de Puppet est étroitement intégré au type de ressource File et n'est pas destiné à servir à des fins générales. Au meilleur de ma connaissance, il n'y a pas de type de ressource tiers qui tire parti de cela. Dans tous les cas, le serveur de fichiers lui-même est un contributeur majeur au problème de Filechecksum paramètre ne fonctionne pas - versions boguées n'exécutent aucun type de contrôle autre que MD5. Vous pouvez également envisager d'empaqueter votre gros fichier dans le format d'empaquetage natif de votre système, de le déposer dans votre référentiel de packages interne et de gérer le package (via une ressource Package) au lieu de gérer le fichier directement. Cela évite de le distribuer via le serveur de fichiers, mais c'est à peu près le point.

+0

Merci pour la réponse! Ouais ... Je suivais le problème PUP-1208 pendant un moment :), mais je ne savais pas qu'il était rétroporté sur la marionnette 3.x J'ai essayé 3.8.5 et ça n'a pas fonctionné comme 3.5.x Je veux dire md5lite ou sha même ctime ou mtime. Dans mon cas, je me soucie de l'état de l'état du fichier donc mtime devrait être tout à fait suffisant mais cela ne fonctionne pas :( Btw Je suis resté sur la marionnette 3.x en raison du projet Foreman nous l'utilisons beaucoup et il ne prend toujours pas en charge marionnette 4. Peut-être devrait essayer marionnetteDB ... –

+0

@RomanIuvshin, j'ai écrit que le correctif à PUP-1208 n'a * pas * été backported, donc je ne suis pas surpris d'entendre que v3.8.5 présenté le même mauvais comportement que v3.5 Pour ce qui est de puppetDB, je ne vois pas vraiment ce que vous espérez faire dans cette situation: si vous devez rester sur Puppet 3 mais vous éloigner de MD5, vous devrez probablement vous éloigner du serveur de fichiers Puppet. La suggestion d'utiliser des paquets à la place est une alternative assez simple, mais il y en a d'autres: –

+0

Oh je vois maintenant, merci pour la bonne clarification! –