NTP-Konfiguration mit SUSE® Rancher Prime: OS Manager

Übersicht

Der standardmäßige OS-Kanal, der mit SUSE® Rancher Prime: OS Manager geliefert wird, bietet NTP-Unterstützung über systemd-timesyncd.

Diese Seite behandelt die Konfiguration von systemd-timesyncd mit den bereitgestellten SLE Micro-Images, die mit einigen standardmäßigen (Fallback-NTP-Servern) vorinstalliert sind: ([0-3].suse.pool.ntp.org).

Der einfachste Weg, einen bestimmten NTP-Server zu konfigurieren, besteht darin, eine Konfigurationsdatei im /etc/systemd/timesyncd.conf.d-Verzeichnis abzulegen. Das Verzeichnis und die Konfigurationsdatei sollten für den systemd-timesync-Benutzer zugänglich sein.

Einen statischen NTP-Server konfigurieren

Die NTP-Konfiguration kann über einen cloud-config-Snippet bereitgestellt werden, der zur MachineRegistration-Konfiguration hinzugefügt wird.

Wir müssen:

  • sicherstellen, dass das timesyncd.conf.d-Verzeichnis vom systemd-timesync-Benutzer gelesen werden kann

  • die benutzerdefinierte Konfigurationsdatei im timesyncd.conf.d-Verzeichnis schreiben

  • den systemd-timesyncd-Dienst neu starten, um die neue Konfiguration zu verwenden

Als Beispiel sehen wir uns an, wie man ntp.ripe.net als primären NTP-Server konfiguriert (Zeilen 6-14):

config:
  cloud-config:
    users:
      - name: root
        passwd: root
    write_files:
      - content: |
          [Time]
          NTP=ntp.ripe.net
        path: /etc/systemd/timesyncd.conf.d/custom-ntp.conf
        permissions: 644
    runcmd:
      - chmod 755 /etc/systemd/timesyncd.conf.d
      - systemctl restart systemd-timesyncd
  elemental:
    install:
      device: /dev/vda
      reboot: true
machineInventoryLabels:
  element: fire

NTP über DHCP konfigurieren

Um den NTP-Server über die NTP-DHCP-Option aus dem Netzwerk zu erhalten, benötigen wir ein NetworkManager-Dispatcher-Skript, um den systemd-timesync-Dienst bei Bedarf dynamisch neu zu konfigurieren.

Wir müssen sowohl:
* das Dispatcher-Skript bereitstellen, das die systemd-timesyncd-Konfigurationsdateien erstellt und löscht
* den NetworkManager-Dispatcher-Dienst aktivieren

Siehe Zeilen 6-34 im folgenden Beispiel der MachineRegistration-Konfiguration:

config:
  cloud-config:
    users:
      - name: root
        passwd: root
    write_files:
      - content: |
          #! /usr/bin/bash

          [ -n "$CONNECTION_UUID" ] || exit

          INTERFACE=$1
          ACTION=$2

          case $ACTION in
              up | dhcp4-change | dhcp6-change)
                  [ -n "$DHCP4_NTP_SERVERS" ] || exit
                  mkdir -p /etc/systemd/timesyncd.conf.d/
                  cat<<EOF > /etc/systemd/timesyncd.conf.d/$CONNECTION_UUID.conf
          [Time]
          NTP=$DHCP4_NTP_SERVERS
          RootDistanceMaxSec=15
          EOF
                  systemctl restart systemd-timesyncd
                  ;;
              down)
                  rm -f /etc/systemd/timesyncd.conf.d/$CONNECTION_UUID.conf
                  systemctl restart systemd-timesyncd
                  ;;
          esac
        path: /etc/NetworkManager/dispatcher.d/10-update-timesyncd
        permissions: 700
    runcmd:
      - systemctl enable NetworkManager-dispatcher
  elemental:
    install:
      device: /dev/vda
      reboot: true
machineInventoryLabels:
  element: fire