diff --git a/ansible/roles/karbor/handlers/main.yml b/ansible/roles/karbor/handlers/main.yml
index 40a1f4e74a13b4476f43504276286fe73553a931..9dcd077400e58867b06456acac3c7444a7b9343e 100644
--- a/ansible/roles/karbor/handlers/main.yml
+++ b/ansible/roles/karbor/handlers/main.yml
@@ -43,6 +43,7 @@
     - service.enabled | bool
     - config_json.changed | bool
       or karbor_conf.changed | bool
+      or providers_conf.changed
       or openstack_infra_conf.changed | bool
       or karbor_protection_container.changed | bool
 
diff --git a/ansible/roles/karbor/tasks/config.yml b/ansible/roles/karbor/tasks/config.yml
index dc84ef1517da01d321de2cc7b7603b1db32bc684..be84f3c0dbbc5d342232d3aff89007159ad99f3f 100644
--- a/ansible/roles/karbor/tasks/config.yml
+++ b/ansible/roles/karbor/tasks/config.yml
@@ -51,12 +51,32 @@
     - Restart karbor-protection container
     - Restart karbor-operationengine container
 
+- name: Copying over provider configs
+  vars:
+    service_name: 'karbor-protection'
+    service: "{{ karbor_services[service_name] }}"
+  copy:
+    src: "{{ item }}"
+    dest: "{{ node_config_directory }}/{{ service_name }}/providers.d/"
+    mode: "0660"
+  become: true
+  with_fileglob:
+    - "{{ node_custom_config }}/karbor/{{ service_name }}/providers.d/*"
+  register: providers_conf
+  when:
+    - inventory_hostname in groups[service.group]
+    - service.enabled | bool
+  notify:
+    - Restart karbor-protection container
+
 - name: Copying over openstack-infra.conf
   vars:
     service_name: 'karbor-protection'
     service: "{{ karbor_services[service_name] }}"
-  template:
-    src: "providers.d/openstack-infra.conf.j2"
+  merge_configs:
+    sources:
+      - "{{ role_path }}/templates/providers.d/openstack-infra.conf.j2"
+      - "{{ node_custom_config }}/karbor/{{ service_name }}/providers.d/openstack-infra.conf"
     dest: "{{ node_config_directory }}/{{ service_name }}/providers.d/openstack-infra.conf"
     mode: "0660"
   become: true
diff --git a/ansible/roles/karbor/templates/karbor-protection.json.j2 b/ansible/roles/karbor/templates/karbor-protection.json.j2
index 304aece619c59e24aa51550c169bf35e571767d0..e83b0eb722e7f052f356e152fe281b25fb6fd1c0 100644
--- a/ansible/roles/karbor/templates/karbor-protection.json.j2
+++ b/ansible/roles/karbor/templates/karbor-protection.json.j2
@@ -8,8 +8,8 @@
             "perm": "0600"
         },
         {
-            "source": "{{ container_config_directory }}/providers.d/openstack-infra.conf",
-            "dest": "/etc/karbor/providers.d/openstack-infra.conf",
+            "source": "{{ container_config_directory }}/providers.d/*",
+            "dest": "/etc/karbor/providers.d/",
             "owner": "karbor",
             "perm": "0600"
         }