Cycloid recommends the usage of Infrastructure as Code and invites you to organize this code using the concept of a stack.
A stack is a way of build and organize your infrastructure as code and files. There is nothing required, it's up to you to follow and apply it to any tools and software or not.
The global idea is to create a generic description of your application that you will use across all your projects and environments. Exposing to the end users only few parameters to configure it, based on their needs.
To achieve it, we speak about
The result of a merge between the
stack and the
config is called a
When a user create an environment into a project it will consists of selecting a
stack and provide a configuration to deploy a
To understand a little bit more what do we expect to find in those 2 sections, let's use a basic example of a LEMP stack:
- A stack is a generic description of an application. You should put here everything common between all environments of this stack. In our example, we will define using IaaC servers on which we install an Nginx web server and PHP, connected to a database.
- The config gives all related configuration to an environment (dev, staging, prod, ...). In our LEMP example, the number and the size of the servers to create.
Basically in a project, you might want staging environment to be the same as the production one but, with smaller servers size to limitate the cost. Using the stack concept, all the environments will have the same stack but use their own dedicated config to specify the different size of the environment.
Cycloid usually works with a stack and config definition stored in a git repository, created respectively in
Stack and configuration definition could be in a public or private git.
# Most common content of a stack
Cycloid Framework is here to make the glue and the integration between technologies. Most of our stacks are based on OpenSource technologies like :
|Describes the infrastructure and services used.|
|Describes and deploys applications inside servers (Amazon EC2).|
|Provides pipeline view and scheduler for the CI/CD jobs.|
It is not mandatory to use all those parts, for example if your stack goal is only to create infrastructure via terraform, you can ignore ansible.
You can also use other technologies (e.g.: salt, puppet, chef, etc) regarding your needs, feel free to ask Cycloid engineer for some help.