aboutsummaryrefslogtreecommitdiffstats
path: root/ops/provisioning.md
blob: 3bfee583181e8f7cfa86fee503213c5244a21825 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
---
title: "Server provisioning & allocation"
---

Standards for provisioning of VMs and physical hosts.

# Alpine Linux

Our standard loadout uses Alpine Linux for all hosts and guests.

- **TODO**: ns1 and ns2 are on Debian, they need to be reprovisioned (add an ns3
  while we're at it?)

# Physical hosts

## VM hosts

Our current VM hosts won't scale much further. We need to figure out a better
hardware loadout for these going forward.

## High performance VM hosts

For performance critical services (presently only git.sr.ht demands this), we do
have a standard loadout:

- AMD EPYC 7402 (24 cores, 48 threads)
- Micron 36ASF2G72PZ-2G6F1 RAM (4x, 64G total)
- 1x NVMe for host system, ext4; WD Black 1T
- 4x SSD on SATA, direct passthrough to guest

This is spec'ed to CPU and I/O intensive workloads.

## Build hosts

builds.sr.ht uses dedicated build runners. Our current standard is:

- AS-1013S-MTR SuperMicro barebones
- AMD EPYC 7281 (16 cores, 32 threads)
- M393A4K40CB2-CTD RAM (4x, 128G total)
- 1x NVMe for root, ext4; WD Black 1T
- 3x HDD on SATA for /var, ZFS; 1T each, various vendors/models

This configuration supports up to 16 parallel build slots.

# Virtual machines

There is no standard loadout — tune the specifications for the task at hand.
Generally limit 1 VM == 1 service, and tune accordingly.