I am looking for best tool that, does below jobs for deployment.


1) Configuration of deployment node machines in specific environment

2) Configure no of service instances to be alive in environment at all time


Now, Just doing above configuration. When I trigger deployment of N services. It will randomly pick up nodes from deployment environments and will start total N services.

Multiple Services:

If I have 2 nodes and I want to bring up 4 services, it should bring up 2 services on each node.

Service Failure recovery:

If any machine goes down or any service goes down in any node. It will bring up a new service in any of environment node.

Scenario to handle:

Choosing nodes at random used in distributed system with system discovery/failure.

1) Service deployment :

I required 2 services of calculator, and other services as well. And I have total 4 machines. Now 2 calculator services will be deployed in any node.

2) Service discovery/failure:

These 2 calculator services will be registered with service registry. Now my application will query to service registry, and service registry will provide node details with service running. Same in failure case, service will be started in any node, and discovered by application through service registry.

  • 1
    Chef can handle the configuration part, but choosing nodes at random and ensuring the whole environment match your needs doesn't sound its job. I've a hard time understanding what you're aiming to do in fact.
    – Tensibai
    Nov 2, 2017 at 12:57
  • 1
    In brief: Chef alone won't do, orchestration and supervision is none of its business.
    – Tensibai
    Nov 2, 2017 at 13:17

1 Answer 1


You should take a look at BOSH. Its the tool that is used by CloudFoundry, its services and a distro of Kubernetes called Kubo for installation, management and "Day 2" operations.

It's basically a declarative, cloud-agnostic orchestration tool that features rolling updates, canary deployments, scaling, monitoring and self healing. It can monitor VMs as well as processes on those VMs (i.e. services) and will make sure that the deployment is running as you specified it to in the deployment manifest.

In order to do all of this (especially the monitoring and self-healing bits) it has a client-server architecture which is deployed with a cut-down version of BOSH itself called bosh bootloader or bbl for short. You use this to deploy the BOSH director. You talk to the bosh director by installing the bosh-cli (brew install bosh-cli on a mac).

For you deployment you would first need to create what's called a BOSH release and this can, admittedly, be a little daunting if you are not familiar with BOSH but as CF, its services and Kubo are all open source there are tons of references out there. There are also lots of pre-backed releases and stemcells (OSes).

After creating your release you upload it to your bosh director and bosh deploy. To upgrade it you upload the next version of your release and bosh deploy. To patch a security vulnerability you upload the latest blessed stemcell from bosh.io and bosh deploy. I am sure you get the picture.

If you want to go the next level then there is a good getting started guide here.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.