Fabric (e Capistrano, presumivelmente a ferramenta Ruby sem nome que você encontrou) são um pouco incomuns, pois são executores de tarefas com recursos extras para executar tarefas facilmente em hosts remotos. Não conheço outras ferramentas populares que fazem exatamente a mesma coisa, mas, dependendo das suas necessidades, existem algumas outras opções que podem funcionar para você.
Grunt e Gulp são os principais executores de tarefas no ecossistema Javascript. Embora não tenham sido projetados especificamente para implantar software, ambos têm sistemas baseados em plugins que permitem fazer isso, e você encontrará muitos artigos de pessoas que usam um deles . Por exemplo, este tutorial usa o grunt-ssh
plug - in para integrar ssh com grunt, enquanto este depende gulp-rsync
.
O uso de executores de tarefas para implantar código tende a ser uma abordagem preferida pelos desenvolvedores que estão usando um chapéu de operações. Quando você pergunta a um engenheiro de operações, é mais provável que sugira invadir esse comportamento em uma ferramenta de configuração. Isso pode assumir várias formas (por exemplo, empacotar seu aplicativo em um rpm ou deb e instalá-lo como qualquer outro software), mas vou focar no que acho que seria o método mais simples e direto para você.
O Ansible é ostensivamente uma ferramenta de gerenciamento de configuração, mas realmente brilha na orquestração de tarefas , que eu definiria como "executando um conjunto de ações em um conjunto de servidores". A documentação oficial é um bom lugar para começar, mas para lhe dar uma idéia de como isso pode ser, você pode ter um manual (um arquivo YAML que define um conjunto de tarefas) como este:
- hosts: webservers
tasks:
- name: update code checkout
git:
repo: ssh://git@github.com/mylogin/hello.git
dest: /var/www
version: master
- name: restart webserver
command: restart-command-you-run
Quando você executa esse arquivo ansible-playbook
, ele pesquisa sua lista de hosts (tão simples quanto um arquivo ini, mas também pode ser uma lista dinâmica escrita em qualquer linguagem de programação) para determinar em que servidores existem e em quais grupos eles estão. execute as tarefas definidas nos servidores para os quais você diz.
Agora, você especificou que queria permanecer no ecossistema Javascript. No entanto, embora o Ansible seja algo novo para você, ele não possui todas as complexidades de outra linguagem de programação, pois as configurações são escritas em YAML. Ele também permitirá que você faça muito mais tarde e, diferentemente de vários de seus concorrentes, usa ssh para se comunicar, então há muito pouca configuração envolvida (nada para instalar nas máquinas remotas).