diff --git a/ci/environments/scenario001-standalone.yaml b/ci/environments/scenario001-standalone.yaml
index 6514fa1a92..94a9f66321 100644
--- a/ci/environments/scenario001-standalone.yaml
+++ b/ci/environments/scenario001-standalone.yaml
@@ -3,9 +3,9 @@ resource_registry:
   OS::TripleO::Services::AodhEvaluator: ../../deployment/aodh/aodh-evaluator-container-puppet.yaml
   OS::TripleO::Services::AodhListener: ../../deployment/aodh/aodh-listener-container-puppet.yaml
   OS::TripleO::Services::AodhNotifier: ../../deployment/aodh/aodh-notifier-container-puppet.yaml
-  OS::TripleO::Services::CeilometerAgentCentral: ../../docker/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::CeilometerAgentNotification: ../../docker/services/ceilometer-agent-notification.yaml
-  OS::TripleO::Services::ComputeCeilometerAgent: ../../docker/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: ../../deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: ../../deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
+  OS::TripleO::Services::ComputeCeilometerAgent: ../../deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
   OS::TripleO::Services::CephMgr: ../../docker/services/ceph-ansible/ceph-mgr.yaml
   OS::TripleO::Services::CephMon: ../../docker/services/ceph-ansible/ceph-mon.yaml
   OS::TripleO::Services::CephOSD: ../../docker/services/ceph-ansible/ceph-osd.yaml
diff --git a/ci/environments/scenario002-standalone.yaml b/ci/environments/scenario002-standalone.yaml
index 3324fd9a3f..a27c036c72 100644
--- a/ci/environments/scenario002-standalone.yaml
+++ b/ci/environments/scenario002-standalone.yaml
@@ -3,9 +3,9 @@ resource_registry:
   OS::TripleO::Services::AodhEvaluator: ../../deployment/aodh/aodh-evaluator-container-puppet.yaml
   OS::TripleO::Services::AodhListener: ../../deployment/aodh/aodh-listener-container-puppet.yaml
   OS::TripleO::Services::AodhNotifier: ../../deployment/aodh/aodh-notifier-container-puppet.yaml
-  OS::TripleO::Services::CeilometerAgentCentral: ../../docker/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::CeilometerAgentNotification: ../../docker/services/ceilometer-agent-notification.yaml
-  OS::TripleO::Services::ComputeCeilometerAgent: ../../docker/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: ../../deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: ../../deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
+  OS::TripleO::Services::ComputeCeilometerAgent: ../../deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
   OS::TripleO::Services::GnocchiApi: ../../docker/services/gnocchi-api.yaml
   OS::TripleO::Services::GnocchiMetricd: ../../docker/services/gnocchi-metricd.yaml
   OS::TripleO::Services::GnocchiStatsd: ../../docker/services/gnocchi-statsd.yaml
diff --git a/docker/services/ceilometer-agent-central.yaml b/deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
similarity index 88%
rename from docker/services/ceilometer-agent-central.yaml
rename to deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
index ed6fda0bee..eed347eeba 100644
--- a/docker/services/ceilometer-agent-central.yaml
+++ b/deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
@@ -45,19 +45,26 @@ parameters:
     default: false
     description: Remove package if the service is being disabled during upgrade
     type: boolean
+  RedisPassword:
+    description: The password for the redis service account.
+    type: string
+    hidden: true
+  MonitoringSubscriptionCeilometerCentral:
+    default: 'overcloud-ceilometer-agent-central'
+    type: string
 
 resources:
 
   ContainersCommon:
-   type: ./containers-common.yaml
+    type: ../../docker/services/containers-common.yaml
 
-  CeilometerAgentCentralBase:
-    type: ../../puppet/services/ceilometer-agent-central.yaml
+  CeilometerServiceBase:
+    type: ./ceilometer-base-container-puppet.yaml
     properties:
-      EndpointMap: {get_param: EndpointMap}
       ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
       RoleName: {get_param: RoleName}
       RoleParameters: {get_param: RoleParameters}
 
@@ -65,11 +72,16 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Agent Central role.
     value:
-      service_name: {get_attr: [CeilometerAgentCentralBase, role_data, service_name]}
-      config_settings: {get_attr: [CeilometerAgentCentralBase, role_data, config_settings]}
+      service_name: ceilometer_agent_central
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCentral}
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer_redis_password: {get_param: RedisPassword}
+            central_namespace: true
       service_config_settings:
         map_merge:
-          - get_attr: [CeilometerAgentCentralBase, role_data, service_config_settings]
+          - get_attr: [CeilometerServiceBase, role_data, service_config_settings]
           - fluentd:
               tripleo_fluentd_groups_ceilometer_agent_central:
                 - ceilometer
@@ -79,8 +91,8 @@ outputs:
       puppet_config:
         config_volume: ceilometer
         puppet_tags: ceilometer_config
-        step_config:
-          get_attr: [CeilometerAgentCentralBase, role_data, step_config]
+        step_config: |
+          include ::tripleo::profile::base::ceilometer::agent::polling
         config_image: {get_param: DockerCeilometerConfigImage}
       kolla_config:
         /var/lib/kolla/config_files/ceilometer_agent_central.json:
diff --git a/docker/services/ceilometer-agent-compute.yaml b/deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
similarity index 81%
rename from docker/services/ceilometer-agent-compute.yaml
rename to deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
index 44e3f4af22..a17b16f2e1 100644
--- a/docker/services/ceilometer-agent-compute.yaml
+++ b/deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
@@ -40,19 +40,36 @@ parameters:
     default: false
     description: Remove package if the service is being disabled during upgrade
     type: boolean
+  MonitoringSubscriptionCeilometerCompute:
+    default: 'overcloud-ceilometer-agent-compute'
+    type: string
+  InstanceDiscoveryMethod:
+    default: 'libvirt_metadata'
+    description: Method used to discover instances running on compute node
+    type: string
+    constraints:
+    - allowed_values: ['naive', 'libvirt_metadata', 'workload_partitioning']
+  RedisPassword:
+    description: The password for the redis service account.
+    type: string
+    hidden: true
+  RpcPort:
+    default: 5672
+    description: The network port for messaging backend
+    type: number
 
 resources:
 
   ContainersCommon:
-    type: ./containers-common.yaml
+    type: ../../docker/services/containers-common.yaml
 
-  CeilometerAgentComputeBase:
-    type: ../../puppet/services/ceilometer-agent-compute.yaml
+  CeilometerServiceBase:
+    type: ./ceilometer-base-container-puppet.yaml
     properties:
-      EndpointMap: {get_param: EndpointMap}
       ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
       RoleName: {get_param: RoleName}
       RoleParameters: {get_param: RoleParameters}
 
@@ -60,15 +77,22 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Agent Compute role.
     value:
-      service_name: {get_attr: [CeilometerAgentComputeBase, role_data, service_name]}
-      config_settings: {get_attr: [CeilometerAgentComputeBase, role_data, config_settings]}
-      service_config_settings: {get_attr: [CeilometerAgentComputeBase, role_data, service_config_settings]}
+      service_name: ceilometer_agent_compute
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCompute}
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::agent::compute::instance_discovery_method: {get_param: InstanceDiscoveryMethod}
+          - ceilometer_redis_password: {get_param: RedisPassword}
+            compute_namespace: true
+      service_config_settings:
+        get_attr: [CeilometerServiceBase, role_data, service_config_settings]
       # BEGIN DOCKER SETTINGS
       puppet_config:
         config_volume: ceilometer
         puppet_tags: ceilometer_config
         step_config:
-          get_attr: [CeilometerAgentComputeBase, role_data, step_config]
+          include ::tripleo::profile::base::ceilometer::agent::polling
         config_image: {get_param: DockerCeilometerConfigImage}
       kolla_config:
         /var/lib/kolla/config_files/ceilometer_agent_compute.json:
@@ -93,7 +117,7 @@ outputs:
                     - yaql:
                         expression: str($.data.port)
                         data:
-                          port: {get_attr: [CeilometerAgentComputeBase, role_data, config_settings, 'ceilometer::rabbit_port']}
+                          port: {get_param: RpcPort}
             volumes:
               list_concat:
                 - {get_attr: [ContainersCommon, volumes]}
diff --git a/docker/services/ceilometer-agent-ipmi.yaml b/deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
similarity index 81%
rename from docker/services/ceilometer-agent-ipmi.yaml
rename to deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
index 71a6c36f92..eb96923d04 100644
--- a/docker/services/ceilometer-agent-ipmi.yaml
+++ b/deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
@@ -45,14 +45,31 @@ parameters:
     default: false
     description: Remove package if the service is being disabled during upgrade
     type: boolean
+  RedisPassword:
+    description: The password for the redis service account.
+    type: string
+    hidden: true
+  MonitoringSubscriptionCeilometerIpmi:
+    default: 'overcloud-ceilometer-agent-ipmi'
+    type: string
 
 resources:
 
   ContainersCommon:
-   type: ./containers-common.yaml
+    type: ../../docker/services/containers-common.yaml
 
-  CeilometerAgentIpmiBase:
-    type: ../../puppet/services/ceilometer-agent-ipmi.yaml
+  CeilometerServiceBase:
+    type: ./ceilometer-base-container-puppet.yaml
+    properties:
+      ServiceData: {get_param: ServiceData}
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+      RoleName: {get_param: RoleName}
+      RoleParameters: {get_param: RoleParameters}
+
+  CeilometerAgentCentralBase:
+    type: ./ceilometer-agent-central-container-puppet.yaml
     properties:
       EndpointMap: {get_param: EndpointMap}
       ServiceData: {get_param: ServiceData}
@@ -65,22 +82,24 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Agent Ipmi role.
     value:
-      service_name: {get_attr: [CeilometerAgentIpmiBase, role_data, service_name]}
-      config_settings: {get_attr: [CeilometerAgentIpmiBase, role_data, config_settings]}
-      service_config_settings:
+      service_name: ceilometer_agent_ipmi
+      config_settings:
         map_merge:
-          - get_attr: [CeilometerAgentIpmiBase, role_data, service_config_settings]
-          - fluentd:
-              tripleo_fluentd_groups_ceilometer_agent_ipmi:
-                - ceilometer
-              tripleo_fluentd_sources_ceilometer_agent_ipmi:
-                - {get_param: CeilometerAgentIpmiLoggingSource}
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer_redis_password: {get_param: RedisPassword}
+            ipmi_namespace: true
+      service_config_settings:
+        fluentd:
+          tripleo_fluentd_groups_ceilometer_agent_ipmi:
+            - ceilometer
+          tripleo_fluentd_sources_ceilometer_agent_ipmi:
+            - {get_param: CeilometerAgentIpmiLoggingSource}
       # BEGIN DOCKER SETTINGS
       puppet_config:
         config_volume: ceilometer
         puppet_tags: ceilometer_config
-        step_config:
-          get_attr: [CeilometerAgentIpmiBase, role_data, step_config]
+        step_config: |
+          include ::tripleo::profile::base::ceilometer::agent::polling
         config_image: {get_param: DockerCeilometerConfigImage}
       kolla_config:
         /var/lib/kolla/config_files/ceilometer-agent-ipmi.json:
diff --git a/docker/services/ceilometer-agent-notification.yaml b/deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
similarity index 89%
rename from docker/services/ceilometer-agent-notification.yaml
rename to deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
index 88947f51c1..30de4cb663 100644
--- a/docker/services/ceilometer-agent-notification.yaml
+++ b/deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
@@ -49,19 +49,26 @@ parameters:
     default: true
     description: Check if panko need to be enabled or not.
     type: boolean
+  MonitoringSubscriptionCeilometerNotification:
+    default: 'overcloud-ceilometer-agent-notification'
+    type: string
+  RpcPort:
+    default: 5672
+    description: The network port for messaging backend
+    type: number
 
 resources:
 
   ContainersCommon:
-    type: ./containers-common.yaml
+    type: ../../docker/services/containers-common.yaml
 
-  CeilometerAgentNotificationBase:
-    type: ../../puppet/services/ceilometer-agent-notification.yaml
+  CeilometerServiceBase:
+    type: ./ceilometer-base-container-puppet.yaml
     properties:
-      EndpointMap: {get_param: EndpointMap}
       ServiceData: {get_param: ServiceData}
       ServiceNetMap: {get_param: ServiceNetMap}
       DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
       RoleName: {get_param: RoleName}
       RoleParameters: {get_param: RoleParameters}
 
@@ -72,11 +79,13 @@ outputs:
   role_data:
     description: Role data for the Ceilometer Agent Notification role.
     value:
-      service_name: {get_attr: [CeilometerAgentNotificationBase, role_data, service_name]}
-      config_settings: {get_attr: [CeilometerAgentNotificationBase, role_data, config_settings]}
+      service_name: ceilometer_agent_notification
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerNotification}
+      config_settings:
+        get_attr: [CeilometerServiceBase, role_data, config_settings]
       service_config_settings:
         map_merge:
-          - get_attr: [CeilometerAgentNotificationBase, role_data, service_config_settings]
+          - get_attr: [CeilometerServiceBase, role_data, service_config_settings]
           - fluentd:
               tripleo_fluentd_groups_ceilometer_agent_notification:
                 - ceilometer
@@ -86,8 +95,8 @@ outputs:
       puppet_config:
         config_volume: ceilometer
         puppet_tags: ceilometer_config
-        step_config:
-          get_attr: [CeilometerAgentNotificationBase, role_data, step_config]
+        step_config: |
+          include ::tripleo::profile::base::ceilometer::agent::notification
         config_image: {get_param: DockerCeilometerConfigImage}
       kolla_config:
         /var/lib/kolla/config_files/ceilometer_agent_notification.json:
@@ -132,7 +141,7 @@ outputs:
                     - yaql:
                         expression: str($.data.port)
                         data:
-                          port: {get_attr: [CeilometerAgentNotificationBase, role_data, config_settings, 'ceilometer::rabbit_port']}
+                          port: {get_param: RpcPort}
             volumes:
               list_concat:
                 - {get_attr: [ContainersCommon, volumes]}
diff --git a/puppet/services/ceilometer-base.yaml b/deployment/ceilometer/ceilometer-base-container-puppet.yaml
similarity index 100%
rename from puppet/services/ceilometer-base.yaml
rename to deployment/ceilometer/ceilometer-base-container-puppet.yaml
diff --git a/environments/baremetal-services.yaml b/environments/baremetal-services.yaml
index 42f130b12f..774bbcb5f2 100644
--- a/environments/baremetal-services.yaml
+++ b/environments/baremetal-services.yaml
@@ -7,13 +7,13 @@ resource_registry:
   OS::TripleO::Services::AodhNotifier: ../deployment/aodh/aodh-notifier-container-puppet.yaml
   OS::TripleO::Services::AodhListener: ../deployment/aodh/aodh-listener-container-puppet.yaml
   OS::TripleO::Services::BlockStorageCinderVolume: ../deployment/cinder/cinder-volume-container-puppet.yaml
-  OS::TripleO::Services::CeilometerAgentCentral: ../puppet/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::CeilometerAgentIpmi: ../puppet/services/ceilometer-agent-ipmi.yaml
-  OS::TripleO::Services::CeilometerAgentNotification: ../puppet/services/ceilometer-agent-notification.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: ../deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentIpmi: ../deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: ../deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
   OS::TripleO::Services::CinderApi: ../deployment/cinder/cinder-api-container-puppet.yaml
   OS::TripleO::Services::CinderScheduler: ../deployment/cinder/cinder-scheduler-container-puppet.yaml
   OS::TripleO::Services::CinderVolume: ../deployment/cinder/cinder-volume-container-puppet.yaml
-  OS::TripleO::Services::ComputeCeilometerAgent: ../puppet/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::ComputeCeilometerAgent: ../deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
   OS::TripleO::Services::ComputeNeutronOvsAgent: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml
   OS::TripleO::Services::ContainersLogrotateCrond: OS::Heat::None
   OS::TripleO::Services::GlanceApi: ../deployment/glance/glance-api-container-puppet.yaml
diff --git a/environments/computealt.yaml b/environments/computealt.yaml
index 8f2978f939..ec24d4dfd9 100644
--- a/environments/computealt.yaml
+++ b/environments/computealt.yaml
@@ -2,7 +2,7 @@ resource_registry:
   OS::TripleO::Services::CollectdAlt: OS::Heat::None
   # If enabling collectd you'll need provide the following in a specific resource_registry
   # OS::TripleO::Services::CollectdAlt: ../puppet/services/metrics/collectd.yaml
-  OS::TripleO::Services::ComputeCeilometerAgentAlt: ../puppet/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::ComputeCeilometerAgentAlt: ../deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
   OS::TripleO::Services::ComputeNeutronOvsAgentAlt: ../deployment/neutron/neutron-ovs-agent-container-puppet.yaml
   OS::TripleO::Services::FluentdAlt: OS::Heat::None
   # If enabling fluentd you'll need provide the following in a specific resource_registry
diff --git a/environments/services-baremetal/undercloud-ceilometer.yaml b/environments/services-baremetal/undercloud-ceilometer.yaml
index f0a36dfd99..41944f713a 100644
--- a/environments/services-baremetal/undercloud-ceilometer.yaml
+++ b/environments/services-baremetal/undercloud-ceilometer.yaml
@@ -1,4 +1,4 @@
 resource_registry:
-  OS::TripleO::Services::UndercloudCeilometerAgentCentral: ../../puppet/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::UndercloudCeilometerAgentNotification: ../../puppet/services/ceilometer-agent-notification.yaml
-  OS::TripleO::Services::UndercloudCeilometerAgentIpmi: ../../puppet/services/ceilometer-agent-ipmi.yaml
+  OS::TripleO::Services::UndercloudCeilometerAgentCentral: ../../deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::UndercloudCeilometerAgentNotification: ../../deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
+  OS::TripleO::Services::UndercloudCeilometerAgentIpmi: ../../deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
diff --git a/environments/services/undercloud-ceilometer.yaml b/environments/services/undercloud-ceilometer.yaml
index a696d4dc95..4ba768919f 100644
--- a/environments/services/undercloud-ceilometer.yaml
+++ b/environments/services/undercloud-ceilometer.yaml
@@ -1,6 +1,6 @@
 # DEPRECATED. This file will be removed in the Stein release as it is no longer
 # needed
 resource_registry:
-  OS::TripleO::Services::CeilometerAgentCentral: ../../docker/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::CeilometerAgentNotification: ../../docker/services/ceilometer-agent-notification.yaml
-  OS::TripleO::Services::CeilometerAgentIpmi: ../../docker/services/ceilometer-agent-ipmi.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: ../../deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: ../../deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentIpmi: ../../deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml
index 48c043cbac..ea715cc72f 100644
--- a/overcloud-resource-registry-puppet.j2.yaml
+++ b/overcloud-resource-registry-puppet.j2.yaml
@@ -216,10 +216,10 @@ resource_registry:
   OS::TripleO::Services::Snmp: deployment/snmp/snmp-baremetal-puppet.yaml
   OS::TripleO::Services::Tacker: OS::Heat::None
   OS::TripleO::Services::Timezone: deployment/time/timezone-baremetal-puppet.yaml
-  OS::TripleO::Services::CeilometerAgentCentral: docker/services/ceilometer-agent-central.yaml
-  OS::TripleO::Services::CeilometerAgentIpmi: docker/services/ceilometer-agent-ipmi.yaml
-  OS::TripleO::Services::CeilometerAgentNotification: docker/services/ceilometer-agent-notification.yaml
-  OS::TripleO::Services::ComputeCeilometerAgent: docker/services/ceilometer-agent-compute.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: deployment/ceilometer/ceilometer-agent-central-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentIpmi: deployment/ceilometer/ceilometer-agent-ipmi-container-puppet.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: deployment/ceilometer/ceilometer-agent-notification-container-puppet.yaml
+  OS::TripleO::Services::ComputeCeilometerAgent: deployment/ceilometer/ceilometer-agent-compute-container-puppet.yaml
   OS::TripleO::Services::Horizon: deployment/horizon/horizon-container-puppet.yaml
   #Gnocchi services
   OS::TripleO::Services::GnocchiApi: docker/services/gnocchi-api.yaml
diff --git a/puppet/services/ceilometer-agent-central.yaml b/puppet/services/ceilometer-agent-central.yaml
deleted file mode 100644
index d6869dfdea..0000000000
--- a/puppet/services/ceilometer-agent-central.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-heat_template_version: rocky
-
-description: >
-  OpenStack Ceilometer Central Agent service configured with Puppet
-
-parameters:
-  ServiceData:
-    default: {}
-    description: Dictionary packing service data
-    type: json
-  ServiceNetMap:
-    default: {}
-    description: Mapping of service_name -> network name. Typically set
-                 via parameter_defaults in the resource registry.  This
-                 mapping overrides those in ServiceNetMapDefaults.
-    type: json
-  DefaultPasswords:
-    default: {}
-    type: json
-  RoleName:
-    default: ''
-    description: Role name on which the service is applied
-    type: string
-  RoleParameters:
-    default: {}
-    description: Parameters specific to the role
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-  RedisPassword:
-    description: The password for the redis service account.
-    type: string
-    hidden: true
-  MonitoringSubscriptionCeilometerCentral:
-    default: 'overcloud-ceilometer-agent-central'
-    type: string
-  CeilometerAgentCentralLoggingSource:
-    type: json
-    default:
-      tag: openstack.ceilometer.agent.central
-      path: /var/log/ceilometer/central.log
-
-resources:
-  CeilometerServiceBase:
-    type: ./ceilometer-base.yaml
-    properties:
-      ServiceData: {get_param: ServiceData}
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
-      RoleName: {get_param: RoleName}
-      RoleParameters: {get_param: RoleParameters}
-
-outputs:
-  role_data:
-    description: Role data for the Ceilometer Central Agent role.
-    value:
-      service_name: ceilometer_agent_central
-      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCentral}
-      config_settings:
-        map_merge:
-          - get_attr: [CeilometerServiceBase, role_data, config_settings]
-          - ceilometer_redis_password: {get_param: RedisPassword}
-            central_namespace: true
-      service_config_settings:
-        map_merge:
-          - get_attr: [CeilometerServiceBase, role_data, service_config_settings]
-          - fluentd:
-              tripleo_fluentd_groups_ceilometer_agent_central:
-                - ceilometer
-              tripleo_fluentd_sources_ceilometer_agent_central:
-                - {get_param: CeilometerAgentCentralLoggingSource}
-
-      step_config: |
-        include ::tripleo::profile::base::ceilometer::agent::polling
-      upgrade_tasks: []
diff --git a/puppet/services/ceilometer-agent-compute.yaml b/puppet/services/ceilometer-agent-compute.yaml
deleted file mode 100644
index 059e8a7c40..0000000000
--- a/puppet/services/ceilometer-agent-compute.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-heat_template_version: rocky
-
-description: >
-  OpenStack Ceilometer Compute Agent service configured with Puppet
-
-parameters:
-  ServiceData:
-    default: {}
-    description: Dictionary packing service data
-    type: json
-  ServiceNetMap:
-    default: {}
-    description: Mapping of service_name -> network name. Typically set
-                 via parameter_defaults in the resource registry.  This
-                 mapping overrides those in ServiceNetMapDefaults.
-    type: json
-  DefaultPasswords:
-    default: {}
-    type: json
-  RoleName:
-    default: ''
-    description: Role name on which the service is applied
-    type: string
-  RoleParameters:
-    default: {}
-    description: Parameters specific to the role
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-  MonitoringSubscriptionCeilometerCompute:
-    default: 'overcloud-ceilometer-agent-compute'
-    type: string
-  InstanceDiscoveryMethod:
-    default: 'libvirt_metadata'
-    description: Method used to discover instances running on compute node
-    type: string
-    constraints:
-    - allowed_values: ['naive', 'libvirt_metadata', 'workload_partitioning']
-  RedisPassword:
-    description: The password for the redis service account.
-    type: string
-    hidden: true
-
-resources:
-  CeilometerServiceBase:
-    type: ./ceilometer-base.yaml
-    properties:
-      ServiceData: {get_param: ServiceData}
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
-      RoleName: {get_param: RoleName}
-      RoleParameters: {get_param: RoleParameters}
-
-outputs:
-  role_data:
-    description: Role data for the Ceilometer Compute Agent role.
-    value:
-      service_name: ceilometer_agent_compute
-      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCompute}
-      config_settings:
-        map_merge:
-          - get_attr: [CeilometerServiceBase, role_data, config_settings]
-          - ceilometer::agent::compute::instance_discovery_method: {get_param: InstanceDiscoveryMethod}
-          - ceilometer_redis_password: {get_param: RedisPassword}
-            compute_namespace: true
-      service_config_settings:
-        get_attr: [CeilometerServiceBase, role_data, service_config_settings]
-      step_config: |
-        include ::tripleo::profile::base::ceilometer::agent::polling
-      upgrade_tasks: []
diff --git a/puppet/services/ceilometer-agent-ipmi.yaml b/puppet/services/ceilometer-agent-ipmi.yaml
deleted file mode 100644
index bdbaad25de..0000000000
--- a/puppet/services/ceilometer-agent-ipmi.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-heat_template_version: rocky
-
-description: >
-  OpenStack Ceilometer Ipmi Agent service configured with Puppet
-
-parameters:
-  ServiceData:
-    default: {}
-    description: Dictionary packing service data
-    type: json
-  ServiceNetMap:
-    default: {}
-    description: Mapping of service_name -> network name. Typically set
-                 via parameter_defaults in the resource registry.  This
-                 mapping overrides those in ServiceNetMapDefaults.
-    type: json
-  DefaultPasswords:
-    default: {}
-    type: json
-  RoleName:
-    default: ''
-    description: Role name on which the service is applied
-    type: string
-  RoleParameters:
-    default: {}
-    description: Parameters specific to the role
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-  RedisPassword:
-    description: The password for the redis service account.
-    type: string
-    hidden: true
-  MonitoringSubscriptionCeilometerIpmi:
-    default: 'overcloud-ceilometer-agent-ipmi'
-    type: string
-  CeilometerAgentIpmiLoggingSource:
-    type: json
-    default:
-      tag: openstack.ceilometer.agent.ipmi
-      path: /var/log/ceilometer/ipmi.log
-
-resources:
-  CeilometerServiceBase:
-    type: ./ceilometer-base.yaml
-    properties:
-      ServiceData: {get_param: ServiceData}
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
-      RoleName: {get_param: RoleName}
-      RoleParameters: {get_param: RoleParameters}
-
-outputs:
-  role_data:
-    description: Role data for the Ceilometer Agent Ipmi role.
-    value:
-      service_name: ceilometer_agent_ipmi
-      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerIpmi}
-      config_settings:
-        map_merge:
-          - get_attr: [CeilometerServiceBase, role_data, config_settings]
-          - ceilometer_redis_password: {get_param: RedisPassword}
-            ipmi_namespace: true
-      service_config_settings:
-        fluentd:
-          tripleo_fluentd_groups_ceilometer_agent_ipmi:
-            - ceilometer
-          tripleo_fluentd_sources_ceilometer_agent_ipmi:
-            - {get_param: CeilometerAgentIpmiLoggingSource}
-      step_config: |
-        include ::tripleo::profile::base::ceilometer::agent::polling
-      upgrade_tasks: []
diff --git a/puppet/services/ceilometer-agent-notification.yaml b/puppet/services/ceilometer-agent-notification.yaml
deleted file mode 100644
index 4849987daf..0000000000
--- a/puppet/services/ceilometer-agent-notification.yaml
+++ /dev/null
@@ -1,71 +0,0 @@
-heat_template_version: rocky
-
-description: >
-  OpenStack Ceilometer Notification Agent service configured with Puppet
-
-parameters:
-  ServiceData:
-    default: {}
-    description: Dictionary packing service data
-    type: json
-  ServiceNetMap:
-    default: {}
-    description: Mapping of service_name -> network name. Typically set
-                 via parameter_defaults in the resource registry.  This
-                 mapping overrides those in ServiceNetMapDefaults.
-    type: json
-  DefaultPasswords:
-    default: {}
-    type: json
-  RoleName:
-    default: ''
-    description: Role name on which the service is applied
-    type: string
-  RoleParameters:
-    default: {}
-    description: Parameters specific to the role
-    type: json
-  EndpointMap:
-    default: {}
-    description: Mapping of service endpoint -> protocol. Typically set
-                 via parameter_defaults in the resource registry.
-    type: json
-  MonitoringSubscriptionCeilometerNotification:
-    default: 'overcloud-ceilometer-agent-notification'
-    type: string
-  CeilometerAgentNotificationLoggingSource:
-    type: json
-    default:
-      tag: openstack.ceilometer.agent.notification
-      path: /var/log/ceilometer/agent-notification.log
-
-resources:
-  CeilometerServiceBase:
-    type: ./ceilometer-base.yaml
-    properties:
-      ServiceData: {get_param: ServiceData}
-      ServiceNetMap: {get_param: ServiceNetMap}
-      DefaultPasswords: {get_param: DefaultPasswords}
-      EndpointMap: {get_param: EndpointMap}
-      RoleName: {get_param: RoleName}
-      RoleParameters: {get_param: RoleParameters}
-
-outputs:
-  role_data:
-    description: Role data for the Ceilometer Notification Agent role.
-    value:
-      service_name: ceilometer_agent_notification
-      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerNotification}
-      config_settings:
-        get_attr: [CeilometerServiceBase, role_data, config_settings]
-      service_config_settings:
-        map_merge:
-          - get_attr: [CeilometerServiceBase, role_data, service_config_settings]
-          - fluentd:
-              tripleo_fluentd_groups_ceilometer_agent_notification:
-                - ceilometer
-              tripleo_fluentd_sources_ceilometer_agent_notification:
-                - {get_param: CeilometerAgentNotificationLoggingSource}
-      step_config: |
-        include ::tripleo::profile::base::ceilometer::agent::notification
-      upgrade_tasks: []