Sha256: 7ecc5114d1fc4e3375146bb6836e1ab6a82a7e40291f5e0841fe1159c291e890

Contents?: true

Size: 1.76 KB

Versions: 15

Compression:

Stored size: 1.76 KB

Contents

# Manifest Format

A manifest is a JSON file containing a hash used by motherbrain which describes
the subject(s) of the actions taken.

Currently, the hash contains 2 keys: nodes and options.

## Nodes

### Provision Manifest

To provision nodes, we need to know:

* Which plugin groups the nodes belong to
* What type of nodes we want (provisioner-specific)
* How many of this type of node we want

The manifest contains an array of nodes, each with a key for the items above:

```json
{
  "nodes": [
    {
      "groups": ["myface::db"],
      "type": "m1.large",
      "count": 1
    },
    {
      "groups": ["myface::web"],
      "type": "m1.small",
      "count": 2
    }
  ]
}
```

### Bootstrap Manifest

To bootstrap nodes, we also need to know which groups the nodes belong to, but
other than that we just need an array of hostnames/IP addresses:

* Which plugin groups the nodes belong to
* The hosts to bootstrap for these groups


```json
{
  "nodes": [
    {
      "groups": ["myface::db"],
      "hosts": ["10.0.0.101"]
    },
    {
      "groups": ["myface::web"],
      "hosts": ["10.0.0.102", "10.0.0.103"]
    }
  ]
}
```

In fact, the provisioning process creates a bootstrap manifest internally
before bootstrapping the nodes.

## Options

A manifest can also contain an options hash, which overrides the motherbrain
configuration read from disk. For example, a number of options need to be set
to provison on Amazon EC2:

```json
{
  "options": {
    "availability_zone": "us-east-1a",
    "image_id": "ami-fc75ee95",
    "key_name": "myface",
    "provisioner": "aws",
    "ssh": {
      "keys": ["~/path/to/myface.pem"],
      "user": "ec2-user"
    }
  },  
  "nodes": [
    {
      "groups": ["myface::default"],
      "type": "m1.large",
      "count": 1
    }
  ]
}
```

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
motherbrain-1.5.0 MANIFESTS.md
motherbrain-1.4.0 MANIFESTS.md
motherbrain-1.3.0 MANIFESTS.md
motherbrain-1.2.1 MANIFESTS.md
motherbrain-1.2.0 MANIFESTS.md
motherbrain-1.1.3 MANIFESTS.md
motherbrain-1.1.2 MANIFESTS.md
motherbrain-1.1.1 MANIFESTS.md
motherbrain-1.1.0 MANIFESTS.md
motherbrain-1.0.0 MANIFESTS.md
motherbrain-0.14.5 MANIFESTS.md
motherbrain-0.14.4 MANIFESTS.md
motherbrain-0.14.3 MANIFESTS.md
motherbrain-0.14.2 MANIFESTS.md
motherbrain-0.13.1 MANIFESTS.md