diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/ansible/shared.yml b/linux_os/guide/services/ntp/service_timesyncd_configured/ansible/shared.yml index c8fb4b6a1f7d..a18048032f20 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/ansible/shared.yml +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/ansible/shared.yml @@ -5,36 +5,15 @@ # disruption = low {{{ ansible_instantiate_variables("var_multiple_time_servers") }}} +{{% set timesyncd_conf_file = "/etc/systemd/timesyncd.conf.d/oscap-remedy.conf" %}} + - name: {{{ rule_title }}} - Set Primary NTP Servers ansible.builtin.set_fact: - preferred_ntp_servers: '{{ var_multiple_time_servers.split(",") | slice(2)| first | - join(",") }}' + preferred_ntp_servers: '{{ var_multiple_time_servers.split(",") | slice(2)| first | join(" ") }}' - name: {{{ rule_title }}} - Set Fallback NTP Servers ansible.builtin.set_fact: - fallback_ntp_servers: '{{ var_multiple_time_servers.split(",") | slice(2)| list | last | - join(",") }}' - -- name: {{{ rule_title }}} - Add missing / update wrong records for NTP servers - ansible.builtin.lineinfile: - {{% if "ubuntu" in product %}} - path: /etc/systemd/timesyncd.conf.d/oscap-remedy.conf - {{% else %}} - path: /etc/systemd/timesyncd.d/oscap-remedy.conf - {{% endif %}} - regexp: '^\s*NTP\s*=' - state: present - line: 'NTP={{ preferred_ntp_servers }}' - create: true + fallback_ntp_servers: '{{ var_multiple_time_servers.split(",") | slice(2)| list | last | join(" ") }}' -- name: {{{ rule_title }}} - Add missing / update wrong records for fallback servers - ansible.builtin.lineinfile: - {{% if "ubuntu" in product %}} - path: /etc/systemd/timesyncd.conf.d/oscap-remedy.conf - {{% else %}} - path: /etc/systemd/timesyncd.d/oscap-remedy.conf - {{% endif %}} - regexp: '^\s*FallbackNTP\s*=' - state: present - line: 'FallbackNTP={{ fallback_ntp_servers }}' - create: true +{{{ ansible_ini_file_set(timesyncd_conf_file, "Time", "NTP", "{{ preferred_ntp_servers }}") }}} +{{{ ansible_ini_file_set(timesyncd_conf_file, "Time", "FallbackNTP", "{{ fallback_ntp_servers }}") }}} diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/bash/shared.sh b/linux_os/guide/services/ntp/service_timesyncd_configured/bash/shared.sh index 970ae8d6bebb..e4d228f4dc8d 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/bash/shared.sh +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/bash/shared.sh @@ -7,16 +7,12 @@ {{{ bash_instantiate_variables("var_multiple_time_servers") }}} IFS=',' read -r -a time_servers_array <<< "$var_multiple_time_servers" preferred_ntp_servers_array=("${time_servers_array[@]:0:2}") -preferred_ntp_servers=$( echo "${preferred_ntp_servers_array[@]}"|sed -e 's/\s\+/,/g' ) +preferred_ntp_servers=$( echo "${preferred_ntp_servers_array[@]}" ) fallback_ntp_servers_array=("${time_servers_array[@]:2}") -fallback_ntp_servers=$( echo "${fallback_ntp_servers_array[@]}"|sed -e 's/\s\+/,/g' ) +fallback_ntp_servers=$( echo "${fallback_ntp_servers_array[@]}" ) + +IFS=" " mapfile -t current_cfg_arr < <(ls -1 /etc/systemd/timesyncd.conf.d/* 2>/dev/null) -IFS=" " mapfile -t current_cfg_arr < <(ls -1 /etc/systemd/timesyncd.d/* /etc/systemd/timesyncd.conf.d/* 2>/dev/null) -{{% if "ubuntu" in product %}} -config_file="/etc/systemd/timesyncd.conf.d/oscap-remedy.conf" -{{% else %}} -config_file="/etc/systemd/timesyncd.d/oscap-remedy.conf" -{{% endif %}} current_cfg_arr+=( "/etc/systemd/timesyncd.conf" ) # Comment existing NTP FallbackNTP settings for current_cfg in "${current_cfg_arr[@]}" @@ -24,20 +20,15 @@ do sed -i 's/^NTP/#&/g' "$current_cfg" sed -i 's/^FallbackNTP/#&/g' "$current_cfg" done -{{% if "ubuntu" in product %}} + +# Set primary fallback NTP servers in drop-in configuration +# Create /etc/systemd/timesyncd.conf.d if it doesn't exist if [ ! -d "/etc/systemd/timesyncd.conf.d" ] then mkdir /etc/systemd/timesyncd.conf.d fi -{{% else %}} -# Create /etc/systemd/timesyncd.d if it doesn't exist -if [ ! -d "/etc/systemd/timesyncd.d" ] -then - mkdir /etc/systemd/timesyncd.d -fi -{{% endif %}} -# Set primary fallback NTP servers in drop-in configuration -echo "NTP=$preferred_ntp_servers" >> "$config_file" -echo "FallbackNTP=$fallback_ntp_servers" >> "$config_file" +{{{ bash_ini_file_set("/etc/systemd/timesyncd.conf.d/oscap-remedy.conf", "Time", "NTP", "$preferred_ntp_servers", rule_id=rule_id) }}} +{{{ bash_ini_file_set("/etc/systemd/timesyncd.conf.d/oscap-remedy.conf", "Time", "FallbackNTP", "$fallback_ntp_servers", rule_id=rule_id) }}} + diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/oval/shared.xml b/linux_os/guide/services/ntp/service_timesyncd_configured/oval/shared.xml index 5eb597e21694..f9a61550f70c 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/oval/shared.xml +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/oval/shared.xml @@ -13,7 +13,7 @@ - ^[[:space:]]*(NTP|FallbackNTP)[[:space:]]*=[[:space:]]* + ^\s*\[Time\].*(?:\n\s*[^[\s].*)*\n^[[:space:]]*(NTP|FallbackNTP)[[:space:]]*=[[:space:]]* @@ -30,11 +30,7 @@ -{{% if "ubuntu" in product %}} /etc/systemd/timesyncd.conf.d -{{% else %}} - /etc/systemd/timesyncd.d -{{% endif %}} ^.*\.conf$ 1 diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/common.sh b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/common.sh index c8bb48ac9644..a5eac7ce56dc 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/common.sh +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/common.sh @@ -1,10 +1,5 @@ #!/bin/bash -{{% if "ubuntu" in product %}} mkdir -p /etc/systemd/timesyncd.conf.d/ echo "" > /etc/systemd/timesyncd.conf.d/oscap-remedy.conf -{{% else %}} -mkdir -p /etc/systemd/timesyncd.d/ -echo "" > /etc/systemd/timesyncd.d/oscap-remedy.conf -{{% endif %}} echo "" > /etc/systemd/timesyncd.conf diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/dropin_config.pass.sh b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/dropin_config.pass.sh index 8f4a9dccd87f..d28c2bcaba86 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/dropin_config.pass.sh +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/dropin_config.pass.sh @@ -3,14 +3,8 @@ # variables = var_multiple_time_servers=0.suse.pool.ntp.org,1.suse.pool.ntp.org,2.suse.pool.ntp.org,3.suse.pool.ntp.org source common.sh -{{% if "ubuntu" in product %}} cat </etc/systemd/timesyncd.conf.d/oscap-remedy.conf -NTP=0.suse.pool.ntp.org,1.suse.pool.ntp.org -FallbackNTP=2.suse.pool.ntp.org,3.suse.pool.ntp.org +[Time] +NTP=0.suse.pool.ntp.org 1.suse.pool.ntp.org +FallbackNTP=2.suse.pool.ntp.org 3.suse.pool.ntp.org EOF -{{% else %}} -cat </etc/systemd/timesyncd.d/oscap-remedy.conf -NTP=0.suse.pool.ntp.org,1.suse.pool.ntp.org -FallbackNTP=2.suse.pool.ntp.org,3.suse.pool.ntp.org -EOF -{{% endif %}} diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/missing_time.fail.sh b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/missing_time.fail.sh new file mode 100644 index 000000000000..1a5848d14248 --- /dev/null +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/missing_time.fail.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# packages = systemd +# variables = var_multiple_time_servers=0.suse.pool.ntp.org,1.suse.pool.ntp.org,2.suse.pool.ntp.org,3.suse.pool.ntp.org + +source common.sh +cat </etc/systemd/timesyncd.conf.d/oscap-remedy.conf +NTP=0.suse.pool.ntp.org 1.suse.pool.ntp.org +FallbackNTP=2.suse.pool.ntp.org 3.suse.pool.ntp.org +EOF diff --git a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/timesyncd_config.pass.sh b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/timesyncd_config.pass.sh index 88315ab860ab..26fda95f73c0 100644 --- a/linux_os/guide/services/ntp/service_timesyncd_configured/tests/timesyncd_config.pass.sh +++ b/linux_os/guide/services/ntp/service_timesyncd_configured/tests/timesyncd_config.pass.sh @@ -5,6 +5,7 @@ source common.sh cat </etc/systemd/timesyncd.conf -NTP=0.suse.pool.ntp.org,1.suse.pool.ntp.org -FallbackNTP=2.suse.pool.ntp.org,3.suse.pool.ntp.org +[Time] +NTP=0.suse.pool.ntp.org 1.suse.pool.ntp.org +FallbackNTP=2.suse.pool.ntp.org 3.suse.pool.ntp.org EOF