22 lines
1.3 KiB
Markdown
22 lines
1.3 KiB
Markdown
# Architecture
|
|
|
|
A controlling host, called the `head` chef, is responsible for sending commands to other hosts over SSH.
|
|
The hosts being controlled are called `sous` chefs.
|
|
|
|
The head chef owns all the instructions and data needed to set up the sous chefs as desired.
|
|
|
|
Recipes are arranged in a directed acyclic graph (DAG); recipes can depend on each other so that they are ran sequentially (otherwise, recipes will be run in parallel, because time is precious).
|
|
|
|
'Resources' are also present in the DAG and are allowed to have edges between themselves and recipes. The conceptual idea is that some recipes **provide** resources (such as files) and others **need** them.
|
|
|
|
## Definitions
|
|
|
|
* **restaurant**: Collection of head configuration, sous configuration, menus and a fridge. It is the whole repository of configuration.
|
|
* **head**: Host that instructs other hosts
|
|
* **sous**: Host that is instructed by other hosts
|
|
* **recipe**: A job that produces something, such as a file, or a certain configuration.
|
|
* **menu**: A collection of recipes
|
|
* **fridge**: Store of 'ingredients' — data (files, templates and variables) needed to cook recipes.
|
|
* **freezer**: Like a fridge, but encrypted on the host
|
|
* **supermarket**: Source of ingredients which can't be kept persistently in the fridge for some reason.
|