Answers: <p><a href="https://github.com/shipitjs/shipit" rel="nofollow noreferrer">Shipit</a> is what you are looking for.</p>
  <blockquote>
  <p>Shipit is an automation engine and a deployment tool written for node / iojs.</p>
  <p>Shipit was built to be a Capistrano alternative for people who don't know ruby, or who experienced some issues with it. If you want to write tasks in JavaScript and enjoy the node ecosystem, Shipit is also for you.</p>
  <p>You can automate anything with Shipit but most of the time you will want to deploy your project using the Shipit deploy task.</p>
  </blockquote>
  
Answers: CC BY-SA 3.0
Answers: 2018-01-25T11:19:51.447Z
Answers: 2018-01-25T11:19:51.447Z
Answers: 2020-06-18T08:28:10.803Z
Answers: vaughan
Answers: <p>Fabric (and Capistrano, presumably the unnamed Ruby tool you came across) are a bit unusual in that they're task runners with extra features for easily running tasks on remote hosts.  I'm not aware of any other popular tools that do exactly the same thing, but depending on your needs there are a few other options that may work for you.</p>
  
  <p><a href="https://en.wikipedia.org/wiki/Grunt_(software)" rel="noreferrer">Grunt</a> and <a href="https://en.wikipedia.org/wiki/Gulp.js" rel="noreferrer">Gulp</a> are the foremost task runners in the Javascript ecosystem.  While not designed specifically to deploy software, they both have plugin-based systems that allow you do this, and you'll find plenty of articles of people using <a href="https://duckduckgo.com/?q=grunt+deploy&amp;ia=software" rel="noreferrer">either</a> <a href="https://duckduckgo.com/?q=gulp+deploy&amp;ia=software" rel="noreferrer">one</a> to do so.  For instance, <a href="http://justinklemm.com/grunt-js-deployment-ssh-git/" rel="noreferrer">this tutorial</a> uses <a href="https://github.com/israelroldan/grunt-ssh" rel="noreferrer">the <code>grunt-ssh</code> plugin</a> to integrate ssh with grunt, while <a href="https://mikeeverhart.net/2016/01/deploy-code-to-remote-servers-with-gulp-js/" rel="noreferrer">this one</a> relies on <a href="https://www.npmjs.com/package/gulp-rsync" rel="noreferrer"><code>gulp-rsync</code></a>.</p>
  
  <p>Using task runners to deploy code tends to be an approach favored by developers who are wearing an ops hat.  When you ask an operations engineer, they're more likely to suggest hacking this behavior into a configuration tool.  This can take many forms (for instance, packaging your app into an rpm or deb, then installing it like any other software), but I'm going to focus on what I think would be the simplest and most direct method for you.</p>
  
  <p><a href="https://en.wikipedia.org/wiki/Ansible_(software)" rel="noreferrer">Ansible</a> is ostensibly a configuration management tool, but it really shines at <strong>task orchestration</strong>, which I would define as "running a set of actions across a set of servers".  <a href="https://docs.ansible.com/ansible/index.html" rel="noreferrer">The official documentation</a> is a good place to get started, but to give you an idea of what this might look like, you might have a <em>playbook</em> (a YAML file that defines a set of tasks) like this:</p>
  
  <pre class="lang-yaml prettyprint-override"><code>- 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
  </code></pre>
  
  <p>When you run this file with <code>ansible-playbook</code>, it will look up your host list (as simple as an ini file, but can also be a dynamic list written in any programming language) to determine what servers exist and what groups they're in, and then run the defined tasks on the servers that you tell it to.</p>
  
  <p>Now, you specified that you wanted to stay in the Javascript ecosystem.  However, while Ansible is a new thing for you, it doesn't have all the complexities of another programming language, since configurations are written in YAML.  It will also allow you to do much much more later, and unlike several of its competitors, uses ssh to communicate, so there's very little setup involved (nothing to install on the remote machines).</p>
  
Answers: CC BY-SA 3.0
Answers: 2017-06-03T21:49:42.903Z
Answers: Very helpful thanks. (and yes I was referring to Capistrano - I've updated my post)
Answers: Henry
Answers: CC BY-SA 3.0
Answers: 2017-06-03T19:09:44.193Z
Answers: 2017-06-03T19:09:44.193Z
Answers: Xiong Chiamiov
Body: <p>Is there a similar DevOps tool to <a href="http://www.fabfile.org/" rel="noreferrer">fabric</a> with JavaScript as its scripting language? I'm specifically interested in the remote execution side.</p>
  
  <p>Most of the tools I've found rely on python (e.g <a href="http://www.fabfile.org/" rel="noreferrer">fabric</a>) or Ruby (e.g. Capistrano, Chef). However, in my team we don't use these languages for anything else. While these languages may be great, they are not as universal as JavaScript in the web development industry.</p>
  
  <p>I mention fabric because it's ideal for what I want except that I have minimal python skills (sadly).</p>
  
Comments: CC BY-SA 3.0
Comments: 2017-05-19T16:44:36.770Z
Comments: To what fabric are you referring? Could be get a link? Is this [MySQL Fabric](https://www.percona.com/blog/2014/05/15/high-availability-mysql-fabric-part/)? It's ideal for "what you want" but what do you want?
Comments: James Shewey
Comments: CC BY-SA 3.0
Comments: 2017-05-21T00:07:54.597Z
Comments: @JamesShewey I've updated my post. http://www.fabfile.org/. Thx
Comments: Henry
Tags: <deployment>
Title: Javascript based alternative to Fabric
UserDisplayName: Henry
ThreadText: # Javascript based alternative to Fabric
  
  (Asked by: username_0 on 2017-04-27)
  
  Is there a similar DevOps tool to [fabric](http://www.fabfile.org/) with JavaScript as its scripting language? I'm specifically interested in the remote execution side.
  
  Most of the tools I've found rely on python (e.g [fabric](http://www.fabfile.org/)) or Ruby (e.g. Capistrano, Chef). However, in my team we don't use these languages for anything else. While these languages may be great, they are not as universal as JavaScript in the web development industry.
  
  I mention fabric because it's ideal for what I want except that I have minimal python skills (sadly).
  
  **Tags:** deployment
  
  > **Comments:**
  > **username_1**: To what fabric are you referring? Could be get a link? Is this [MySQL Fabric](https://www.percona.com/blog/2014/05/15/high-availability-mysql-fabric-part/)? It's ideal for "what you want" but what do you want?  
  > **username_0**: @username_1 I've updated my post. http://www.fabfile.org/. Thx  
  
  ---
  
  ## 2 answers
  
  ### Answer by username_2 on 2018-01-25. Score: 1 | Accepted answer
  
  [Shipit](https://github.com/shipitjs/shipit) is what you are looking for.
  
  > Shipit is an automation engine and a deployment tool written for node / iojs.
  >
  > Shipit was built to be a Capistrano alternative for people who don't know ruby, or who experienced some issues with it. If you want to write tasks in JavaScript and enjoy the node ecosystem, Shipit is also for you.
  >
  > You can automate anything with Shipit but most of the time you will want to deploy your project using the Shipit deploy task.
  
  
  ---
  
  ### Answer by username_3 on 2017-06-03. Score: 6
  
  Fabric (and Capistrano, presumably the unnamed Ruby tool you came across) are a bit unusual in that they're task runners with extra features for easily running tasks on remote hosts. I'm not aware of any other popular tools that do exactly the same thing, but depending on your needs there are a few other options that may work for you.
  
  [Grunt](https://en.wikipedia.org/wiki/Grunt_(software)) and [Gulp](https://en.wikipedia.org/wiki/Gulp.js) are the foremost task runners in the Javascript ecosystem. While not designed specifically to deploy software, they both have plugin-based systems that allow you do this, and you'll find plenty of articles of people using [either](https://duckduckgo.com/?q=grunt+deploy&ia=software) [one](https://duckduckgo.com/?q=gulp+deploy&ia=software) to do so. For instance, [this tutorial](http://justinklemm.com/grunt-js-deployment-ssh-git/) uses [the `grunt-ssh` plugin](https://github.com/israelroldan/grunt-ssh) to integrate ssh with grunt, while [this one](https://mikeeverhart.net/2016/01/deploy-code-to-remote-servers-with-gulp-js/) relies on [`gulp-rsync`](https://www.npmjs.com/package/gulp-rsync).
  
  Using task runners to deploy code tends to be an approach favored by developers who are wearing an ops hat. When you ask an operations engineer, they're more likely to suggest hacking this behavior into a configuration tool. This can take many forms (for instance, packaging your app into an rpm or deb, then installing it like any other software), but I'm going to focus on what I think would be the simplest and most direct method for you.
  
  [Ansible](https://en.wikipedia.org/wiki/Ansible_(software)) is ostensibly a configuration management tool, but it really shines at **task orchestration**, which I would define as "running a set of actions across a set of servers". [The official documentation](https://docs.ansible.com/ansible/index.html) is a good place to get started, but to give you an idea of what this might look like, you might have a *playbook* (a YAML file that defines a set of tasks) like this:
  
  ```yaml
  - 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
  
  ```
  
  When you run this file with `ansible-playbook`, it will look up your host list (as simple as an ini file, but can also be a dynamic list written in any programming language) to determine what servers exist and what groups they're in, and then run the defined tasks on the servers that you tell it to.
  
  Now, you specified that you wanted to stay in the Javascript ecosystem. However, while Ansible is a new thing for you, it doesn't have all the complexities of another programming language, since configurations are written in YAML. It will also allow you to do much much more later, and unlike several of its competitors, uses ssh to communicate, so there's very little setup involved (nothing to install on the remote machines).
  
  > **Comments:**
  > **username_0**: Very helpful thanks. (and yes I was referring to Capistrano - I've updated my post)  
  
  ---
  
  