Concepts #
The most important concepts you need to know about to use SetOps efficiently are Organizations, Projects, Stages, Stage Definitions, Apps, Services, and its CLI.
Organization #
An Organization is the topmost organizational entity in SetOps. It can host multiple Projects and is bound to an AWS account.
Project #
A Project acts as a namespace for your application. It has a unique name, i.e. myproject, and stages are nested under a project.
Stage #
A Stage is a self-contained deployment environment. It is tied to a project and has a unique name, i.e. staging or production. A given stage is completely isolated from all other stages, which means that it does not share any resources or data with them.
Stage Definition #
A Stage Definition is a description of the stage and therefor also the containing apps and services. The SetOps workflow for changing anything on a stage always works the same: you modify the stage definition and apply it to bring your change live. Stage Definitions are stored on the server and can be retrieved later on. In some use-cases you might want to store the definition along with your application code in GIT. Files containing stage definitions usually end with .setops.yaml
.
The structure of the stage definition is specified via the SetOps Stage Definition JSON Schema.
App #
An App is a group of one or more containers that run on the SetOps platform using a container image you provide. This container image contains your application or software packages. A stage (and therefore a stage definition) can have many Apps. Apps are always assumed
to be long-running. They run on our container-based platform using an image you provide. For example, web applications
will usually have a task named web
for the application server and possibly a task called job
for running background jobs. Apps are assumed to be stateless. They persist user data by accessing services.
Service #
A Service is an additional component such as databases, for example. Services provide additional functionality and can be linked to apps that consume them.
CLI #
The Command Line Interface (CLI) is the heart of SetOps. You can create, configure, deploy and manage your application with this single tool. The CLI commands follow a consistent and intuitive pattern.
There are:
- commands
- subcommands
- scope flags
- arguments
We separate commands from subcommands with a :
. The scope flags have the same name as the belonging commands and define the scope for a lower-level command.
The following examples explain commands, subcommands, scope flags, and arguments:
setops --scope-flag command:subcomand argument
setops --project myproject project:create
setops --project myproject --stage production stage:create
setops --project myproject --stage production stage:apply -f my-stage-definition.setops.yaml
setops --project myproject --stage production --app web task
The command hierarchy looks like following:
setops
└─ project
└─ stage
├─ app
├─ domain
├─ task
└─ log
├─ service
├─ backup
└─ user
├─ invite
└─ remove
└─ user
├─ invite
└─ remove
The CLI nests every lower-level command with a scope flag. For example, let’s take a look at the stage:apply
command: It is nested below setops
→ project
→ stage
. So to use stage:apply
, you need to provide the following scope flags for this lower-level command:
setops --project myproject --stage production stage:apply FLAGS
You can set all flags either in front or after the command; for better readability of our documentation, we place scope flags at the start of the command.
A command without a colon-separated subcommand is the list command, returning a list of all resources of this type.
Going further #
Follow a Quick Start Guide to learn how to deploy your first App to SetOps or learn more about Stages.