Skip to content

Commit c458540

Browse files
committed
more complete rcds.yaml config reference
Signed-off-by: Robert Detjens <[email protected]>
1 parent 005e558 commit c458540

File tree

1 file changed

+71
-14
lines changed

1 file changed

+71
-14
lines changed

docs/reference/rcds-yaml-reference.md

Lines changed: 71 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,18 @@ Examples: `docker.io/yourorg`, `ghcr.io/examplesec`
5454

5555
Specifies the container image and tag that challenge containers will be built
5656
as. This is used as a template with the challenge information to produce the
57-
final container image and tag for each challenge. Almost all registries work
58-
with the default format string.
57+
final container image and tag for each challenge.
5958

60-
Default, works for most registries (Docker, GHCR, DigitalOcean, self-hosted, ...):
61-
- `"{{domain}}/{{challenge}}-{{container}}:{{profile}}"`
59+
- Default, works for almost all registries (Docker, GHCR, DigitalOcean,
60+
self-hosted, ...):
61+
62+
`"{{domain}}/{{challenge}}-{{container}}:{{profile}}"`
6263

63-
For registries like AWS ECR that require all image registries to be precreated
64-
ahead-of-time, this keeps all the challenge info in the tag so only one ECR
65-
registry needs to be created:
66-
- `"{{domain}}:{{challenge}}-{{container}}-{{profile}}"`
64+
- For registries like AWS ECR that require all image registries to be precreated
65+
ahead-of-time, this keeps all the challenge info in the tag so only one ECR
66+
registry needs to be created:
67+
68+
`"{{domain}}:{{challenge}}-{{container}}-{{profile}}"`
6769

6870
Format: Jinja-style double-braces around field name (`{{ field_name }}`)
6971

@@ -78,7 +80,7 @@ If setting a custom format, you must use all four of these fields in order for c
7880

7981
Example:
8082

81-
For challenge `pwn/notsh`, chal pod container `main`, profile `prod`, and domain `registry.io/myctf`:
83+
For challenge `pwn/notsh`, chal pod container `main`, and profile `prod`:
8284

8385
```yaml
8486
registry:
@@ -96,7 +98,8 @@ registry:
9698

9799
### `build`
98100

99-
Registry credentials that will be used locally to push up challenge container images. This must have push permissions.
101+
Registry credentials that will be used locally to push up challenge container
102+
images. This must have push permissions.
100103

101104
Format: `{ user: "registry-username", pass: "registry-password" }`
102105

@@ -109,7 +112,9 @@ registry:
109112

110113
### `cluster`
111114

112-
Registry credentials that will be used in the Kubernetes cluster to pull the challenge container images. This must have pull permissions, but does not need push.
115+
Registry credentials that will be used in the Kubernetes cluster to pull the
116+
challenge container images. This must have pull permissions, but does not need
117+
push.
113118

114119
Format: `{ user: "registry-username", pass: "registry-password" }`
115120

@@ -120,18 +125,70 @@ registry:
120125
pass: stillnotreal
121126
```
122127

123-
## `defaults`
128+
## `points`
129+
130+
Defines the available difficulty classes for challenges. This allows challenges
131+
to be worth different points, e.g. for harder challenges or a survey with
132+
minimal points.
133+
134+
```yaml
135+
points:
136+
- difficulty: "normal"
137+
max: 500
138+
min: 100
139+
- difficulty: "hard"
140+
max: 600
141+
min: 200
142+
- difficulty: "survey"
143+
max: 1
144+
min: 1
145+
```
124146

125147
### `difficulty`
126148

127-
### `resources`
149+
::: info
150+
Not implemented yet, does nothing. Requires upcoming scoreboard integration.
151+
:::
128152

153+
Name of this difficulty class. Challenges will use this name to set their
154+
difficulty class via the [`difficulty` field in their
155+
`challenge.yaml`](./challenge-yaml-reference.md#difficulty).
129156

130-
## `points`
157+
### max, min
158+
159+
Maximum and minimum points that challenges with this difficulty will be scored
160+
as. Points are done via dynamic scoring; challenges start at max points and as
161+
more people solve a challenge it approaches the minimum.
131162

163+
## `defaults`
164+
165+
These set the default difficulty class and cluster resource requests for
166+
challenges that do not have them set in their `challenge.yaml`.
167+
168+
```yaml
169+
defaults:
170+
difficulty: easy
171+
resources: { cpu: 1, memory: 500Mi }
172+
```
173+
174+
### `difficulty`
175+
176+
Default difficulty class name to use for challenges that do not explicitly set
177+
one.
178+
179+
### `resources`
180+
181+
Default resource request/limits to use for challenges that do not explicitly set
182+
one.
132183

133184
## `deploy`
134185

186+
Controls what challenges are enabled for each environment.
187+
188+
::: warn
189+
Currently any challenges that have been previously enabled and deployed will
190+
*not* be un-deployed if they are disabled here.
191+
:::
135192

136193
## `profiles`
137194

0 commit comments

Comments
 (0)