heat_template_version: rocky description: > NTP service deployment using puppet, this YAML file creates the interface between the HOT template and the puppet manifest that actually installs and configure NTP. 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 NtpServer: default: ['0.pool.ntp.org', '1.pool.ntp.org', '2.pool.ntp.org', '3.pool.ntp.org'] description: NTP servers list. Defaulted to a set of pool.ntp.org servers in order to have a sane default for Pacemaker deployments when not configuring this parameter by default. type: comma_delimited_list NtpIburstEnable: default: true description: Specifies whether to enable the iburst option for every NTP peer. If iburst is enabled, when the ntp server is unreachable ntp will send a burst of eight packages instead of one. This is designed to speed up the initial syncrhonization. type: boolean MaxPoll: description: Specify maximum poll interval of upstream servers for NTP messages, in seconds to the power of two. The maximum poll interval defaults to 10 (1,024 s). Allowed values are 4 to 17. type: number default: 10 constraints: - range: { min: 4, max: 17 } MinPoll: description: Specify minimum poll interval of upstream servers for NTP messages, in seconds to the power of two. The minimum poll interval defaults to 6 (64 s). Allowed values are 4 to 17. type: number default: 6 constraints: - range: { min: 4, max: 17 } EnablePackageInstall: default: 'false' description: Set to true to enable package installation at deploy time type: boolean outputs: role_data: description: Role ntp using composable services. value: service_name: ntp config_settings: ntp::servers: {get_param: NtpServer} ntp::iburst_enable: {get_param: NtpIburstEnable} ntp::maxpoll:: {get_param: MaxPoll} ntp::minpoll:: {get_param: MinPoll} tripleo::ntp::firewall_rules: '105 ntp': dport: 123 proto: udp step_config: | include ::tripleo::profile::base::time::ntp host_prep_tasks: - name: Populate service facts (ntp) service_facts: # needed to make yaml happy - name: Disable chronyd before configuring NTP service: name: chronyd state: stopped enabled: no when: "'chronyd.service' in ansible_facts.services" - name: Disable chrony-wait before configuring NTP service: name: chrony-wait state: stopped enabled: no when: "'chrony-wait.service' in ansible_facts.services" - name: NTP settings set_fact: ntp_servers: {get_param: NtpServer} ntp_install_packages: {get_param: EnablePackageInstall} - block: - name: Install ntpdate package: name: ntpdate state: present when: ntp_install_packages|bool - name: Ensure system is NTP time synced command: ntpdate -u {{ ntp_servers | join(" ") }} when: ntp_servers