diff --git a/bundles/icingadb/items.py b/bundles/icingadb/items.py
new file mode 100644
index 0000000..20ae184
--- /dev/null
+++ b/bundles/icingadb/items.py
@@ -0,0 +1,14 @@
+import yaml, json
+from bundlewrap.metadata import MetadataJSONEncoder
+
+files = {
+    '/etc/icingadb/config.yml': {
+        'content': yaml.dump(
+            json.loads(
+                json.dumps(node.metadata.get('icingadb'), sort_keys=True, cls=MetadataJSONEncoder)
+            ),
+        ),
+        'mode': '0640',
+        'owner': 'icingadb',
+    },
+}
diff --git a/bundles/icingadb/metadata.py b/bundles/icingadb/metadata.py
new file mode 100644
index 0000000..3ca93bb
--- /dev/null
+++ b/bundles/icingadb/metadata.py
@@ -0,0 +1,53 @@
+defaults = {
+    'apt': {
+        'packages': {
+            'icingadb': {},
+            'icingadb-redis': {},
+            'icingadb-web': {},
+        },
+        'sources': {
+            'deb https://packages.icinga.com/debian icinga-{release} main',
+            'deb https://packages.icinga.com/debian icinga-{release}-snapshots main',
+        },
+    },
+    'postgresql': {
+        'databases': {
+            'icingadb': {
+                'owner': 'icingadb',
+            },
+        },
+        'roles': {
+            'icingadb': {
+                'password': repo.vault.password_for(f'psql icingadb on {node.name}'),
+            },
+        },
+    },
+    'redis': {
+        'icingadb': {
+            'port': '6381',
+        },
+    },
+}
+
+@metadata_reactor.provides(
+    'icingadb',
+)
+def config(metadata):
+    return {
+        'icingadb': {
+            'database': {
+                'type': 'postgresql',
+                'host': 'localhost',
+                'port': 3306,
+                'database': 'icingadb',
+                'user': 'icingadb',
+                'password': metadata.get('postgresql/roles/icingadb/password'),
+            },
+            'redis': {
+                'address': 'localhost:6380',
+            },
+            'logging': {
+                'level': 'info',
+            },
+        },
+    }