我有一堆 rhel 伺服器,我必須確保所有伺服器都及時同步。他們都在運行 chronyd 服務。
我的問題是,是否有任何實用程式可以透過命令檢查這一點?有誰知道 ansible 模組可以做到這一點?我沒有找到。
我想要的只是以嚴格有效的方式檢查所有伺服器是否在同一時間運行。可能類似 ntpdate 的東西適合我。
先致謝!
答案1
檢查chrony是否與指令同步
您可以使用 chrony 特定指令來檢查 ntp 狀態。如果你想查看目前ntp伺服器使用的信息
chronyc tracking
顯示所有 ntp 伺服器
chronyc sources
欲了解更多信息,請參閱: fedora - 檢查 chrony 是否同步
與ansible結合
沒有ansible模組,但是還有另一種方法。
您應該仍然擁有也適用於 chrony 的 ntpstat 實用程式。返回碼提供有關 ntp 狀態的資訊。 0 表示時鐘同步,1 表示不同步,2 表示時鐘狀態不確定。看線上說明頁
你可以驗證一下
ntpstat
echo $?
如果您使用ansible命令模組來執行ntpstat,如果命令的回傳碼不為0,則預設會失敗。製作一個運行 ntpstat 指令的簡單劇本。
- name: Check if chrony is synchronized
command: ntpstat
運行所需主機組的劇本。所有失敗的主機都沒有同步的 ntp。
更進一步,如果回傳碼不為 0,您可以將全域 chrony 設定 (chrony.conf) 複製到所有主機,並使用 ansible 重新啟動 chronyd 服務。
- name: Check if chrony is synchronized
command: ntpstat
register: ntpstat_rc
ignore_errors: true
- name: Copy chrony configuration
copy:
src: <global chrony.conf on your ansible server>
dest: /etc/chrony.conf
backup: yes
when: ntpstat_rc.rc != 0
- name: Restart chrony service
systemd:
name: chronyd
state: restarted
when: ntpstat_rc.rc != 0
我希望這有幫助。
乾杯