Operations grimoire/Environments

From Nasqueron Agora

📕📁📜 Old technical information :: content warning

⌛ This Nasqueron Operations Grimoire page hasn't been updated for a long time.

☣ As our infrastructure evolves quickly, there is a good chance this information is outdated or now inaccurate. Be careful and consider update it.

➡️ To assert the information is still up-to-date or not, you can check the history of the relevant role in our Operations repository.

Most complex infrastructures use the concept of environment to separate the servers or the deployments in silos and be able to test what's desired as infrastructure changes before it reaches production.

This page documents how this concept of environment is used at Nasqueron.

In a nutshell, we separate servers in dev vs prod, with legacy devservers serving both content. Those dev and prod servers are ONE infrastructure, and there is no staging/preprod/qa/uat to mimic the full infrastructure. When needed, there could exist an integration environment, hosted on a dev server.

Salt environments and forests

Servers at Nasqueron are all managed through Salt as one "base" environment.

The infrastructure is one, and contains servers more oriented for development, servers more oriented for production and servers fully for production.

The concept of forest is used to separate the credentials by servers.

A forest is a set of nodes (read: a server, either baremetal or virtual machine) with specific users and groups to be provisioned. The idea is to separate managed services like Eglide, the devservers and the production servers

Application environments

As there are plans to develop actively Notifications center, it has been decided to create a separate set of containers on Dwellers, that's another environment.

Those environments are defined at application level, so by those developing them.

Integration

Applications deployed on the Docker PaaS and actively developed can create an integration environment on Dwellers.

For example, RabbitMQ / Vault / Notifications center are deployed on Dwellers as integration environment.

Testing

If an application needs a specific name for an environment to run tests, both locally or on Jenkins CI, the name "testing" can be used. This doesn't not match any specific servers.

Production

For applications deployed on the Docker PaaS, it means a deployment on servers like docker-002.

Legacy web applications could be deployed on a server with webserver-legacy role, e.g. Ysul. There are current plan (T1803) to move them to a new production-only server.