Skip to content
This repository

Design of a specification for the automation of infrastructure deployments

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 example.json
README.md

Description

This project aims to define a tool- and cloud-independent specification to automate infrastructure provisioning, which, together with a Configuration Managment System like Chef or Puppet should for the first time fully deliver on the promise of "Infrastructure as code".

Amazon's Web Services recent outage has paradoxically highlighted the need for a tool like AWS CouldFormation that is vendor independent.

There are already Open Source cloud-agnostic libraries for cloud APIs (Fog, libcloud...), and several tools that make use of it (Chef's knife, Spiceweasel) but a tool-independent infrastructure specification is still missing.

Deployments are defined in JSON, following the same syntax as Chef's nodes, roles and cookbooks.

An example of the specification draft (from example.json):

{
    "name": "Web App",
    "version": "1.0",
    "description": "A full Web application, master DB and master slave deployment",
    "environment": "production",
    "nodes": [
        {
            "name": "Master DB",
            "description": "This node will host the Master DB",
            "provider": "Rackspace",
            "image": "49",
            "size": "2",
            "zone": "1",
            "roles": [
                "role[master_db]"
            ]
        },
        {
            "name": "Slave DB",
            "description": "This node will host the Slave DB",
            "provider": "Rackspace",
            "image": "49",
            "size": "2",
            "zone": "1",
            "roles": [
                "role[slave_db]"
            ]
        },
        {
            "name": "WebApp",
            "description": "The Apache web server and our App",
            "provider": "EC2",
            "image": "ami-014da868",
            "size": "c1.xlarge",
            "zone": "us-east-1",
            "roles": [
                "role[frontend]"
            ],
            "attributes" {
                "php": {
                    "memory_limit": "256M"
                }
            }
        }
    ]
}

Go to the Wiki and help in defining this specification!

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License

Something went wrong with that request. Please try again.