<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>

CC BY-SA 3.0
2018-01-25T11:19:51.447Z
2018-01-25T11:19:51.447Z
2020-06-18T08:28:10.803Z
vaughan
<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>

CC BY-SA 3.0
2017-06-03T21:49:42.903Z
Very helpful thanks. (and yes I was referring to Capistrano - I've updated my post)
Henry
CC BY-SA 3.0
2017-06-03T19:09:44.193Z
2017-06-03T19:09:44.193Z
Xiong Chiamiov
<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>

CC BY-SA 3.0
2017-05-19T16:44:36.770Z
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?
James Shewey
CC BY-SA 3.0
2017-05-21T00:07:54.597Z
@JamesShewey I've updated my post. http://www.fabfile.org/. Thx
Henry
<deployment>
Javascript based alternative to Fabric
Henry
# 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**: @JamesShewey 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 and Gulp 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 one to do so.  For instance, this tutorial uses the grunt-ssh plugin to integrate ssh with grunt, while this one relies on 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 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 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:
- 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)  

---

