See CVN documentation on Meta-Wiki for a high-level overview of the infrastructure.
Our servers run at Wikimedia Cloud in a dedicated Nova project at https://wikitech.wikimedia.org/wiki/Nova_Resource:Cvn.
The setup.yaml file in this repository describes how all instances are configured. It is a bit like Puppet or Chef, except written for human interpretation. Though declared as brief as possible for unambiguous execution.
Legend:
-
global @oncesection: Describes global dependencies that were set up once. This is mostly a description of the project's global state. These would have to be re-done in case of project re-creation. -
node @eachsection: Describes the steps that apply to all instances. These are run when creating new instances, such as web servers or application servers. -
debiansteps: Install packages from the Ubuntu package repository (throughapt-get install). -
servicessteps: Install these services by performing the steps under the relevantservicesection. -
setupsteps: Perform these actions via Bash. May contain variables and interactive instructions (not a completely valid shell script). Uses{value}placeholders. Theeditandcreatecommand refer to creation and editing of files on disk. Commandexec {key}includes steps from the referred key within the same service or node section. -
Any steps with differt names (e.g.
prepare) should be ignored until and unless they are referenced by anexeccommand.
