diff --git a/manifests/agent/notification.pp b/manifests/agent/notification.pp
index db9282de..2034c6b8 100644
--- a/manifests/agent/notification.pp
+++ b/manifests/agent/notification.pp
@@ -78,6 +78,11 @@
 #   for alarms.
 #   Defaults to ['gnocchi://'],
 #
+# [*event_pipeline_cfg_file*]
+#   (Optional) Configuration file for event pipeline definition. This parameter
+#   has no effect when manage_event_pipeline is true.
+#   Defaults to $facts['os_service_default'].
+#
 # [*manage_pipeline*]
 #   (Optional) Whether to manage pipeline.yaml
 #   Defaults to false
@@ -93,6 +98,11 @@
 #   Defaults to ['gnocchi://'], If you are using collector
 #   override this to notifier:// instead.
 #
+# [*pipeline_cfg_file*]
+#   (Optional) Configuration file for pipeline definition. This parameter has
+#   no effect when manage_pipeline is true.
+#   Defaults to $facts['os_service_default'].
+#
 class ceilometer::agent::notification (
   Boolean $manage_service                     = true,
   Boolean $enabled                            = true,
@@ -104,11 +114,13 @@ class ceilometer::agent::notification (
   $batch_timeout                              = $facts['os_service_default'],
   $package_ensure                             = 'present',
   Boolean $manage_event_pipeline              = false,
-  Array[String[1]] $event_pipeline_publishers = ['gnocchi://'],
   Optional[Hash] $event_pipeline_config       = undef,
+  Array[String[1]] $event_pipeline_publishers = ['gnocchi://'],
+  $event_pipeline_cfg_file                    = $facts['os_service_default'],
   Boolean $manage_pipeline                    = false,
-  Array[String[1]] $pipeline_publishers       = ['gnocchi://'],
   Optional[Hash] $pipeline_config             = undef,
+  Array[String[1]] $pipeline_publishers       = ['gnocchi://'],
+  $pipeline_cfg_file                          = $facts['os_service_default'],
 ) {
 
   include ceilometer::deps
@@ -154,6 +166,14 @@ class ceilometer::agent::notification (
       group                   => $::ceilometer::params::group,
       tag                     => 'ceilometer-yamls',
     }
+
+    ceilometer_config {
+      'DEFAULT/event_pipeline_cfg_file': value => $::ceilometer::params::event_pipeline;
+    }
+  } else {
+    ceilometer_config {
+      'DEFAULT/event_pipeline_cfg_file': value => $event_pipeline_cfg_file;
+    }
   }
 
   if $manage_pipeline {
@@ -173,6 +193,14 @@ class ceilometer::agent::notification (
       group                   => $::ceilometer::params::group,
       tag                     => 'ceilometer-yamls',
     }
+
+    ceilometer_config {
+      'DEFAULT/pipeline_cfg_file': value => $::ceilometer::params::pipeline;
+    }
+  } else {
+    ceilometer_config {
+      'DEFAULT/pipeline_cfg_file': value => $pipeline_cfg_file;
+    }
   }
 
   ceilometer_config {
diff --git a/manifests/agent/polling.pp b/manifests/agent/polling.pp
index 3bf8bd57..e9c77713 100644
--- a/manifests/agent/polling.pp
+++ b/manifests/agent/polling.pp
@@ -73,12 +73,21 @@
 #   This is used only if manage_polling is true.
 #   Defaults to undef
 #
+# [*cfg_file*]
+#   (Optional) Configuration file for polling definition.
+#   This parameter has no effect when manage_polling is true.
+#   Defaults to $facts['os_service_default'].
+#
 # [*batch_size*]
 #   (Optional) Batch size of samples to send to notification agent.
-#   Defaults to $facts['os_service_default']
+#   Defaults to $facts['os_service_default'].
 #
 # [*tenant_name_discovery*]
-#   (optional) Identify user and project names from polled metrics.
+#   (Optional) Identify user and project names from polled metrics.
+#   Defaults to $facts['os_service_default'].
+#
+# [*pollsters_definitions_dirs*]
+#   (Optional) List of directories with YAML files used to create pollsters.
 #   Defaults to $facts['os_service_default'].
 #
 class ceilometer::agent::polling (
@@ -96,9 +105,11 @@ class ceilometer::agent::polling (
   Boolean $manage_polling          = false,
   $polling_interval                = 600,
   Array[String[1]] $polling_meters = $::ceilometer::params::polling_meters,
-  Optional[Hash]$polling_config    = undef,
+  Optional[Hash] $polling_config   = undef,
+  $cfg_file                        = $facts['os_service_default'],
   $batch_size                      = $facts['os_service_default'],
   $tenant_name_discovery           = $facts['os_service_default'],
+  $pollsters_definitions_dirs      = $facts['os_service_default'],
 ) inherits ceilometer {
 
   include ceilometer::deps
@@ -208,8 +219,9 @@ class ceilometer::agent::polling (
   }
 
   ceilometer_config {
-    'polling/batch_size':            value => $batch_size;
-    'polling/tenant_name_discovery': value => $tenant_name_discovery;
+    'polling/batch_size':                 value => $batch_size;
+    'polling/tenant_name_discovery':      value => $tenant_name_discovery;
+    'polling/pollsters_definitions_dirs': value => join(any2array($pollsters_definitions_dirs), ',');
   }
 
   if $manage_service {
@@ -279,5 +291,13 @@ class ceilometer::agent::polling (
       selinux_ignore_defaults => true,
       tag                     => 'ceilometer-yamls',
     }
+
+    ceilometer_config {
+      'polling/cfg_file': value => $::ceilometer::params::polling;
+    }
+  } else {
+    ceilometer_config {
+      'polling/cfg_file': value => $cfg_file;
+    }
   }
 }
diff --git a/releasenotes/notes/cfg_file-opts-290f312b878a7466.yaml b/releasenotes/notes/cfg_file-opts-290f312b878a7466.yaml
new file mode 100644
index 00000000..24bda2c6
--- /dev/null
+++ b/releasenotes/notes/cfg_file-opts-290f312b878a7466.yaml
@@ -0,0 +1,9 @@
+---
+features:
+  - |
+    The following parameters have been added.
+
+    - ``ceilometer::agent::notification::event_pipeline_cfg_file``
+    - ``ceilometer::agent::notification::pipeline_cfg_file``
+    - ``ceilometer::agent::polling::cfg_file``
+    - ``ceilometer::agent::polling::pollsters_definitions_dirs``
diff --git a/spec/classes/ceilometer_agent_notification_spec.rb b/spec/classes/ceilometer_agent_notification_spec.rb
index d552c268..2800c614 100644
--- a/spec/classes/ceilometer_agent_notification_spec.rb
+++ b/spec/classes/ceilometer_agent_notification_spec.rb
@@ -50,6 +50,8 @@ describe 'ceilometer::agent::notification' do
       is_expected.to contain_ceilometer_config('notification/disable_non_metric_meters').with_value('<SERVICE DEFAULT>')
       is_expected.to contain_ceilometer_config('notification/batch_size').with_value('<SERVICE DEFAULT>')
       is_expected.to contain_ceilometer_config('notification/batch_timeout').with_value('<SERVICE DEFAULT>')
+      is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('<SERVICE DEFAULT>')
+      is_expected.to contain_ceilometer_config('DEFAULT/pipeline_cfg_file').with_value('<SERVICE DEFAULT>')
     end
 
     context 'with disabled non-metric meters' do
@@ -130,6 +132,7 @@ describe 'ceilometer::agent::notification' do
           "      publishers:",
           "          - gnocchi://",
       ])}
+      it { is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('/etc/ceilometer/event_pipeline.yaml') }
     end
 
     context "with multiple event_pipeline publishers specified" do
@@ -153,6 +156,7 @@ describe 'ceilometer::agent::notification' do
           "          - notifier://",
           "          - notifier://?topic=alarm.all",
       ])}
+      it { is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('/etc/ceilometer/event_pipeline.yaml') }
     end
 
     context 'with event_pipeline and custom config' do
@@ -185,13 +189,15 @@ sinks:
   - gnocchi://
 ',
       )}
+      it { is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('/etc/ceilometer/event_pipeline.yaml') }
     end
 
     context "with event_pipeline management disabled" do
       before { params.merge!(
         :manage_event_pipeline => false
       ) }
-        it { is_expected.not_to contain_file('event_pipeline') }
+      it { is_expected.not_to contain_file('event_pipeline') }
+      it { is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('<SERVICE DEFAULT>') }
     end
 
     context "with pipeline management enabled" do
@@ -205,6 +211,7 @@ sinks:
         'owner' => 'root',
         'group' => 'ceilometer',
       ) }
+      it { is_expected.to contain_ceilometer_config('DEFAULT/pipeline_cfg_file').with_value('/etc/ceilometer/pipeline.yaml') }
     end
 
     context 'with pipeline and custom config' do
@@ -237,13 +244,15 @@ sinks:
   - gnocchi://
 ',
       )}
+      it { is_expected.to contain_ceilometer_config('DEFAULT/pipeline_cfg_file').with_value('/etc/ceilometer/pipeline.yaml') }
     end
 
     context "with pipeline management disabled" do
       before { params.merge!(
         :manage_pipeline => false
       ) }
-        it { is_expected.not_to contain_file('pipeline') }
+      it { is_expected.not_to contain_file('pipeline') }
+      it { is_expected.to contain_ceilometer_config('DEFAULT/event_pipeline_cfg_file').with_value('<SERVICE DEFAULT>') }
     end
 
     context 'with workers' do
diff --git a/spec/classes/ceilometer_agent_polling_spec.rb b/spec/classes/ceilometer_agent_polling_spec.rb
index e6383f7a..8d03b655 100644
--- a/spec/classes/ceilometer_agent_polling_spec.rb
+++ b/spec/classes/ceilometer_agent_polling_spec.rb
@@ -73,6 +73,8 @@ describe 'ceilometer::agent::polling' do
       it { should contain_ceilometer_config('polling/batch_size').with_value('<SERVICE DEFAULT>') }
       it { should_not contain_file('polling') }
       it { should contain_ceilometer_config('polling/tenant_name_discovery').with_value('<SERVICE DEFAULT>') }
+      it { should contain_ceilometer_config('polling/pollsters_definitions_dirs').with_value('<SERVICE DEFAULT>') }
+      it { should contain_ceilometer_config('polling/cfg_file').with_value('<SERVICE DEFAULT>') }
     end
 
     context 'when setting package_ensure' do
@@ -113,6 +115,19 @@ describe 'ceilometer::agent::polling' do
       }
     end
 
+    context 'when pollsters_definitions_dirs is set' do
+      before do
+        params.merge!(
+          :pollsters_definitions_dirs => ['/etc/ceilometer/pollsters.d', '/etc/ceilometer/mypollsters.d']
+        )
+      end
+
+      it {
+        should contain_ceilometer_config('polling/pollsters_definitions_dirs').with_value(
+          '/etc/ceilometer/pollsters.d,/etc/ceilometer/mypollsters.d')
+      }
+    end
+
     context 'with compute namespace disabled' do
       before do
         params.merge!(
@@ -217,6 +232,7 @@ sources:
         :selinux_ignore_defaults => true,
         :tag                     => 'ceilometer-yamls',
       )}
+      it { should contain_ceilometer_config('polling/cfg_file').with_value('/etc/ceilometer/polling.yaml') }
     end
 
     context 'with polling and basic custom settings' do
@@ -240,6 +256,7 @@ sources:
         :selinux_ignore_defaults => true,
         :tag                     => 'ceilometer-yamls',
       )}
+      it { should contain_ceilometer_config('polling/cfg_file').with_value('/etc/ceilometer/polling.yaml') }
     end
 
     context 'with polling and custom config' do
@@ -269,6 +286,7 @@ sources:
   - meterbar
 ',
       )}
+      it { should contain_ceilometer_config('polling/cfg_file').with_value('/etc/ceilometer/polling.yaml') }
     end
 
     context 'with polling management disabled' do
@@ -277,6 +295,7 @@ sources:
       end
 
       it { should_not contain_file('polling') }
+      it { should contain_ceilometer_config('polling/cfg_file').with_value('<SERVICE DEFAULT>') }
     end
 
     context 'when batch_size is set' do