marineam / fleet

A Distributed init System

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

fleet - a distributed init system

Build Status

fleet ties together systemd and etcd into a distributed init system. Think of it as an extension of systemd that operates at the cluster level instead of the machine level. This project is very low level and is designed as a foundation for higher order orchestration.

Launching a unit with fleet is as simple as running fleetctl start:

$ fleetctl start examples/hello.service
Unit hello.service launched on 113f16a7.../172.17.8.103

The fleetctl start command waits for the unit to get scheduled and actually start somewhere in the cluster. fleetctl list-unit-files tells you the desired state of your units and where they are currently scheduled:

$ fleetctl list-unit-files
UNIT            HASH     DSTATE    STATE     TMACHINE
hello.service   e55c0ae  launched  launched  113f16a7.../172.17.8.103

fleetctl list-units exposes the systemd state for each unit in your fleet cluster:

$ fleetctl list-units
UNIT            MACHINE                    ACTIVE   SUB
hello.service   113f16a7.../172.17.8.103   active   running

Supported Deployment Patterns

  • Deploy a single unit anywhere on the cluster
  • Deploy multiple copies of the same unit
  • Ensure that units are deployed together on the same machine
  • Forbid specific units from co-habitation
  • Maintain N units, re-scheduling on machine failure
  • Deploy units to machines only with specific metadata

These patterns are all defined using custom systemd unit options.

Getting Started

Before you can deploy units, fleet must be deployed and configured on each host in your cluster. After you have machines configured (check fleetctl list-machines), get to work.

Building

fleet must be built with Go 1.2 on a Linux machine, or in a Go docker container. Simply run ./build and then copy the binaries out of bin/ onto each of your machines.

Project Details

API

An HTTP API is currently being implemented, but it is not yet stable and may change. See the API documentation for more information.

Contributing

See CONTRIBUTING for details on submitting patches and contacting developers via IRC and mailing lists.

License

fleet is released under the Apache 2.0 license. See the LICENSE file for details.

Specific components of fleet use code derivative from software distributed under other licenses; in those cases the appropriate licenses are stipulated alongside the code.

About

A Distributed init System

License:Apache License 2.0