Fabric (y Capistrano, presumiblemente la herramienta Ruby sin nombre con la que te encontraste) son un poco inusuales ya que son corredores de tareas con características adicionales para ejecutar tareas fácilmente en hosts remotos. No conozco ninguna otra herramienta popular que haga exactamente lo mismo, pero dependiendo de sus necesidades, hay algunas otras opciones que pueden funcionar para usted.
Grunt y Gulp son los principales corredores de tareas en el ecosistema Javascript. Si bien no están diseñados específicamente para implementar software, ambos tienen sistemas basados en complementos que le permiten hacer esto, y encontrará muchos artículos de personas que usan cualquiera de los dos para hacerlo. Por ejemplo, este tutorial utiliza el grunt-ssh
complemento para integrar ssh con grunt, mientras que este se basa en gulp-rsync
.
El uso de corredores de tareas para implementar código tiende a ser un enfoque favorecido por los desarrolladores que usan un sombrero de operaciones. Cuando le preguntas a un ingeniero de operaciones, es más probable que sugieran piratear este comportamiento en una herramienta de configuración. Esto puede tomar muchas formas (por ejemplo, empaquetar su aplicación en rpm o deb, luego instalarla como cualquier otro software), pero me enfocaré en lo que creo que sería el método más simple y directo para usted.
Ansible es aparentemente una herramienta de administración de configuración, pero realmente brilla en la orquestación de tareas , lo que yo definiría como "ejecutar un conjunto de acciones en un conjunto de servidores". La documentación oficial es un buen lugar para comenzar, pero para darle una idea de cómo se vería esto, puede tener un libro de jugadas (un archivo YAML que define un conjunto de tareas) 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
Cuando ejecute este archivo ansible-playbook
, buscará su lista de hosts (tan simple como un archivo ini, pero también puede ser una lista dinámica escrita en cualquier lenguaje de programación) para determinar qué servidores existen y en qué grupos están, y luego ejecute las tareas definidas en los servidores que le indique.
Ahora, especificó que deseaba permanecer en el ecosistema Javascript. Sin embargo, aunque Ansible es algo nuevo para usted, no tiene todas las complejidades de otro lenguaje de programación, ya que las configuraciones están escritas en YAML. También le permitirá hacer mucho más después, y a diferencia de varios de sus competidores, usa ssh para comunicarse, por lo que hay muy poca configuración involucrada (nada que instalar en las máquinas remotas).