Lancement de Mecano, fonctions pour le déploiement de systèmes
By WORMS David
12 févr. 2012
- Catégories
- DevOps & SRE
- Node.js
- Tags
- Automation
- Infrastructure
- CoffeeScript
- JavaScript
- Open source [plus][moins]
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
Mis à jour en juillet 2016, Mecano est désormais renommé Nikita.
Nous publions Node Mecano sur GitHub, qui regroupent des fonctions communes utilisées lors du déploiement de systèmes. L’idée était de regrouper ces fonctions dans une bibliothèque complète.
Le code a commencé lorsque nous avons écrit Heco et lorsque nous avons déployé un cluster Hadoop pour l’un de nos clients il y a maintenant 1 an. Il a trouvé l’inspiration dans API de ressources Chef.
Les fonctionnalités sont encore limitées et il y a évidemment de nombreuses améliorations potentielles, mais nous voulions publier le code aussi tôt que possible. Nous l’avons trouvé très utile et l’API doit être suffisamment stable pour l’intégrer dans votre propre projet.
Les fonctions couvertes par Mecano sont copy
, download
, execute
, extract
, git
, ln
, mkdir
, remove
et render
. Leur API est toujours la même. Le premier argument définit une ou plusieurs commandes à exécuter (un objet ou un tableau d’objets) et le second est un callback appelé à la fin, qui vous indique le nombre de commandes communes exécutées. Par exemple, pour copier 2 fichiers, le code ressemblera à ceci :
mecano = require ('mecano');
mecano.copy ([
{source: 'fichier_1', destination: 'dest_1'},
{source: 'fichier_2', destination: 'dest_2'}
], (err, copié) ->
console.log ('Nombre de fichiers copiés:' + copiés);
Si vous appelez la même commande une deuxième fois, la valeur de copied
sera 0
car aucun nouveau fichier n’a été copié.
Les options partagent un ensemble de propriétés communes pour exécuter la commande de manière conditionnelle et valider son résultat. Par exemple, la commande suivante ne sera exécutée que si un fichier spécifié existe et émettra une erreur si le code de sortie n’est pas celui fourni.
mecano = require ('mecano');
mecano.execute ({
cmd: 'whoami',
if_exists: '/ home / itsme', // condition
code: 0 // code de sortie par défaut
}, (err, exécuté) ->
console.log ('La commande a-t-elle été exécutée' + (exécuté? 'oui': 'non'));
J’espère que vous le trouverez également utile et n’hésitez pas à nous faire part de vos commentaires.