diff --git a/zuul.d/flavors.yaml b/zuul.d/flavors.yaml
new file mode 100644
index 0000000..88376a5
--- /dev/null
+++ b/zuul.d/flavors.yaml
@@ -0,0 +1,2 @@
+- flavor:
+    name: normal
diff --git a/zuul.d/images.yaml b/zuul.d/images.yaml
new file mode 100644
index 0000000..3d96def
--- /dev/null
+++ b/zuul.d/images.yaml
@@ -0,0 +1,3 @@
+- image:
+    name: debian-bullseye
+    type: zuul
diff --git a/zuul.d/labels.yaml b/zuul.d/labels.yaml
new file mode 100644
index 0000000..0612a41
--- /dev/null
+++ b/zuul.d/labels.yaml
@@ -0,0 +1,7 @@
+# During testing, prefix all label names with "niz-" so it's very
+# clear which system we're using.
+
+- label:
+    name: niz-debian-bullseye-normal
+    image: debian-bullseye
+    flavor: normal
diff --git a/zuul.d/providers.yaml b/zuul.d/providers.yaml
new file mode 100644
index 0000000..17bd5f1
--- /dev/null
+++ b/zuul.d/providers.yaml
@@ -0,0 +1,45 @@
+# Rackspace Flex
+- section:
+    name: raxflex-base
+    abstract: true
+    connection: raxflex
+    boot-timeout: 120
+    launch-timeout: 600
+    networks:
+      - opendevzuul-network1
+    flavors:
+      - name: normal
+        flavor-name: gp.0.4.8
+    images:
+      - name: debian-bullseye
+
+- section:
+    name: raxflex-sjc3
+    parent: raxflex-base
+    region: SJC3
+
+- provider:
+    name: raxflex-sjc3-main
+    section: raxflex-sjc3
+    labels:
+      - name: niz-debian-bullseye-normal
+        key-name: infra-root-keys-2024-04-08
+
+# Vexxhost
+- section:
+    name: vexxhost-base
+    abstract: true
+    connection: vexxhost
+    boot-timeout: 120
+    launch-timeout: 600
+    images:
+      - name: debian-bullseye
+
+- section:
+    name: vexxhost-ca-ymq-1
+    parent: vexxhost-base
+    region: ca-ymq-1
+
+- provider:
+    name: vexxhost-ca-ymq-1-main
+    section: vexxhost-ca-ymq-1