Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Clova

Clova is a service orchestration tool designed to simplify the management of servers.

Warning

Clova is currently in early development. Expect breaking changes and do not use for mission critical infrastructure!

Quick Links:

Features

  • Source-Of-Truth. Maintain a single source of truth for the definitions of your services with support for version control.
  • Central Orchestration. Start, stop and monitor your services from a single location.
  • Target Monitoring. View your fleet of servers at a glance and swap services between them with a single command.
  • SSH-only. No need for a process to stay running on your server.

Contributing

The Clova project welcomes contributors! Please see the Contributor’s Guide to learn more about the project and how you can get involved.

Licence

Clova and its documentation are licensed under the Mozilla Public License v2.0.

Installation

TBD (probably through Cargo)

Terminology

Walkthrough

Creating A Working Directory

Clova’s operations heavily use the filesystem as a source of truth for your network. You can add this to version control so you can maintain a history of your network and sync your service definitions.

Initialising A Directory

Fundamentally, Clova relies upon two files: clova.toml and service.clova.toml. The first of these holds the global configuration for Clova and the second holds a service definition.

While there is no defined directory structure required for Clova, something like the following is recommended:

.
├── clova.toml
├── service1/
│   ├── service.clova.toml
│   └── (other service files)
└── service2/
    ├── service.clova.toml
    └── (other service files)

Clova can generate this basic structure for you with the following command:

clova init /path/to/directory

Relation Between Services and Directories

Every directory with a service definition file is treated as a service by Clova. You refer to services using the names of these directories.

When services are synchronised to targets, the entire contents of the service directory is copied across. That means you can choose how the service is structured and what technology to use.

As an example, the structure of a Docker Compose service might look like so:

service-dir/
├── data/
├── service.clova.toml
└── compose.yml

Clova would copy across the entire directory, including the service definition file.

Configuring Clova

Adding Targets

Deploying Services

Reference

Command Reference

clova.toml

service.clova.toml

Guidelines