diff --git a/build-scripts/package-msi b/build-scripts/package-msi
index f256cda0e..00ee8d885 100755
--- a/build-scripts/package-msi
+++ b/build-scripts/package-msi
@@ -117,6 +117,10 @@ pre() {
;;
esac
+ # Copy default leech2 config (ENT-14100)
+ install -d "$P"/state/.leech2
+ install -m 644 "$BASEDIR"/buildscripts/packaging/cfengine-nova/leech2/config.json "$P"/state/.leech2/
+
# Copy WiX source file for MSI generation
cp "$BASEDIR"/buildscripts/packaging/cfengine-nova/cfengine-nova.wxs "$P"
diff --git a/packaging/cfengine-nova-hub/cfengine-nova-hub.spec.in b/packaging/cfengine-nova-hub/cfengine-nova-hub.spec.in
index f60ce716a..a0badd342 100644
--- a/packaging/cfengine-nova-hub/cfengine-nova-hub.spec.in
+++ b/packaging/cfengine-nova-hub/cfengine-nova-hub.spec.in
@@ -96,6 +96,10 @@ rm -f $RPM_BUILD_ROOT%{prefix}/bin/cf-upgrade
rm -f $RPM_BUILD_ROOT%{prefix}/lib/php/cfmod.la
rm -f $RPM_BUILD_ROOT%{prefix}/lib/php/cfengine-enterprise-api.la
+# Default leech2 config (ENT-14100); shared with the cfengine-nova package
+mkdir -p $RPM_BUILD_ROOT%{prefix}/state/.leech2
+cp %{_basedir}/buildscripts/packaging/cfengine-nova/leech2/config.json $RPM_BUILD_ROOT%{prefix}/state/.leech2/
+
# GUI, REST, KB
cp -R %{_basedir}/mission-portal $RPM_BUILD_ROOT%prefix/share/GUI
@@ -469,5 +473,10 @@ exit 0
%dir %prefix/outputs
%dir %prefix/inputs
%dir %prefix/state
+%dir %prefix/state/.leech2
+
+# Mode must match the cfengine-nova package, which also ships this file
+%defattr(600,root,root,700)
+%prefix/state/.leech2/config.json
%changelog
diff --git a/packaging/cfengine-nova-hub/debian/rules b/packaging/cfengine-nova-hub/debian/rules
index c21541376..a3d7664a7 100755
--- a/packaging/cfengine-nova-hub/debian/rules
+++ b/packaging/cfengine-nova-hub/debian/rules
@@ -22,6 +22,10 @@ install: build
cp -a $(PREFIX)/* $(CURDIR)/debian/tmp$(PREFIX)
cp -a $(BASEDIR)/cfengine/dist/* $(CURDIR)/debian/tmp
+# Default leech2 config (ENT-14100); shared with the cfengine-nova package
+ install -d -m 700 $(CURDIR)/debian/tmp$(PREFIX)/state/.leech2
+ install -m 644 $(BASEDIR)/buildscripts/packaging/cfengine-nova/leech2/config.json $(CURDIR)/debian/tmp$(PREFIX)/state/.leech2/
+
# Remove unnecessary files
rm -f $(CURDIR)/debian/tmp$(PREFIX)/lib/libpromises.la
diff --git a/packaging/cfengine-nova/cfengine-nova.spec.in b/packaging/cfengine-nova/cfengine-nova.spec.in
index a82bdee03..92f143678 100644
--- a/packaging/cfengine-nova/cfengine-nova.spec.in
+++ b/packaging/cfengine-nova/cfengine-nova.spec.in
@@ -10,6 +10,7 @@ License: COSL
Group: Applications/System
Url: https://cfengine.com
BuildRoot: %{_topdir}/%{name}-%{version}-%{release}-buildroot
+Source0: leech2/config.json
Obsoletes: cfengine3 < @@VERSION@@, cf-community < @@VERSION@@
Requires: coreutils
# "Recommends" is only supported on RHEL 8+
@@ -73,6 +74,10 @@ rm -rf $RPM_BUILD_ROOT/usr/lib/systemd/system/cf-hub.service
rm -rf $RPM_BUILD_ROOT/usr/lib/systemd/system/cf-reactor.service
rm -rf $RPM_BUILD_ROOT/usr/lib/systemd/system/cf-postgres.service
+# Default leech2 config (ENT-14100)
+mkdir -p $RPM_BUILD_ROOT%{prefix}/state/.leech2
+cp %{SOURCE0} $RPM_BUILD_ROOT%{prefix}/state/.leech2/
+
# Create symlinks to /usr/local/sbin and /usr/sbin
mkdir -p $RPM_BUILD_ROOT/usr/local/sbin
mkdir -p $RPM_BUILD_ROOT/usr/sbin
@@ -216,6 +221,9 @@ exit 0
%dir %prefix/outputs
%dir %prefix/inputs
%dir %prefix/modules
+%dir %prefix/state
+%dir %prefix/state/.leech2
+%prefix/state/.leech2/config.json
%changelog
diff --git a/packaging/cfengine-nova/cfengine-nova.wxs b/packaging/cfengine-nova/cfengine-nova.wxs
index e15a39fb6..9d7c32afc 100644
--- a/packaging/cfengine-nova/cfengine-nova.wxs
+++ b/packaging/cfengine-nova/cfengine-nova.wxs
@@ -177,6 +177,14 @@
+
+
+
+
+
+
+
+
@@ -222,6 +230,8 @@
+
+
diff --git a/packaging/cfengine-nova/debian/cfengine-nova.install b/packaging/cfengine-nova/debian/cfengine-nova.install
index a3b437c75..e26afa9d2 100644
--- a/packaging/cfengine-nova/debian/cfengine-nova.install
+++ b/packaging/cfengine-nova/debian/cfengine-nova.install
@@ -23,6 +23,7 @@
/var/cfengine/lib/liblmdb.so
/var/cfengine/lib/libleech2.so
/var/cfengine/bin/lch
+/var/cfengine/state/.leech2/config.json
/var/cfengine/share/doc
/var/cfengine/modules
/var/cfengine/inputs
diff --git a/packaging/cfengine-nova/debian/rules b/packaging/cfengine-nova/debian/rules
index ff362457d..823db1961 100755
--- a/packaging/cfengine-nova/debian/rules
+++ b/packaging/cfengine-nova/debian/rules
@@ -28,6 +28,10 @@ install: build
cp -a $(PREFIX)/* $(CURDIR)/debian/tmp$(PREFIX)
cp -a $(BASEDIR)/cfengine/dist/* $(CURDIR)/debian/tmp
+# Default leech2 config (ENT-14100)
+ install -d -m 700 $(CURDIR)/debian/tmp$(PREFIX)/state/.leech2
+ install -m 644 $(CURDIR)/leech2/config.json $(CURDIR)/debian/tmp$(PREFIX)/state/.leech2/
+
# Remove unnecessary files
rm -f $(CURDIR)/debian/tmp$(PREFIX)/lib/libpromises.la
diff --git a/packaging/cfengine-nova/leech2/config.json b/packaging/cfengine-nova/leech2/config.json
new file mode 100644
index 000000000..716722616
--- /dev/null
+++ b/packaging/cfengine-nova/leech2/config.json
@@ -0,0 +1,43 @@
+{
+ "truncate": {
+ "max-blocks": 100,
+ "truncate-reported": false,
+ "remove-orphans": true
+ },
+ "tables": {
+ "__containers": {
+ "fields": [
+ { "name": "owner", "type": "TEXT", "primary-key": true },
+ { "name": "id", "type": "TEXT", "primary-key": true },
+ { "name": "name", "type": "TEXT" },
+ { "name": "image", "type": "TEXT" },
+ { "name": "image_id", "type": "TEXT" },
+ { "name": "command", "type": "TEXT" },
+ { "name": "state", "type": "TEXT" },
+ { "name": "ports", "type": "TEXT" },
+ { "name": "engine", "type": "TEXT" },
+ { "name": "started_at", "type": "TEXT" },
+ { "name": "details", "type": "TEXT" }
+ ]
+ },
+ "__container_images": {
+ "fields": [
+ { "name": "owner", "type": "TEXT", "primary-key": true },
+ { "name": "id", "type": "TEXT", "primary-key": true },
+ { "name": "repository", "type": "TEXT" },
+ { "name": "tag", "type": "TEXT" },
+ { "name": "size_bytes", "type": "NUMBER" },
+ { "name": "created_at", "type": "TEXT" }
+ ]
+ },
+ "__container_volumes": {
+ "fields": [
+ { "name": "owner", "type": "TEXT", "primary-key": true },
+ { "name": "name", "type": "TEXT", "primary-key": true },
+ { "name": "driver", "type": "TEXT" },
+ { "name": "size_bytes", "type": "NUMBER" },
+ { "name": "created_at", "type": "TEXT" }
+ ]
+ }
+ }
+}