diff --git a/ironic_lib/disk_partitioner.py b/ironic_lib/disk_partitioner.py
index aa143e9c..ae1f6734 100644
--- a/ironic_lib/disk_partitioner.py
+++ b/ironic_lib/disk_partitioner.py
@@ -175,3 +175,8 @@ class DiskPartitioner(object):
                       'exited with "%(fuser_err)s". Time out waiting for '
                       'completion.')
                     % {'device': self._device, 'fuser_err': fuser_err[0]})
+
+
+def list_opts():
+    """Entry point for oslo-config-generator."""
+    return [('disk_partitioner', opts)]
diff --git a/ironic_lib/disk_utils.py b/ironic_lib/disk_utils.py
index 7d656fab..3a7e4b97 100644
--- a/ironic_lib/disk_utils.py
+++ b/ironic_lib/disk_utils.py
@@ -513,3 +513,8 @@ def work_on_disk(dev, root_mb, swap_mb, ephemeral_mb, ephemeral_format,
             LOG.error(_LE("Failed to detect %s"), part)
 
     return uuids_to_return
+
+
+def list_opts():
+    """Entry point for oslo-config-generator."""
+    return [('disk_utils', opts)]
diff --git a/ironic_lib/utils.py b/ironic_lib/utils.py
index 8f0580f6..596cb8ae 100644
--- a/ironic_lib/utils.py
+++ b/ironic_lib/utils.py
@@ -143,3 +143,8 @@ def dd(src, dst, *args):
 def is_http_url(url):
     url = url.lower()
     return url.startswith('http://') or url.startswith('https://')
+
+
+def list_opts():
+    """Entry point for oslo-config-generator."""
+    return [('ironic_lib', utils_opts)]
diff --git a/setup.cfg b/setup.cfg
index 33e7f235..3d1e6b4a 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -19,3 +19,9 @@ classifier =
 [files]
 packages =
     ironic_lib
+
+[entry_points]
+oslo.config.opts =
+    ironic_lib.disk_partitioner = ironic_lib.disk_partitioner:list_opts
+    ironic_lib.disk_utils = ironic_lib.disk_utils:list_opts
+    ironic_lib.utils = ironic_lib.utils:list_opts