-
Notifications
You must be signed in to change notification settings - Fork 22
/
duffy-example-config.yaml
165 lines (156 loc) · 5.02 KB
/
duffy-example-config.yaml
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
---
client:
url: http://127.0.0.1:8080/api/v1
auth:
name: tenant
key: a8b9899d-b128-59a1-aa86-754920b7f5ed
app:
loglevel: warning
host: 0.0.0.0
port: 8080
# The `logging` section is optional and follows the standard logging configuration dictionary
# schema, see https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
logging:
version: 1
disable_existing_loggers: false
retries:
no-attempts: 5
delay-min: 0.1
delay-max: 1.6
delay-backoff-factor: 2
delay-add-fuzz: 0.3
metaclient:
loglevel: warning
host: 0.0.0.0
port: 9090
dest: http://127.0.0.1:8080
usermap:
"fca07101-daea-4b8c-acb4-88ba8ae7654c": "hahahahahatheystoppedlegacysupporthahahahaha"
poolmap:
# Valid selection keys: ver, arch, flavor
# Values can be simple strings or regexes (surrounded by "^...$")
# and must map to a pool which can use Jinja macros.
# First match wins.
- arch: "^(aarch64|ppc64|ppc64le)$"
pool: "virtual-centos{{ ver | replace('-', '') }}-{{ arch }}-{{ flavor | default('medium') }}"
- arch: "x86_64"
pool: "physical-centos{{ ver | replace('-', '') }}-{{ arch }}"
# Optional Jinja2 template to mangle hostnames. The `hostname` variable will be set in the
# template when it’s rendered, e.g.:
# mangle_hostname: "{{ hostname | replace('.ci.centos.org', '') }}"
# The `logging` section is optional and follows the standard logging configuration dictionary
# schema, see https://docs.python.org/3/library/logging.config.html#logging-config-dictschema
logging:
version: 1
disable_existing_loggers: false
tasks:
celery:
broker_url: "redis://localhost:6379"
result_backend: "redis://localhost:6379"
worker_redirect_stdouts_level: "INFO"
locking:
url: "redis://localhost:6379"
periodic:
fill-pools:
interval: 300
expire-sessions:
interval: 300
database:
sqlalchemy:
sync_url: "sqlite:///:memory:"
# the DB dialect must be async-compatible
async_url: "sqlite+aiosqlite:///:memory:"
defaults:
session-lifetime: "6h"
session-lifetime-max: "12h"
node-quota: 10
retries:
no-attempts: 5
delay-min: 0.1
delay-max: 1.6
delay-backoff-factor: 2
delay-add-fuzz: 0.3
nodepools:
abstract:
mech-ansible:
mechanism:
type: "ansible"
ansible:
topdir: "/path/to/playbooks"
extra-vars:
nodepool: "{{ name }}"
template_name: "{{ name }}"
physical:
type: "physical"
extends: "mech-ansible"
reuse-nodes:
# This specifies which unused nodes can be reused for a pool. Keys map
# into the JSON data field of a node, values are matched for equality
# and are evaluated as Jinja templates filled with any other field of
# the pool in question but have to be of simple types like strings or
# integers.
architecture: "{{ architecture }}"
# Whether or not the playbooks should be run for single nodes, many
# playbook runs in parallel, or not (one playbook run for all nodes).
run-parallel: true
mechanism:
ansible:
provision:
playbook: "playbooks/baremetal/provision.yml"
# The `deprovision` section is optional, or can be nulled.
deprovision: ~
physical-x86_64:
extends: physical
fill-level: 5
architecture: x86_64
virtual:
type: "virtual"
extends: "mech-ansible"
reuse-nodes: false
run-parallel: false
mechanism:
ansible:
provision:
extra-vars:
# duffy_in.nodes gets passed in as a list
quantity: "{{ duffy_in.nodes | length }}"
# remove "virtual-", add "duffy-" prefix
template_name: >-
{% set parts=name.split("-") %}duffy-{{ parts[1:] | join("-") }}
playbook: "playbooks/opennebula/provision.yml"
deprovision:
playbook: "playbooks/opennebula/deprovision.yml"
virtual-x86_64-small:
extends: virtual
fill-level: 20
virtual-x86_64-medium:
extends: virtual
fill-level: 10
virtual-x86_64-large:
extends: virtual
fill-level: 5
concrete:
physical-centos8stream-x86_64:
extends: "physical-x86_64"
physical-fedora34-x86_64:
extends: "physical-x86_64"
physical-fedora35-x86_64:
extends: "physical-x86_64"
virtual-centos8stream-x86_64-small:
extends: "virtual-x86_64-small"
virtual-centos8stream-x86_64-medium:
extends: "virtual-x86_64-medium"
virtual-centos8stream-x86_64-large:
extends: "virtual-x86_64-large"
virtual-fedora34-x86_64-small:
extends: "virtual-x86_64-small"
virtual-fedora35-x86_64-small:
extends: "virtual-x86_64-small"
virtual-fedora34-x86_64-medium:
extends: "virtual-x86_64-medium"
virtual-fedora35-x86_64-medium:
extends: "virtual-x86_64-medium"
virtual-fedora34-x86_64-large:
extends: "virtual-x86_64-large"
virtual-fedora35-x86_64-large:
extends: "virtual-x86_64-large"