Alternative basée sur Javascript à Fabric

8

Existe-t-il un outil DevOps similaire pour fabriquer avec JavaScript comme langage de script? Je m'intéresse spécifiquement au côté de l'exécution à distance.

La plupart des outils que j'ai trouvés s'appuient sur python (par exemple tissu ) ou Ruby (par exemple Capistrano, Chef). Cependant, dans mon équipe, nous n'utilisons ces langues pour rien d'autre. Bien que ces langages soient excellents, ils ne sont pas aussi universels que JavaScript dans l'industrie du développement Web.

Je mentionne le tissu parce qu'il est idéal pour ce que je veux, sauf que j'ai des compétences minimales en python (malheureusement).

Henri
la source
2
De quel tissu parlez-vous? Pourrait être obtenir un lien? S'agit-il de MySQL Fabric ? C'est idéal pour "ce que vous voulez" mais que voulez-vous?
James Shewey
2
@JamesShewey J'ai mis à jour mon message. fabfile.org . Thx
Henry

Réponses:

1

Shipit est ce que vous recherchez.

Shipit est un moteur d'automatisation et un outil de déploiement écrit pour node / iojs.

Shipit a été conçu pour être une alternative Capistrano pour les personnes qui ne connaissent pas le rubis ou qui ont rencontré des problèmes avec celui-ci. Si vous souhaitez écrire des tâches en JavaScript et profiter de l'écosystème de nœuds, Shipit est également pour vous.

Vous pouvez automatiser tout avec Shipit, mais la plupart du temps, vous souhaiterez déployer votre projet à l'aide de la tâche de déploiement Shipit.

Vaughan
la source
6

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-sshplugin 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://[email protected]/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).

Xiong Chiamiov
la source
1
Merci très utile. (et oui je parlais de Capistrano - j'ai mis à jour mon post)
Henry