Skip to content

aminjam/hipops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#hipops Docker Orchestration Configuration

hipops is an agentless orchestration configuration tool for servers running Docker containers, whether it's local or remote. It's a JSON-based configuration of your environments. hipops is a wrapper around the popular orchestration tool, ansible. Ansible Playbooks are powerful for managing configurations and deployments for the remote machines or local VMs. When it comes to docker deployments, there is a need for a configurable orchestration of containers. hipops will allow you to orchestrate cluster of your servers (CoreOS, ubuntu, etc...) with a configuration template locally in VMs and then remotely to AWS or other providers. hipops works with CoreOS, ubuntu, and other linux servers.

##Concept The idea behind hipops configuration is to define a series of apps and re-use them in playbooks, so you just focus on the orchestration of your containers, whether across different physical hosts or the same host. Here is a sample configuration for hipops:

{
  "id": "demo",
  "description": "my demo",
  "env": "dev",
  "dest": "/data",
  "oses": [{
    "user": "ubuntu"
  }],
  "apps": [{
    "name": "mongo",
    "type": "db",
    "image": "aminjam/mongodb:latest",
    "ports": [27017]
  }, {
    "name": "backend-api",
    "type": "nodejs",
    "host": "backend-api-host.com",
    "repository": {
      "branch": "master",
      "sshUrl": "github.com/aminjam/hipops-SAMOMY-backend.git"
    },
    "image": "aminjam/nodejs:latest",
    "ports": [3001]
  }],
  "playbooks": [{
    "inventory": "tag_App-Role_DEMO",
    "apps": ["{{index .Apps 0}}"],
    "containers": [{
      "params": "-v {{.App.Dest}}:/home/app -d {{.App.Image}} /run.sh"
    }]
  }, {
    "inventory": "tag_App-Role_DEMO",
    "apps": ["{{index .Apps 1}}"],
    "state": "deploying",
    "containers": [{
      "params": "-v {{.App.Dest}}:/home/app -e NODE_ENV=development --link {{(index .Apps 0).Name}}:mongo -d {{.App.Image}} /run.sh"
    }]
  }]
}

I am defining two apps: mongo and backend-api, and then I define the first playbook to run {{index .Apps 0}} which in this case is mongo and then the second playbook to run {{index .Apps 1}} which is backend-api.

##Install

Compiled binary

https://github.com/aminjam/hipops/releases

From source

  • git clone https://github.com/aminjam/hipops.git
  • cd hipops && make

##Next steps