diff --git a/environments/hyperconverged-ceph.yaml b/environments/hyperconverged-ceph.yaml index 5986542c25..9540015102 100644 --- a/environments/hyperconverged-ceph.yaml +++ b/environments/hyperconverged-ceph.yaml @@ -57,4 +57,4 @@ parameter_defaults: - OS::TripleO::Services::RsyslogSidecar - OS::TripleO::Services::LoginDefs - OS::TripleO::Services::Rhsm - + - OS::TripleO::Services::Ptp diff --git a/environments/services/ptp.yaml b/environments/services/ptp.yaml new file mode 100644 index 0000000000..c38af0cb86 --- /dev/null +++ b/environments/services/ptp.yaml @@ -0,0 +1,15 @@ +# A Heat environment file that can be used to deploy PTP service + +resource_registry: + OS::TripleO::Services::Ntp: OS::Heat::None + OS::TripleO::Services::Ptp: ../../puppet/services/time/ptp.yaml + +parameter_defaults: + # PTP hardware interface name + # PtpInterface: 'nic1' + + # Configure PTP clock in slave mode + PtpSlaveMode: 1 + + # Configure PTP message transport protocol + PtpMessageTransport: 'UDPv4' diff --git a/overcloud-resource-registry-puppet.j2.yaml b/overcloud-resource-registry-puppet.j2.yaml index 170cb02e5c..274717ee67 100644 --- a/overcloud-resource-registry-puppet.j2.yaml +++ b/overcloud-resource-registry-puppet.j2.yaml @@ -323,6 +323,7 @@ resource_registry: OS::TripleO::Services::SkydiveAnalyzer: OS::Heat::None OS::TripleO::Services::LoginDefs: OS::Heat::None OS::TripleO::Services::ComputeInstanceHA: OS::Heat::None + OS::TripleO::Services::Ptp: OS::Heat::None # Logging OS::TripleO::Services::Logging::BarbicanApi: docker/services/logging/files/barbican-api.yaml diff --git a/puppet/services/time/ptp.yaml b/puppet/services/time/ptp.yaml new file mode 100644 index 0000000000..7270637d09 --- /dev/null +++ b/puppet/services/time/ptp.yaml @@ -0,0 +1,102 @@ +heat_template_version: queens + +description: > + PTP service deployment using puppet, this YAML file + creates the interface between the HOT template and + the puppet manifest that actually installs and + configure PTP. + +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 + PtpInterface: + default: nic1 + description: PTP interface name. + type: string + PtpSlaveMode: + default: 1 + description: Configure PTP clock in slave mode. + type: number + PtpMessageTransport: + default: UDPv4 + description: Configure PTP message transport protocol. + type: string + +resources: + RoleParametersValue: + type: OS::Heat::Value + properties: + type: json + value: + map_replace: + - map_replace: + - tripleo::profile::base::time::ptp::ptp4l_interface: PtpInterface + tripleo::profile::base::time::ptp::ptp4l_conf_slaveOnly: PtpSlaveMode + tripleo::profile::base::time::ptp::ptp4l_conf_network_transport: PtpMessageTransport + - values: {get_param: [RoleParameters]} + - values: + PtpInterface: {get_param: PtpInterface} + PtpSlaveMode: {get_param: PtpSlaveMode} + PtpMessageTransport: {get_param: PtpMessageTransport} + +outputs: + role_data: + description: Role ptp using commposable services. + value: + service_name: ptp + config_settings: + map_merge: + - get_attr: [RoleParametersValue, value] + - tripleo.ptp.firewall_rules: + '151 ptp': + proto: udp + dport: + - 319 + - 320 + step_config: | + include ::tripleo::profile::base::time::ptp + upgrade_tasks: + - name: Check if NTP is deployed + command: systemctl is-enabled ntpd + tags: common + ignore_errors: True + register: ntp_enabled + - name: Validation + shell: /usr/bin/systemctl show 'ntpd' --property ActiveState | grep '\bactive\b' + when: ntp_enabled.rc == 0 + tags: step0,validation + - name: Stop NTP service + service: name=ntpd state=stopped + when: ntp_enabled.rc == 0 + tags: step2 + - name: Disable NTP service + service: name=ntpd state=stopped + ignore_errors: True + when: ntp_enabled.rc == 0 + tags: step2 diff --git a/releasenotes/notes/ptp-a1bf70fbfddd1830.yaml b/releasenotes/notes/ptp-a1bf70fbfddd1830.yaml new file mode 100644 index 0000000000..d41af9ee43 --- /dev/null +++ b/releasenotes/notes/ptp-a1bf70fbfddd1830.yaml @@ -0,0 +1,7 @@ +--- +features: + - Add the ability to deploy PTP. Precision Time Protocol (PTP) is a protocol + used to synchronize clocks throughout a compute network. With hardware + timestamping support on the host, PTP can achieve clock accuracy in the + sub-microsecond range. PTP can be used as an alternative to NTP for high + precision clock calibration. diff --git a/roles/BlockStorage.yaml b/roles/BlockStorage.yaml index abc09a9eaa..6ebeff793d 100644 --- a/roles/BlockStorage.yaml +++ b/roles/BlockStorage.yaml @@ -35,3 +35,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles/CephAll.yaml b/roles/CephAll.yaml index c1956194b7..6304dbd79f 100644 --- a/roles/CephAll.yaml +++ b/roles/CephAll.yaml @@ -39,3 +39,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles/CephFile.yaml b/roles/CephFile.yaml index 6e117cba82..7192f28a40 100644 --- a/roles/CephFile.yaml +++ b/roles/CephFile.yaml @@ -35,3 +35,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles/CephObject.yaml b/roles/CephObject.yaml index 0102d6c8b1..f4daabd359 100644 --- a/roles/CephObject.yaml +++ b/roles/CephObject.yaml @@ -35,3 +35,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles/CephStorage.yaml b/roles/CephStorage.yaml index cddd0c1b43..17734fa6ac 100644 --- a/roles/CephStorage.yaml +++ b/roles/CephStorage.yaml @@ -32,3 +32,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles/Compute.yaml b/roles/Compute.yaml index ebe5a8df8c..d2de5fa61d 100644 --- a/roles/Compute.yaml +++ b/roles/Compute.yaml @@ -63,3 +63,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeHCI.yaml b/roles/ComputeHCI.yaml index f3c0475682..3fec679be5 100644 --- a/roles/ComputeHCI.yaml +++ b/roles/ComputeHCI.yaml @@ -54,3 +54,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeOvsDpdk.yaml b/roles/ComputeOvsDpdk.yaml index 1fd5fe1401..68c61c15db 100644 --- a/roles/ComputeOvsDpdk.yaml +++ b/roles/ComputeOvsDpdk.yaml @@ -49,3 +49,4 @@ - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeOvsDpdkRT.yaml b/roles/ComputeOvsDpdkRT.yaml index 0813bf6bb6..45e7f9166c 100644 --- a/roles/ComputeOvsDpdkRT.yaml +++ b/roles/ComputeOvsDpdkRT.yaml @@ -52,3 +52,4 @@ - OS::TripleO::Services::Timezone - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeRealTime.yaml b/roles/ComputeRealTime.yaml index 17339a1961..2ee36a8078 100644 --- a/roles/ComputeRealTime.yaml +++ b/roles/ComputeRealTime.yaml @@ -62,3 +62,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeSriov.yaml b/roles/ComputeSriov.yaml index 096c340b31..7960ce9f5c 100644 --- a/roles/ComputeSriov.yaml +++ b/roles/ComputeSriov.yaml @@ -54,3 +54,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/ComputeSriovRT.yaml b/roles/ComputeSriovRT.yaml index 8560dc7a62..1157ac7035 100644 --- a/roles/ComputeSriovRT.yaml +++ b/roles/ComputeSriovRT.yaml @@ -57,3 +57,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/Controller.yaml b/roles/Controller.yaml index 2820682d34..5503a8ce12 100644 --- a/roles/Controller.yaml +++ b/roles/Controller.yaml @@ -158,3 +158,4 @@ - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar + - OS::TripleO::Services::Ptp diff --git a/roles/ControllerNoCeph.yaml b/roles/ControllerNoCeph.yaml index 13f002eef2..94ea80b4c2 100644 --- a/roles/ControllerNoCeph.yaml +++ b/roles/ControllerNoCeph.yaml @@ -154,3 +154,4 @@ - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar + - OS::TripleO::Services::Ptp diff --git a/roles/ControllerOpenstack.yaml b/roles/ControllerOpenstack.yaml index a3691e56ef..a778bd2cee 100644 --- a/roles/ControllerOpenstack.yaml +++ b/roles/ControllerOpenstack.yaml @@ -129,3 +129,4 @@ - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar + - OS::TripleO::Services::Ptp diff --git a/roles/HciCephAll.yaml b/roles/HciCephAll.yaml index 8ad7bd45df..4561577fbc 100644 --- a/roles/HciCephAll.yaml +++ b/roles/HciCephAll.yaml @@ -60,3 +60,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/HciCephFile.yaml b/roles/HciCephFile.yaml index ac1ef2c90c..928dc0fa1b 100644 --- a/roles/HciCephFile.yaml +++ b/roles/HciCephFile.yaml @@ -56,3 +56,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/HciCephMon.yaml b/roles/HciCephMon.yaml index d22b86ac27..bf1304ae87 100644 --- a/roles/HciCephMon.yaml +++ b/roles/HciCephMon.yaml @@ -57,3 +57,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/HciCephObject.yaml b/roles/HciCephObject.yaml index 7aef73384d..3820cdcc45 100644 --- a/roles/HciCephObject.yaml +++ b/roles/HciCephObject.yaml @@ -56,3 +56,4 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp diff --git a/roles/ObjectStorage.yaml b/roles/ObjectStorage.yaml index 9d5cf3ec25..d50e4de84e 100644 --- a/roles/ObjectStorage.yaml +++ b/roles/ObjectStorage.yaml @@ -42,3 +42,4 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp diff --git a/roles_data.yaml b/roles_data.yaml index 7fa5fa60be..03f25d4fe1 100644 --- a/roles_data.yaml +++ b/roles_data.yaml @@ -161,6 +161,7 @@ - OS::TripleO::Services::Tuned - OS::TripleO::Services::Vpp - OS::TripleO::Services::Zaqar + - OS::TripleO::Services::Ptp ############################################################################### # Role: Compute # ############################################################################### @@ -226,6 +227,7 @@ - OS::TripleO::Services::Vpp - OS::TripleO::Services::OVNController - OS::TripleO::Services::OVNMetadataAgent + - OS::TripleO::Services::Ptp ############################################################################### # Role: BlockStorage # ############################################################################### @@ -263,6 +265,7 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp ############################################################################### # Role: ObjectStorage # ############################################################################### @@ -307,6 +310,7 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp ############################################################################### # Role: CephStorage # ############################################################################### @@ -341,4 +345,5 @@ - OS::TripleO::Services::TripleoFirewall - OS::TripleO::Services::TripleoPackages - OS::TripleO::Services::Tuned + - OS::TripleO::Services::Ptp