Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

config_file="{{{ chrony_conf_path }}}"

if ! grep -q '^[[:space:]]*\(server\|pool\)[[:space:]]\+[[:graph:]]\+' "$config_file" ; then
{{{ bash_ensure_there_are_servers_in_ntp_compatible_config_file("$config_file", "$var_multiple_time_servers") | indent(2) }}}
if [[ ! -f $config_file ]]; then
touch "$config_file"
fi

{{{ bash_ensure_there_are_servers_in_ntp_compatible_config_file("$config_file", "$var_multiple_time_servers") }}}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# packages = chrony
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux,multi_platform_ubuntu
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux

# Test: server directive in confdir .conf file
CONF_DIR="/etc/chrony/conf.d"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash
# packages = chrony
# platform = multi_platform_ubuntu
# variables = var_multiple_time_servers=0.pool.ntp.org,1.pool.ntp.org

rm -rf /etc/chrony/conf.d
rm -rf /etc/chrony/sources.d

echo "server 0xpool-ntp-org" > {{{ chrony_conf_path }}}
Comment thread
alanmcanonical marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# packages = chrony
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux,multi_platform_ubuntu
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux

# Test: Multiple sourcedir declarations, server in second directory
SOURCES_DIR1="/etc/chrony/sources1.d"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/bin/bash
# packages = chrony
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux,multi_platform_ubuntu
# platform = multi_platform_fedora,multi_platform_ol,multi_platform_rhel,multi_platform_almalinux

# Test: server directive in sourcedir .sources file
SOURCES_DIR="/etc/chrony/sources.d"
Expand Down
27 changes: 21 additions & 6 deletions shared/macros/10-bash.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -741,13 +741,28 @@ fi

#}}
{{%- macro bash_ensure_there_are_servers_in_ntp_compatible_config_file(config_file, servers_list) -%}}
if ! grep -q '#[[:space:]]*server' "{{{ config_file }}}" ; then
for server in $(echo "{{{ servers_list }}}" | tr ',' '\n') ; do
printf '\nserver %s' "$server" >> "{{{ config_file }}}"
done
else
sed -i 's/#[ \t]*server/server/g' "{{{ config_file }}}"
IFS="," read -r -a SERVERS <<< "{{{ servers_list }}}"

valid_pattern=""
for server in "${SERVERS[@]}"; do
escaped_server="${server//./\\.}"
if [ -z "$valid_pattern" ]; then
valid_pattern="${escaped_server}"
else
valid_pattern="${valid_pattern}|${escaped_server}"
fi
done

if [ -n "$valid_pattern" ]; then
sed -i -E "/^[[:space:]]*server[[:space:]]/ { /^[[:space:]]*server[[:space:]]+(${valid_pattern})([[:space:]]|$)/! s/^[[:space:]]*server/# server/ }" "{{{ config_file }}}"
fi

for server in "${SERVERS[@]}" ; do
escaped_server="${server//./\\.}"
if ! grep -q "^[[:space:]]*server[[:space:]]\+${escaped_server}\([[:space:]]\|$\)" "{{{ config_file }}}" ; then
printf '\nserver %s' "$server" >> "{{{ config_file }}}"
fi
done
{{{ bash_ensure_nl_at_eof(config_file) }}}
{{%- endmacro -%}}

Expand Down
Loading