Basic Terminology

Concepts needed to understand Bunnyshell

There are a few things you need to know before fully understanding any explanation in the Bunnyshell documentation. All of these will be described in detail in their own section, but in order to understand first few explanations, you need to be aware of the high-level concepts.


Bunnyshell concepts

  • Environment - collection of all applications, databases and services needed to run a piece of software

  • Environment definition - called bunnyshell.yaml - declarative way of defining how an environment looks like, declaring components and linking them together via environment variables

  • (Environment) Component - a part of an environment, such as an application, database or service; components are "glued" together into an environment, to provide a complex functionality; a Component can refer to:

    • the workload actually running in the cluster for Docker-compose Components - meaning the Components describes the actual running component
    • the runner used to deploy the workloads for Helm or KubernetesManifest Components, as well as Generic Components - meaning the Components describes how the component will be deployed
  • (Environment) Workflow - a flow from the lifecycle of an environment: deploy / destroy / start / stop are currently supported flows

  • Variable - dynamic value, that will be replaced during one of the workflows (eg. when deploying) with either a Bunnyshell-generated value, or values defined by the users themselves


Environment as a Service concepts

  • Ephemeral environment - a short-lived, disposable environment - does the job, then is discarded

  • Preview environment - environment generated automatically from a Pull Request / Merge Request, so that the change can be tested in a complete environment or visually inspected

  • Primary environment - permanent environment, which is not automatically destroyed; it can serve as a blueprint for creating ephemeral environments


Grouping concepts

  • Project - group of environments

  • Organization - group of projects