Обновление от июля 2016 года, Mecano теперь переименован в Nikita.
Мы выпускаем Node Mecano на GitHub, в котором собраны общие функции, используемые при развертывании систем. Идея заключалась в том, чтобы объединить эти функции в единую библиотеку.
Код был запущен, когда мы писали Heco, а также когда мы развернули кластер Hadoop для одного из наших клиентов. Источником вдохновения для этого послужил API Chef Resource.
Функциональные возможности по-прежнему ограничены, и, очевидно, есть много потенциальных улучшений, но мы хотели выпустить код как можно раньше. Мы уже убедились, что он очень полезен, и API должен быть достаточно стабильным, чтобы интегрировать его в ваш собственный проект.
В Mecano предусмотрены следующие функции: копирование, загрузка, выполнение, извлечение, git, ln, mkdir, удаление и рендеринг. Их API всегда одинаков. Первый аргумент определяет одну или несколько команд для запуска (объект или массив объектов), а второй — это обратный вызов, вызываемый по завершении, который сообщает вам, сколько общих команд действительно выполняется. Например, чтобы скопировать 2 файла, код будет выглядеть следующим образом:
mecano = требуется(‘mecano’); mecano.copy([ { источник: ‘file_1’, пункт назначения: ‘dest_1’ }, { источник: ‘file_2’, пункт назначения: ‘dest_2’ } ], (ошибка, скопировано) -> console.log( ‘Номер скопированного файла: ‘+скопировано );
Вызовите ту же команду во второй раз, и значение copyed будет равно “0”, поскольку новый файл не был скопирован.
У команды есть набор общих свойств для условного запуска команды и проверки ее результата. Например, следующая команда будет выполнена только в том случае, если указанный файл существует, и выдаст ошибку, если код завершения не соответствует указанному.
mecano = требуется(‘mecano’); mecano.execute({ команда: ‘whoami’, if_exists: ‘/home/itsme’, //код условия: 0 //код завершения по умолчанию }, (ошибка, выполнено) -> console.log( ‘Выполнено ли команда «выполнить»+(выполнена?»да»: «нет»));
Надеюсь, вы тоже найдете ее полезной и, не стесняйтесь, оставляйте нам свои отзывы.