]> Frank Brehm's Git Trees - pixelpark/create-vmware-tpl.git/commitdiff
Adding and using snippets/tpl.400.chrony.sh
authorFrank Brehm <frank.brehm@pixelpark.com>
Fri, 19 Jun 2020 09:45:09 +0000 (11:45 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Fri, 19 Jun 2020 09:45:09 +0000 (11:45 +0200)
kickstart/template-centos8.ks
snippets/tpl.400.chrony.sh [new file with mode: 0644]

index 5218ade28a453197323bcd581c95e4d2a806c8b3..6902a616d4997e536b6779845c45fb3bb5d5bcca 100644 (file)
@@ -222,6 +222,11 @@ echo
 echo "Using snippet $legato_snippet"
 $SNIPPET($legato_snippet)
 
+#set $chrony_snippet = "per_status/" + $SYSTEM_STATUS + "/tpl.400.chrony.sh"
+echo
+echo "Using snippet $chrony_snippet"
+$SNIPPET($chrony_snippet)
+
 
 
 
diff --git a/snippets/tpl.400.chrony.sh b/snippets/tpl.400.chrony.sh
new file mode 100644 (file)
index 0000000..90b76a5
--- /dev/null
@@ -0,0 +1,159 @@
+## !/bin/bash
+#raw
+
+#-----------------------------------------------------------
+deinstall_ntp() {
+
+    if rpm -qa | grep '^ntp-[0-9]' >/dev/null ; then
+        :
+    else
+        echo
+        echo "ntp is not installed."
+        return 0
+    fi
+
+    echo
+    echo "${HASH_LINE}"
+    echo
+    log "Deinstalling ntp ..."
+    echo
+    echo "Stopping ntpd.service ..."
+    systemctl stop ntpd.service || return 5
+    echo
+    echo "Disabling ntpd.service ..."
+    systemctl disable ntpd.service || return 5
+    echo
+    echo "Deinstalling ntp ..."
+    yum remove -y ntp || return 5
+    return 0
+
+}
+
+#-----------------------------------------------------------
+install_chrony() {
+
+    if rpm -qa | grep '^chrony-[0-9]' >/dev/null ; then
+        echo
+        echo "chrony is already installed."
+        return 0
+    fi
+
+    echo
+    log "Installing Chrony ..."
+    if yum install -y chrony ; then
+        return 0
+    else
+        echo "[$(date)]: Could not install chrony" | tee -a "${ERROR_POINTER}"
+        return 6
+    fi
+    return 0
+
+}
+
+#-----------------------------------------------------------
+perform_chrony() {
+
+    if deinstall_ntp ; then
+        if install_chrony ; then
+            echo
+            echo "All packages okay."
+        else
+            return 6
+        fi
+    else
+        return 5
+    fi
+
+    echo
+    log "Configuring Chrony ..."
+
+    cat <<-EOF > /etc/chrony.conf
+       # Chrony configuration
+
+       # Using timeservers of pixelpark
+       server time01.pixelpark.com iburst
+       server time02.pixelpark.com iburst
+       server time03.pixelpark.com iburst
+
+       # Record the rate at which the system clock gains/losses time.
+       driftfile /var/lib/chrony/drift
+
+       # Allow the system clock to be stepped in the first three updates
+       # if its offset is larger than 1 second.
+       makestep 1.0 3
+
+       # Enable kernel synchronization of the real-time clock (RTC).
+       rtcsync
+
+       # Enable hardware timestamping on all interfaces that support it.
+       #hwtimestamp *
+
+       # Increase the minimum number of selectable sources required to adjust
+       # the system clock.
+       minsources 2
+
+       # Allow NTP client access from local network.
+       #allow 192.168.0.0/16
+       allow 10/8
+       allow 192.168/16
+       allow 172.16/12
+
+       # Serve time even if not synchronized to a time source.
+       local stratum 10
+
+       # Specify file containing keys for NTP authentication.
+       keyfile /etc/chrony.keys
+
+       # Specify directory for log files.
+       logdir /var/log/chrony
+
+       # Select which information is logged.
+       log measurements statistics tracking
+
+       EOF
+
+    mkdir -pv /var/log/chrony
+    chmod -v 0755 /var/log/chrony
+    chown -v chrony:chrony /var/log/chrony
+
+    echo
+    echo "Configuring chrony keys ..."
+    if [[ -f /etc/chrony.keys ]] ; then
+        echo "File /etc/chrony.keys is already existing"
+    else
+        cat <<-EOF > /etc/chrony.keys
+               # This is the chrony keys file. It is used for NTP authentication with
+               # symmetric keys. It should be readable only by root or the user to which
+               # chronyd is configured to switch to after start.
+
+               # Examples of valid keys:
+
+               #1 MD5 AVeryLongAndRandomPassword
+               #2 MD5 HEX:12114855C7931009B4049EF3EFC48A139C3F989F
+               #3 SHA1 HEX:B2159C05D6A219673A3B7E896B6DE07F6A440995
+
+               EOF
+    fi
+
+    echo "Removing of possibly existing keys ..."
+    sed -i -e '/^[1-9][0-9]*/d' /etc/chrony.keys
+
+    local method=
+    local keylen=256
+    local i=
+    local key=
+    for method in 'MD5' 'SHA1' 'SHA256' 'SHA512'; do
+        echo " * ${method}"
+        key=$( chronyc keygen $i "${method}" "${keylen}" )
+        echo "   $key"
+        echo "${key}" >> /etc/chrony.keys
+        i=$(( $i + 1 ))
+    done
+    echo >> /etc/chrony.keys
+
+}
+
+perform_chrony
+
+#end raw
+## vim: ts=4 et list