Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:ntp [21.02.2024 19:12. ] – [Chrony] djangolinux:ntp [21.03.2024 08:41. ] (aktuell) – [Orchestrierung - Installation und Konfiguration des chronyd mit Hilfe von Ansible] Typofixing django
Zeile 1: Zeile 1:
 +{{htmlmetatags>metatag-robots=() 
 +metatag-keywords=(Ansible,Arch Linux,ntp, chrony, timeserver,stratum,chronyc,chronyd) 
 +metatag-description=(NTP-Zeitserver mit chrony unter Arch Linux einrichten und nutzen)
 +}}
 ====== NTP-Zeitserver mit chrony unter Linux einrichten und nutzen ====== ====== NTP-Zeitserver mit chrony unter Linux einrichten und nutzen ======
 {{:linux:hourglass.png?nolink&100 |Bild: stilisierte Sanduhr}} Basis für eine zuverlässige Kommunikation zwischen netzwerkbasierten Diensten und Servern ist unter anderem eine exakte Zeitmessung. Nur so kann gewährleistet werden das Systemkomponenten wie z.B. systemd-Timer und Cronjobs zur richtigen Zeit gestartet werden und laufen. Einzelne Systeme können mit Hilfe des **N**etwork **T**ime **P**rotocol kurz **NTP** ihre Systemzeiten mit einem zentralen Zeitserver oder einem Pool von Servern zu synchronisieren. NTP wurde 1985 von David L. Mills entwickelt und wurde als [[https://tools.ietf.org/html/rfc958|RFC 958]] definiert um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit über das verbindungslose Protokolls **UDP** zu ermöglichen und bekam von der Internet Assigned Numbers Authority den UDP-Ports **123** zugewiesen. Das **RFC958** wurde in den letzten Jahren mehrfach überarbeitet und ergänzt und wurde letztmalig mit **[[https://www.rfc-editor.org/rfc/rfc9109|RFC 9109 - Network Time Protocol Version 4: Port Randomization]]** ergänzt. {{:linux:hourglass.png?nolink&100 |Bild: stilisierte Sanduhr}} Basis für eine zuverlässige Kommunikation zwischen netzwerkbasierten Diensten und Servern ist unter anderem eine exakte Zeitmessung. Nur so kann gewährleistet werden das Systemkomponenten wie z.B. systemd-Timer und Cronjobs zur richtigen Zeit gestartet werden und laufen. Einzelne Systeme können mit Hilfe des **N**etwork **T**ime **P**rotocol kurz **NTP** ihre Systemzeiten mit einem zentralen Zeitserver oder einem Pool von Servern zu synchronisieren. NTP wurde 1985 von David L. Mills entwickelt und wurde als [[https://tools.ietf.org/html/rfc958|RFC 958]] definiert um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit über das verbindungslose Protokolls **UDP** zu ermöglichen und bekam von der Internet Assigned Numbers Authority den UDP-Ports **123** zugewiesen. Das **RFC958** wurde in den letzten Jahren mehrfach überarbeitet und ergänzt und wurde letztmalig mit **[[https://www.rfc-editor.org/rfc/rfc9109|RFC 9109 - Network Time Protocol Version 4: Port Randomization]]** ergänzt.
Zeile 26: Zeile 30:
 ==== Chrony unter Arch Linux installieren ==== ==== Chrony unter Arch Linux installieren ====
 Bei der Installation des chrony-Paketes verwenden wir unter **[[https://archlinux.org/|Arch Linux]]** den Paketmanager **''pacman''**. Bei der Installation des chrony-Paketes verwenden wir unter **[[https://archlinux.org/|Arch Linux]]** den Paketmanager **''pacman''**.
-  - Als User: <code> $ sudo pacman -S chrony -y </code> +  - Als User: <code> $ sudo pacman -S chrony</code> 
-  - Als Nutzer mit Root-Rechten entsprechend: <code> $ sudo pacman -S chrony -y </code>+  - Als Nutzer mit Root-Rechten entsprechend: <code> pacman -S chrony</code>
  
 ===== Paketinhalt ===== ===== Paketinhalt =====
Zeile 1774: Zeile 1778:
 ++++ ++++
 ===== Dokumentation ===== ===== Dokumentation =====
-Eine ausführliche Onlinedokumentation des Chrony Projekts findet sich auf der entsprechnden Projektseite → https://chrony-project.org/documentation.html Bei der Installation des aktuellen chrony-Paketes z.B. unter Arch Linux finden sich im Verzeichnis **''/usr/share/doc/chrony/''** auch entsprechende FAQs, READMEs, NEWS und Beispiele.+Eine ausführliche Onlinedokumentation des Chrony Projekts findet sich auf der entsprechenden Projektseite → https://chrony-project.org/documentation.html Bei der Installation des aktuellen chrony-Paketes z.B. unter Arch Linux finden sich im Verzeichnis **''/usr/share/doc/chrony/''** auch entsprechende FAQs, READMEs, NEWS und Beispiele.
    # tree /usr/share/doc/chrony/    # tree /usr/share/doc/chrony/
 <code>/usr/share/doc/chrony// <code>/usr/share/doc/chrony//
Zeile 4584: Zeile 4588:
  
 # Django : 2024-02-18 # Django : 2024-02-18
-server pool.ntp.org iburst+pool pool.ntp.org iburst
  
 ####################################################################### #######################################################################
Zeile 4907: Zeile 4911:
 Die relevanten KOnfigurationsoptionen können wir mit Hilfe von **''grep''** uns auch gerafft anzeigen lassen. Die relevanten KOnfigurationsoptionen können wir mit Hilfe von **''grep''** uns auch gerafft anzeigen lassen.
    # grep -Ev '(^%|^$|^#|^!|^;)' /etc/chrony.conf    # grep -Ev '(^%|^$|^#|^!|^;)' /etc/chrony.conf
-<code>server pool.ntp.org iburst+<code>pool pool.ntp.org iburst
 driftfile /var/lib/chrony/drift driftfile /var/lib/chrony/drift
 ntsdumpdir /var/lib/chrony ntsdumpdir /var/lib/chrony
Zeile 5184: Zeile 5188:
 MS Name/IP address         Stratum Poll Reach LastRx Last sample                MS Name/IP address         Stratum Poll Reach LastRx Last sample               
 =============================================================================== ===============================================================================
-^* defiant.tlercher.de            10   377    96    +59us[ +988us] +/-   10ms</code>+^+ time.cnetm.de                   6   377       +755us[ +755us] +/-   17ms 
 +^- frank.askja.de                2     377       -166us[ -166us] +/-   59ms 
 +^* ntp1.noris.net                2     377    72   -154us[ -125us] +/-   12ms 
 +^+ sv1.ggsrv.de                  2     377       +284us[ +284us] +/-   15ms 
 +</code>
  
 Dieses Beispiel zeigt die Abfrage auf unserem zentralen NTP-Server, den wir gerade eingerichtet haben. Nachfolgendes Beispiel zeigt einen Host, der wiederum unseren eigenen zentralen NTP-Server als Quelle benutzt. Dieses Beispiel zeigt die Abfrage auf unserem zentralen NTP-Server, den wir gerade eingerichtet haben. Nachfolgendes Beispiel zeigt einen Host, der wiederum unseren eigenen zentralen NTP-Server als Quelle benutzt.
Zeile 5238: Zeile 5246:
  
    chronyc> sources -v    chronyc> sources -v
-<code>  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.+<code> 
 +  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
  / .- Source state '*' = current best, '+' = combined, '-' = not combined,  / .- Source state '*' = current best, '+' = combined, '-' = not combined,
 | /             'x' = may be in error, '~' = too variable, '?' = unusable. | /             'x' = may be in error, '~' = too variable, '?' = unusable.
Zeile 5248: Zeile 5257:
 MS Name/IP address         Stratum Poll Reach LastRx Last sample                MS Name/IP address         Stratum Poll Reach LastRx Last sample               
 =============================================================================== ===============================================================================
-^* defiant.tlercher.de            10   377   246    +59us[ +988us] +/-   10ms+^+ time.cnetm.de                   6   377     7   +755us[ +755us] +/-   17ms 
 +^- frank.askja.de                2     377       -166us[ -166us] +/-   59ms 
 +^* ntp1.noris.net                2     377    72   -154us[ -125us] +/-   12ms 
 +^+ sv1.ggsrv.de                  2     377       +284us[ +284us] +/-   15ms
 </code> </code>
  
Zeile 5257: Zeile 5269:
 <code>Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev <code>Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
 ============================================================================== ==============================================================================
-defiant.tlercher.de         6     86m     +0.279      0.359    +87us   188us</code>+time.cnetm.de              16  11   782     -0.042      1.299    -35us   292us 
 +frank.askja.de             16     783     +0.281      0.379   +169us    99us 
 +ntp1.noris.net              6     452     -0.529      0.977   -304us    43us 
 +sv1.ggsrv.de               14     784     +0.211      0.264   +434us    70us</code>
  
 Mit der Option **''-v''** erhalten wir eine Kurzbeschreibung der angezeigten Werte.  Mit der Option **''-v''** erhalten wir eine Kurzbeschreibung der angezeigten Werte. 
Zeile 5272: Zeile 5287:
 Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
 ============================================================================== ==============================================================================
-defiant.tlercher.de         6     86m     +0.279      0.359    +95us   188us+time.cnetm.de              16  11   782     -0.042      1.299    -37us   292us 
 +frank.askja.de             16     783     +0.281      0.379   +178us    99us 
 +ntp1.noris.net              6     452     -0.529      0.977   -320us    43us 
 +sv1.ggsrv.de               14     784     +0.211      0.264   +440us    70us
 </code> </code>
  
Zeile 5318: Zeile 5336:
    # chronyc tracking    # chronyc tracking
  
-<code>Reference ID    : C3C98961 (defiant.tlercher.de)+<code>Reference ID    : 3E800112 (ntp1.noris.net)
 Stratum         : 3 Stratum         : 3
-Ref time (UTC)  : Wed Feb 21 17:44:33 2024 +Ref time (UTC)  : Thu Feb 22 12:24:14 2024 
-System time     : 0.000000083 seconds slow of NTP time +System time     : 0.000030264 seconds slow of NTP time 
-Last offset     : +0.000929279 seconds +Last offset     : +0.000049906 seconds 
-RMS offset      : 0.000310979 seconds +RMS offset      : 0.000355495 seconds 
-Frequency       : 23.866 ppm fast +Frequency       : 23.667 ppm fast 
-Residual freq   : +0.279 ppm +Residual freq   : +0.017 ppm 
-Skew            : 0.179 ppm +Skew            : 0.322 ppm 
-Root delay      : 0.019519085 seconds +Root delay      : 0.016084936 seconds 
-Root dispersion : 0.001197367 seconds +Root dispersion : 0.002525240 seconds 
-Update interval : 1025.seconds+Update interval : 64.seconds
 Leap status     : Normal</code> Leap status     : Normal</code>
  
Zeile 5388: Zeile 5406:
  
 ===== Orchestrierung - Installation und Konfiguration des chronyd mit Hilfe von Ansible ===== ===== Orchestrierung - Installation und Konfiguration des chronyd mit Hilfe von Ansible =====
-Natürlich wird man im Jahr 2024 nicht mehr ernsthaft, manuell Server aufsetzen und betreiben wollen. Vielmehr wird amn auf ein Orchestrierungswerkzeug wie z.B. **[[linux:ansible:start|Ansible]]** zurückgreifen.+Natürlich wird man im Jahr 2024 nicht mehr ernsthaft, manuell Server aufsetzen und betreiben wollen. Vielmehr wird man auf ein Orchestrierungswerkzeug wie z.B. **[[linux:ansible:start|Ansible]]** zurückgreifen.
  
 Wir werden uns nun nachfolgend sowohl die Client- wie auch die Server-Installation und -konfiguration genauer betrachten.  Wir werden uns nun nachfolgend sowohl die Client- wie auch die Server-Installation und -konfiguration genauer betrachten. 
Zeile 5486: Zeile 5504:
   - from: 'pool 2.arch.pool.ntp.org iburst'   - from: 'pool 2.arch.pool.ntp.org iburst'
     to  : |     to  : |
-           pool fd00::3:10:0:0:110      iburst +           server fd00::3:10:0:0:110      iburst 
-           pool 2003:a:e0d:7603:10::110 iburst +           server 2003:a:e0d:7603:10::110 iburst 
-           pool 10.0.0.110              iburst+           server 10.0.0.110              iburst
   - from: '! mailonchange wibble@example.net 0.5'   - from: '! mailonchange wibble@example.net 0.5'
     to  : mailonchange django@nausch.org 0.5     to  : mailonchange django@nausch.org 0.5
Zeile 5526: Zeile 5544:
 <font style="color: rgb(0, 0, 0)">[19:32:39]     ↳ chrony: Sofern bereits eine Backupdatei der chrony.conf existiert, diese rücksichern.</font> <font style="color: rgb(0, 0, 0)">[19:32:39]     ↳ chrony: Sofern bereits eine Backupdatei der chrony.conf existiert, diese rücksichern.</font>
 <font style="color: rgb(196, 160, 0)">↳  vml000210 | CHANGED | 661ms</font> <font style="color: rgb(196, 160, 0)">↳  vml000210 | CHANGED | 661ms</font>
 +<font style="color: rgb(0, 0, 0)">[19:32:40]     ↳ chrony: Backupdatei der chrony.conf Konfigurationsdatei erstellen.</font>
 <font style="color: rgb(43, 100, 164)">vml000210 | SKIPPED | 31ms</font> <font style="color: rgb(43, 100, 164)">vml000210 | SKIPPED | 31ms</font>
 <font style="color: rgb(0, 0, 0)">[19:32:40]     ↳ chrony: Änderungen an der chrony.conf mit blockinfile vornehmen.</font> <font style="color: rgb(0, 0, 0)">[19:32:40]     ↳ chrony: Änderungen an der chrony.conf mit blockinfile vornehmen.</font>
Zeile 5632: Zeile 5651:
 ... # YML Ende</file> ... # YML Ende</file>
 ++++ ++++
 +
 +== Firewalld - Paketfilter ==
 +Der eigentliche "große" Unterschied zwischen **Client-** und **Daemon-Mode** bei unserer chrony-Konfiguration ist der Umstand, dass wir auf unserem NTP-Server mit Hilfe des Firewall-Daemon **''firewalld''** noch die Verkehrsbeziehungen freischalten und den Port **''123/UDP''** für die betreffenden Netze freischalten werden.
 +
 +Diese Konfiguration lagern wir in einer eigenen Rolle aus, da diese ja bei Hosts, die den chronyd lediglich als Client nutzen nicht benötigt wird.
 +
 +Da sich die Installation und Konfiguration unseres **chrony** im Daemon-Modus lediglich bei den Konfigurationsparametern unterscheidet, können wir die Rolle aus dem vorherigen Beispiel einfach aufgreifen und wiederverwenden!
 +
 +Für die Konfiguration der Paketfilterregeln unseres NTP-Serversverwenden wir eine eigene Rolle **chrony_firewalld**, die wir dann in einem unserer Playbooks später einfach mit aufrufen werden. 
 +
 +   $ tree roles/chrony_firewalld/
 +
 +<code>roles/chrony_firewalld/
 +├── defaults
 +├── files
 +├── handlers
 +├── library
 +├── lookup_plugins
 +├── meta
 +├── module_utils
 +├── tasks
 +│   ├── config.yml
 +│   └── main.yml
 +├── templates
 +└── vars</code>
 +
 +Wie wir sehen ist die Rolle durchaus überschaubar, im Task **''main.yaml''** verweisen wir lediglich auf den eigentlichen Task **''chrony-.yml''**.
 +   $ vim ~/ansible/roles/chrony_firewalld/tasks/main.yml
 +
 +<file yaml roles/chrony_firewalld/tasks/main.yml>---                                     # Playbook/Rolle zur Konfiguration des firewalld                              
 +- include_tasks: config.yml             # firewall konfigurieren.
 +  tags: config                          #
 +...                                     # YML Ende
 +</file>
 +
 +Die eigentliche Konfiguration unserer notwendigen Firewall-Regeln erfolgt dann im Task **''config.yml''**.
 +   $ vim ~/ansible/roles/chrony_firewalld/tasks/config.yml
 +
 +<file yaml roles/chrony_firewalld/tasks/config.yml>-- # YAML Start
 +    # Firewall Daemon Regeln für chrony im Daemon-Mode konfigurieren.
 +
 +- name: "Port 123/UDP für IPv4 in der Zone IDMZ freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv4
 +      source address={{ guest_ip4_net_1 }}{{ guest_mask4_1 }}
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip4_1 }}/32
 +      accept
 +    zone: '{{ guest_zone_1 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Port 123/UDP für IPv6 (ULA) in der Zone IDMZ freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv6
 +      source address=fd00::/10
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip6_ls_1 }}{{ guest_mask6_1 }}
 +      accept
 +    zone: '{{ guest_zone_1 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Port 123/UDP für IPv6 (Global-Scope) in der Zone IDMZ freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv6
 +      source address={{ guest_ip6_net_1 }}{{ guest_mask6_1 }}
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip6_gs_1 }}{{ guest_mask6_1 }}
 +      accept
 +    zone: '{{ guest_zone_1 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Port 123/UDP für IPv4 in der Zone INTRA freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv4
 +      source address={{ guest_ip4_net_2 }}{{ guest_mask4_2 }}
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip4_2 }}/32
 +      accept
 +    zone: '{{ guest_zone_2 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Port 123/UDP für IPv6 (ULA) in der Zone INTRA freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv6
 +      source address=fd00::/10
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip6_ls_2 }}{{ guest_mask6_2 }}
 +      accept
 +    zone: '{{ guest_zone_2 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Port 123/UDP für IPv6 (Global-Scope) in der Zone INTRA freischalten."
 +  ansible.posix.firewalld:
 +    rich_rule: >
 +      rule family=ipv6
 +      source address={{ guest_ip6_net_2 }}{{ guest_mask6_2 }}
 +      port protocol="udp" port="123"
 +      destination address={{ guest_ip6_gs_2 }}{{ guest_mask6_2 }}
 +      accept
 +    zone: '{{ guest_zone_2 }}'
 +    immediate: true
 +    permanent: true
 +    state: enabled
 +
 +- name: "Regeländerungen auf vml000110 neu laden."
 +  ansible.builtin.service:
 +    name: firewalld
 +    state: reloaded
 +
 +... # YML Ende</file>
 +
 +=== Inventory -Variablendefinition ===
 +== chronyd==
 +Über die Variable **''chrony_config''** definieren wir nun im Inventory in den Host-Variablen alle Konfigurationsparameter, die wir bei unserem NTP-Server bzw. genauer gesagt bei unserem **chronyd** im **Server-Mode**setzen wollen.
 +
 +   $ vim inventories/production/host_vars/vml010110/chrony
 +<file yaml inventories/production/host_vars/vml010110/chrony>chrony_config:                                                                                              
 +  - from: 'pool 2.arch.pool.ntp.org iburst'
 +    to  : pool pool.ntp.org              iburst
 +  - from: '! dumpdir /var/lib/chrony'
 +    to  : dumpdir /var/lib/chrony
 +  - from: '# is unimportant.'
 +    to  : |
 +          # is unimportant.
 +          #
 +          # nausch.org :
 +          allow fd00::/10
 +          allow 10.0.0.0/24
 +          allow 2003:a:e0d:7603::/64
 +          allow 192.168.0.0/24
 +          allow 2003:a:e0d:7607::/64
 +  - from: '! local stratum 10'
 +    to  : local stratum 3
 +  - from: '! logchange 0.5'
 +    to  : logchange 0.5
 +  - from: '! mailonchange wibble@example.net 0.5'
 +    to  : mailonchange django@nausch.org 0.5
 +  - from: '! lock_all'
 +    to  : lock_all
 +</file>
 +
 +== firewalld==
 +Die Netzwerkspezifischen Definitionen für den Paketfilter holen wir uns aus den Netzwerk-Variablen unseres Hosts selbst.
 +
 +   $ vim inventories/production/host_vars/vml010110/kvm_vhost
 +<file yaml inventories/production/host_vars/vml010110/kvm_vhost>kvm_base:           "kvm-arch"                                                                              
 +host_dev:           "eth0"
 +host_ip:            '{{ guest_ip4_1 }}'
 +guest_name:         "vml000110"
 +guest_zone:         "idmz"
 +guest_domain:       "nausch.org"
 +guest_desc:         "Ansible-Test-VM III on new ArchLINUX"
 +guest_mate:         "true"
 +guest_ram:          8192
 +guest_cpu:          4
 +guest_imagesize:    30
 +guest_imagetype:    "qcow2"
 +guest_imagemode:    "compat=1.1"
 +guest_source:       "archlinux-2024.01.16-x86_64.iso"
 +guest_zone_1:       "idmz"
 +guest_bridge_1:     "br3"
 +guest_nic_1:        "eth0"
 +guest_direction_1:  "idmz_2_intra"
 +guest_mac_1:        "52:54:00:41:11:01"
 +guest_ip4_net_1:    "10.0.0.0"
 +guest_ip4_1:        "10.0.0.110"
 +guest_mask4_1:      "/24"
 +guest_gw4_1:        "10.0.0.210"
 +guest_dns4_1:       "217.237.151.142"
 +guest_ip6_ll_1:     "fe80::3:10:ff:fe00:110"
 +guest_ip6_ls_1:     "fd00::3:10:0:0:110"
 +guest_ip6_gs_1:     "2003:a:e0d:7603:10::110"
 +guest_ip6_net_1:    "2003:a:e0d:7603::"
 +guest_mask6_1:      "/64"
 +guest_gw6_1:        "fd00::3:10:0:0:210"
 +guest_dns6_1:       "2003:180:2:a000::53"
 +guest_zone_2:       "intra"
 +guest_bridge_2:     "br4"
 +guest_nic_2:        "eth1"
 +guest_direction_2:  "intra_2_idmz"
 +guest_mac_2:        "52:54:00:41:11:02"
 +guest_ip4_net_2:    "192.168.0.0"
 +guest_ip4_2:        "192.168.0.110"
 +guest_mask4_2:      "/24"
 +guest_gw4_2:        "10.0.0.210"
 +guest_dns4_2:       "217.237.151.142"
 +guest_ip6_ll_2:     "fe80::7:1921:68ff:fe00:110"
 +guest_ip6_ls_2:     "fd00::7:192:168:0:110"
 +guest_ip6_gs_2:     "2003:a:e0d:7607:1920:168:0:110"
 +guest_ip6_net_2:    "2003:a:e0d:7607::"
 +guest_mask6_2:      "/64"
 +guest_gw6_2:
 +guest_dns6_2:
 +</file>
 +
 +=== Playbook ===
 +Die definierte Rollen **chrony_client** und **chrony_firewalld** binden wird dann z.B. in das Playbook für die Installation und Konfiguration des **chrony**-Daemon im **Server-Mode** ein.
 +   # vim playbooks/arch_chrony_server.yml
 +<file yaml playbooks/arch_chrony_server.yml>---
 +# Ansible Playbook zum Konfigurieren des Chrony-Daemon im Server-Modus unter Arch-Linux.
 +# Aufruf via $ ansible-playbook playbooks/arch_chrony_client.yml :
 +#  $ ansible-playbook playbooks/arch_chrony_server.yml
 +# für einen Host aus der Hostgruppe DMZ.
 +
 +- name: arch_chrony_server.yml              # Name des Playbooks
 +  hosts: vml010110                          # Hostgruppe für die das Playbook gelten soll
 +
 +  roles:
 +    - role: chrony_client                   # Chrony-Client installieren und konfigurieren
 +      tags: chrony_client                   # Tag-Kennzeichnung der definierten Rolle
 +    - role: chrony_firewalld                # Paketfilter-Regeln für Chrony-Server anlegen
 +      tags: chrony_firewalld                # Tag-Kennzeichnung der definierten Rolle
 +...
 +</file>
 +
 +=== Playbooklauf ===
 +Die orchestrierte Variante der Installation und Konfiguration unseres **chrony**-Daemon im **Server-Mode** gestaltet sich ab sofort sehr einfach, brauchen wir doch lediglich die Konfigurationswerte im Inventory zu hinterlegen und zu pflegen und letztendlich das Playbook entsprechend aufzurufen:
 +   $ ansible-playbook playbooks/arch_chrony_server.yml
 +
 +<html><pre class="code">
 +<font style="color: rgb(0, 0, 0)">[23:10:06] Gathering Facts</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 1.79s</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:08] chrony_client : include_tasks</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 24ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:08]     ↳ chrony: Installation des chrony-Daemons.</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 1.34s</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:10]     ↳ chrony: Checken ob es bereits eine Backupdatei der chrony.conf gibt.</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 679ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:10]     ↳ chrony: Sofern bereits eine Backupdatei der chrony.conf existiert, diese rücksichern.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 626ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:11]     ↳ chrony: Backupdatei der chrony.conf Konfigurationsdatei erstellen.
 +<font style="color: rgb(43, 100, 164)">vml010110 | SKIPPED | 36ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:11]     ↳ chrony: Änderungen an der chrony.conf mit blockinfile vornehmen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 607ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:12]     ↳ chrony: Änderungen an der chrony.conf mit lineinfile vornehmen.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 3.97s</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:16]     ↳ chrony: Sicherstellen, dass der chrony Service reboot(-fest) startet.</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 984ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:17] chrony_firewalld : include_tasks</font>
 +<font style="color: rgb(25, 100, 5)">↳  vml010110 | SUCCESS | 36ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:17]     ↳ config: Port 123/UDP für IPv4 in der Zone IDMZ freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 848ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:17]     ↳ config: Port 123/UDP für IPv6 (ULA) in der Zone IDMZ freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 7276ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:18]     ↳ config: Port 123/UDP für IPv6 (Global-Scope) in der Zone IDMZ freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 697ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:19]     ↳ config: Port 123/UDP für IPv4 in der Zone INTRA freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 798ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:20]     ↳ config: Port 123/UDP für IPv6 (ULA) in der Zone INTRA freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 774ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:20]     ↳ config: Port 123/UDP für IPv6 (Global-Scope) in der Zone INTRA freischalten.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 804ms</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:21]     ↳ config: Regeländerungen auf vml000110 neu laden.</font>
 +<font style="color: rgb(196, 160, 0)">↳  vml010110 | CHANGED | 1.02s</font>
 +<font style="color: rgb(0, 0, 0)">[23:10:22] system</font>
 +<font style="color: rgb(25, 100, 5)">-- Play recap --</font>
 +<font style="color: rgb(196, 160, 0)">vml010110                  </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=16   </font><font style="color: rgb(196, 160, 0)">changed=10   </font>unreachable=0    failed=0    <font style="color: rgb(43, 100, 164)">skipped=1</font>    rescued=0    ignored=0</font>
 +</pre>
 +</html>
 +
 +====== Links ======
 +  * Zurück zu **[[wiki:start|Projekte und Themenkapitel]]**
 +  * Zurück zu **[[centos:start|LINUX Installation und Konfiguration]]**
 +  * Zurück zu **[[linux:ansible:start|Zurück zur "Ansible"-Übersicht"]]**
 +  * Zurück zur **[[http://dokuwiki.nausch.org/doku.php/|Startseite]]**
  
  • linux/ntp.1708542761.txt.gz
  • Zuletzt geändert: 21.02.2024 19:12.
  • von django