fleet-atc

Manage fleet spawns

npm install fleet-atc
12 downloads in the last week
24 downloads in the last month

Fleet-ATC

Fleet Air Traffic Controller (fleet-atc) manages processes that run on your fleet drones.

fleet is an excellent tool to manage processes in a cluster. However respawning commands after an such as a server reboot can be difficult. fleet-atc allows you to specify and execute all your fleet spawn commands across all your repos with a single command.

Installation

[sudo] npm install -g fleet-atc

Installing globally will create a command line tool fleet-atc that you can use to manage your spawned fleet processes

Usage

Create an empty git repo in a fresh directory. Add a fleet.json file with a default hub.

fleet.json

{
  "remote": {
  "default": {
    "hub": "localhost:7000",
    "secret": "beepboop"
  }
}

spawn.json In this directory also create a spawn.json

The spawn.json file indicates what process you want to ensure get spawned. Each element in the spawn.json file should contain the command you wish to pass to the fleet-spawn command, as well as the directory of the repo. The directory can either be an absolute path or a relative path to the current directory containing the spawn.json file.

[
  {
    "command": "node grapeServer.js",
    "directory": "../grapes/",
  },
  {
    "command": "node catsServer.js",
    "directory": "../cats/",
    "drone": "drone001"
  },
]

In the example above, there are 2 repos, grapes.git and cats.git. In each repo you want to issue a different spawn command. fleet-atc will go into each repo specified and execute the given command. Note that you can optionally specify a drone name if the spawned process needs to run on a specific drone. Internally fleet-atc calls fleet-spawn --drone=drone1 if you specify drone: drone1

To spawn everything in the spawn.json file, execute in the same directory

fleet-atc

If any of the elements in spawn.json has already been spawned and thus appears in the output of fleet-ps, fleet-atc will ignore it and move on to the next element

Deploy

If you wish, you can have fleet-atc deploy the lastest commit of your repo before running the spawn command. To enable deployment, set "deploy": true in your spawn.json element. You can also enable deploy across all repos by passing the command line argument --deploy=true. Note that the individual deploy directives in spawn.json will override the command-line --deploy argument

[
  {
    "command": "node grapeServer.js",
    "directory": "../grapes/",
    "deploy": true
  },
  {
    "command": "node catsServer.js",
    "directory": "../cats/",
    "drone": "drone001"
  },
]

Todo

Allow users to specify the max number of times a process can be spawned by including an optional maxProcesses field in the json element. Currently fleet-atc only allows for 1 process for a given repo directory and command

npm loves you