diff --git a/inventory_provider/tasks/config.py b/inventory_provider/tasks/config.py
index 3caa57d149ec8f773d5384309c04f2c1dbfc8816..89d3792f9d54c47d62f8fccdb400088bcfc3ee6f 100644
--- a/inventory_provider/tasks/config.py
+++ b/inventory_provider/tasks/config.py
@@ -1,25 +1,36 @@
-import json
-from os import getenv
-
 import logging
+import os
+import re
+
+import redis.sentinel
 
 logger = logging.getLogger(__name__)
 
-broker_url = getenv(
-    'CELERY_BROKER_URL',
-    default='redis://test-dashboard02.geant.org:6379/1')
+broker_hostname = os.getenv('BROKER_HOSTNAME')
+assert broker_hostname is not None
+broker_port = int(os.getenv('BROKER_PORT'))
+broker_db_index = int(os.getenv('BROKER_DB_INDEX'))
+
+broker_scheme = os.getenv('BROKER_SCHEME', 'redis')
+assert broker_scheme in ('redis', 'sentinel'), 'unsupported broker scheme'
+
+if broker_scheme == 'sentinel':
+    master_name = os.getenv('SENTINEL_MASTER_NAME')
+    assert master_name is not None
+    sentinel = redis.sentinel.Sentinel(
+        [(broker_hostname, broker_port)],
+        socket_timeout=0.1)
+    master = sentinel.discover_master(master_name)
+    assert master
+    broker_hostname = master[0]
+    broker_port = master[1]
+
+if re.match('^[\d:]+$', broker_hostname):
+    # handle case where hostname is an ipv6 address
+    broker_hostname = '[%s]' % broker_hostname
 
+broker_url = 'redis://%s:%d/%d' % (
+    broker_hostname, broker_port, broker_db_index)
 result_backend = broker_url
-if result_backend:
-    # bugfix workaround
-    result_backend = result_backend.split(';')[0]
-
-tmp_options = getenv(
-    'BROKER_TRANSPORT_OPTIONS',
-    default='')
-if tmp_options:
-    broker_transport_options = json.loads(tmp_options)
-else:
-    broker_transport_options = {}
 
 task_eager_propagates = True