ansible一括変更NTP構成

6022 ワード

ネットワークグループの学友は私にいくつかの仮想マシンのntp配置が間違っていることを知らせて、時間は同期することができなくて、ntpサーバーの配置を修正して時間を同期する必要があって、ansibleを使って処理し終わって、今総括します.
ntp同期方式
ntp同期時間には、ntpサーバに直接同期する方法と、自機のntpサービスを起動し、上司のntpサーバにタイミングよく同期する方法があります.
ntpdateを使用してcrontabと協力してサーバに同期する
[root@clientlinux ~]# ntpdate [-dv] [NTP IP/hostname]
     :
-d :       (debug) ,            。
-v :        。

[root@clientlinux ~]# ntpdate 192.168.100.254
28 Jul 17:19:33 ntpdate[3432]: step time server 192.168.100.254 offset -2428.396146 sec
#                (offset),             ,    ...
[root@clientlinux ~]# date; hwclock -r
   7  28 17:20:27 CST 2011
  2011 07 28  (  ) 18 19 26   -0.752303 seconds
#            ?  !   hwclock -w    BIOS      !

[root@clientlinux ~]# vim /etc/crontab
#       !
10 5 * * * root (/usr/sbin/ntpdate tock.stdtime.gov.tw && /sbin/hwclock -w) &> /dev/null

crontabを使用すると、毎日5:10 Linuxシステムで自動的にネットワーク校正が行われますよ!この方式の特徴は簡単ですが、NTPサーバーを起動しない場合にのみ適しています.NTPサーバは本来上位タイムサーバと時間の同期化を行うので、プリセットの場合、NTPサーバはntpdateを使用できません!すなわちntpdateとntpdは同時に有効にできない.
ntpサーバを起動し、上位サーバにローカルクロックを同期
本論文ではこの方法を用いた.
restrict 10.10.255.1
restrict 10.10.255.2

server 10.10.255.1  iburst minpoll 3 maxpoll 4 prefer
server 10.10.255.2  iburst minpoll 3 maxpoll 4 prefer

このうち10.10.255.1,10.10.255.2は,会社が提供する上位ntpサーバである.説明すると、server 10.10.255.1 iburst minpoll 3 maxpoll 4 preferは、ネイティブntpサーバの上位サーバを構成するためである.restrict 10.10.255.1は、サーバからホストへの権限を付与するためです.crontab方式に比べて、構成数秒で1回の同期が行われ、複数の上位サーバを構成できるなど、より高度な構成が使用できるため、この方式がより良いことは明らかです.
変更後にntpサービスを再起動し、service ntpd restart centos 7もsystemctl restart ntpdを使用できます.
ソリューション
もちろん一つ一つ変えることはできません.もちろんansible大殺器を使います.ntp_conf.yml
---
- hosts: xct9
  become: yes
  gather_facts: false
  max_fail_percentage: 50
  serial: "100%"
  vars:
        ntp_server_all: {
                'bj2b': {
                        "server1": "10.9.255.1",
                        "server2": "10.9.255.2"
                },
                'bj2c': {
                        "server1": "10.10.255.1",
                        "server2": "10.10.255.2"
                },
                'bj2d': {
                        "server1": "10.19.255.1",
                        "server2": "10.19.255.2"
                }
        }
        ntp_server1: "{{ ntp_server_all.bj2b.server1 }}"
        ntp_server2: "{{ ntp_server_all.bj2b.server2 }}"
  tasks:
  - name: set ntp restrict 1
    lineinfile:
        dest: /etc/ntp.conf
        regexp: '^restrict 10\.[0-9]{1,3}\.255\.1'
        line: restrict {{ ntp_server1}}
        #create: yes
        owner: root
        group: root

  - name: set ntp restrict 2
    lineinfile:
        dest: /etc/ntp.conf
        regexp: '^restrict 10\.[0-9]{1,3}\.255\.2'
        line: restrict {{ ntp_server2}}
        #create: yes
        owner: root
        group: root
  - name: set ntp server 1
    lineinfile:
        dest: /etc/ntp.conf
        #regexp: '^restrict 10\.[0-9]{1,3}\.255\.1'
        regexp: '^server 10\.[0-9]{1,3}\.255\.1 iburst minpoll 3 maxpoll 4 prefer'
        line: 'server {{ ntp_server1}}  iburst minpoll 3 maxpoll 4 prefer'
        #create: yes
        owner: root
        group: root

  - name: set ntp server 2
    lineinfile:
        dest: /etc/ntp.conf
        #regexp: '^restrict 10\.[0-9]{1,3}\.255\.2'
        regexp: '^server 10\.[0-9]{1,3}\.255\.2 iburst minpoll 3 maxpoll 4 prefer'
        line: 'server {{ ntp_server2}}  iburst minpoll 3 maxpoll 4 prefer'
        #create: yes
        owner: root
        group: root
  - name: restart ntpd
    command: service ntpd restart

サーバーがあるhostsとregionを変更すればいいだけです
ntpサーバ構成
サーバによる上位NTPサーバの設定
上位NTPサーバーの設定方法は以下の通りです.server [IP or hostname] [prefer]はserverの後端でIPあるいはホスト名を受け取ることができて、鳥の兄は個人的にIPを使って設定するのが好きです!そのperferが『优先使用』を表すサーバーについては~简単でしょう!
restrictによる権限制御の管理
ntp.confファイル内では『restrict』を利用して権限を管理することができ、このパラメータの設定方式は:restrict [ IP] mask [netmask_IP] [parameter] parameterのパラメータは主に次のとおりです.
ignore:すべてのタイプのNTPオンラインを拒否します.nomodify:クライアントはntpcとntpqの2つのプログラムを使用してサーバの時間パラメータを変更することはできませんが、クライアントはこのホストを通じてネットワークの校正を行うことができます.noquery:クライアントはntpq,ntpcなどの命令を使用して時間サーバをクエリーすることができず、NTPのネットワーク校正を提供しないことに等しい.notrap:trapというリモートイベントログイン(remote event logging)の機能は提供されません.notrust:認証されていないクライアントを拒否します.もしあなたがparameterの場所にパラメータを付けていなければ、これは「このIPやセグメントは制限されていない」という意味ですよ.一般的には、NTPの権限を閉じてから、ログイン可能なセグメントをもう1つ有効にすることができます.
ntpqを使用してクロック同期状態を表示する
[root@www ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*tock.stdtime.go 59.124.196.87    2 u   19  128  377   12.092   -0.953   0.942
+59-124-196-83.H 59.124.196.86    2 u    8  128  377   14.154    7.616   1.533
+59-124-196-84.H 59.124.196.86    2 u    2  128  377   14.524    4.354   1.079


このntpq-pは、現在のNTPと関連する上位NTPの状態をリストすることができ、上位のいくつかのフィールドの意味は、remote:つまりNTPホストのIPまたはホスト名ですね~注意一番左の記号が「*」であれば現在働いている上位NTPを表し、「+」であればオンラインもあります.また、次の更新時間を提供する候補として使用することができる.
refid:参考の前の階のNTPホストのアドレスst:stratum階層ですね!when:数秒前に時間同期化更新の動作をしたことがあります.Poll:次の更新は数秒後です.reach:既に上位NTPサーバに更新を要求した回数delay:ネットワーク転送中に遅延した時間,単位10^(-6)秒offset:時間補償の結果,単位と10^(-3)秒jitter:Linuxシステム時間とBIOSハードウェア時間の差時間,単位は10^(-6)秒である.
実はこの出力の結果は、時間が本当に正確だと教えてくれました.差はいずれも0.001秒以内なので、私たちの一般的な使用に合っています.また、あなたのBIOS時間とLinuxシステム時間の違いをチェックすることもできます./var/lib/ntp/driftというファイルの内容です.私たちのLinuxシステム時間とBIOSハードウェアクロックの差はどのくらいですか.単位は10^(-6)秒です!4分ほど速い機械を見つけました.同期した後、時間が直接同期しても悪くないのではなく、同期offsetの時間差が数ミリ秒減るのです.これは、実行中のプログラムに問題が発生しないようにするためです.そうしないと、タイミングなどのプログラムに問題が発生するに違いありません.
参考:
  • http://cn.linux.vbird.org/linux_server/0440ntp.php#server
  • http://blog.csdn.net/iloli/article/details/6431757