私は多数の 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 がありません。
さらに進むには、グローバル chrony 構成 (chrony.conf) をすべてのホストにコピーし、戻りコードが 0 でない場合は、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
これが役に立つことを願っています。
乾杯