Fabric (et Capistrano, probablement l'outil Ruby sans nom que vous avez rencontré) sont un peu inhabituels en ce qu'ils sont des exécuteurs de tâches avec des fonctionnalités supplémentaires pour exécuter facilement des tâches sur des hôtes distants. Je ne connais pas d'autres outils populaires qui font exactement la même chose, mais selon vos besoins, il existe quelques autres options qui peuvent fonctionner pour vous.
Grunt et Gulp sont les principaux exécuteurs de tâches de l'écosystème Javascript. Bien qu'ils ne soient pas conçus spécifiquement pour déployer des logiciels, ils ont tous deux des systèmes basés sur des plugins qui vous permettent de le faire, et vous trouverez de nombreux articles de personnes utilisant l' un ou l' autre pour le faire. Par exemple, ce tutoriel utilise le grunt-ssh
plugin pour intégrer ssh avec grunt, tandis que celui-ci repose sur gulp-rsync
.
L'utilisation de runners de tâche pour déployer du code a tendance à être une approche privilégiée par les développeurs qui portent un chapeau d'opérations. Lorsque vous demandez à un ingénieur d'exploitation, il est plus susceptible de suggérer de pirater ce comportement dans un outil de configuration. Cela peut prendre de nombreuses formes (par exemple, empaqueter votre application dans un rpm ou deb, puis l'installer comme n'importe quel autre logiciel), mais je vais me concentrer sur ce que je pense être la méthode la plus simple et la plus directe pour vous.
Ansible est apparemment un outil de gestion de configuration, mais il brille vraiment à l' orchestration des tâches , que je définirais comme "l'exécution d'un ensemble d'actions sur un ensemble de serveurs". La documentation officielle est un bon endroit pour commencer, mais pour vous donner une idée de ce à quoi cela pourrait ressembler, vous pourriez avoir un playbook (un fichier YAML qui définit un ensemble de tâches) comme ceci:
- 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
Lorsque vous exécutez ce fichier avec ansible-playbook
, il recherchera votre liste d'hôtes (aussi simple qu'un fichier ini, mais peut également être une liste dynamique écrite dans n'importe quel langage de programmation) pour déterminer quels serveurs existent et dans quels groupes ils se trouvent, puis exécutez les tâches définies sur les serveurs auxquels vous le demandez.
Maintenant, vous avez spécifié que vous vouliez rester dans l'écosystème Javascript. Cependant, bien qu'Ansible soit une nouveauté pour vous, il n'a pas toutes les complexités d'un autre langage de programmation, car les configurations sont écrites en YAML. Il vous permettra également de faire beaucoup plus tard, et contrairement à plusieurs de ses concurrents, utilise ssh pour communiquer, donc il y a très peu de configuration impliquée (rien à installer sur les machines distantes).