Fabric (e Capistrano, presumibilmente lo strumento Ruby senza nome in cui ti sei imbattuto) sono un po 'insoliti in quanto sono runner con funzionalità extra per eseguire facilmente attività su host remoti. Non sono a conoscenza di altri strumenti popolari che fanno esattamente la stessa cosa, ma a seconda delle tue esigenze ci sono alcune altre opzioni che potrebbero funzionare per te.
Grunt e Gulp sono i principali runner nell'ecosistema Javascript. Sebbene non siano progettati specificamente per distribuire software, entrambi hanno sistemi basati su plug-in che ti consentono di farlo e troverai molti articoli di persone che usano uno di essi per farlo. Ad esempio, questo tutorial usa il grunt-ssh
plugin per integrare ssh con grunt, mentre questo si basa su gulp-rsync
.
L'uso dei task runner per distribuire il codice tende ad essere un approccio preferito dagli sviluppatori che indossano un cappello operativo. Quando chiedi a un ingegnere operativo, è più probabile che suggeriscano di hackerare questo comportamento in uno strumento di configurazione. Questo può assumere molte forme (ad esempio, impacchettare la tua app in un rpm o deb, quindi installarla come qualsiasi altro software), ma mi concentrerò su quello che penso sarebbe il metodo più semplice e diretto per te.
Ansible è apparentemente uno strumento di gestione della configurazione, ma brilla davvero nell'orchestrazione delle attività , che definirei come "esecuzione di una serie di azioni su una serie di server". La documentazione ufficiale è un buon punto di partenza, ma per darti un'idea di come potrebbe essere, potresti avere un playbook (un file YAML che definisce una serie di attività) come questo:
- 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 esegui questo file ansible-playbook
, verrà visualizzato l'elenco degli host (semplice come un file ini, ma può anche essere un elenco dinamico scritto in qualsiasi linguaggio di programmazione) per determinare quali server esistono e in quali gruppi si trovano, quindi eseguire le attività definite sui server a cui lo si dice.
Ora, hai specificato che volevi rimanere nell'ecosistema Javascript. Tuttavia, sebbene Ansible sia una novità per te, non ha tutte le complessità di un altro linguaggio di programmazione, poiché le configurazioni sono scritte in YAML. Ti permetterà anche di fare molto di più in seguito, e a differenza di molti dei suoi concorrenti, usa ssh per comunicare, quindi c'è pochissima installazione in gioco (niente da installare sui computer remoti).