【連載01】218.chrony(タイムサーバ)

<b><font color="#ff6633">当記事はケーススタディの連載となっています。目次は[【こちら】](http://qiita.com/CsFactoryitter/items/6b8308b96afafd61ce5f
)です。</font></b>
<b><font color="#ff6633">最新のソースコードは[【GitHub】](https://github.com/csfactorygihubblog001/blogansible)で公開中です。</font></b>
サーバの責務は<b>[こちら](http://qiita.com/CsFactoryitter/items/032cc339048e52ee3586)</b>で確認ください。

##1.NTP設定概要
サーバの時刻同期の為、NTPをインストールして設定する。

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/677e36be-fb37-3595-dd7e-148332eb2d8f.png)

##2.playbookファイルの相関

![image](https://qiita-image-store.s3.amazonaws.com/0/98085/0a3165a4-1fe9-bc85-858e-82b0a2f1404f.png)

##3.playbook(site.yml)
${ANSIBLE_HOME}/site.yml
[メインとなるplaybook(site.yml)](http://qiita.com/CsFactoryitter/items/3112c6d504d3b5a58011#3%E3%83%A1%E3%82%A4%E3%83%B3%E3%81%A8%E3%81%AA%E3%82%8Bplaybooksiteyml)参照

##4.NTP設定のplaybook(/operations/1041_chrony.yml)

${ANSIBLE_HOME}/operations/1041_chrony.yml

playbook中のコメントの補足に関しては「[6.補足説明](#6%E8%A3%9C%E8%B6%B3%E8%AA%AC%E6%98%8E)」を参照。

```yaml:
# ===================
# NTP(chrony)をインストール
# ===================
- hosts: all
  sudo: no
  remote_user: root
  vars_files:
    - ../vars/yum.yml
  tasks:
    # ===================
    # 【4.A】:すべてのサーバにNTP(chrony)をYUMにてインストール
    # ===================
    - name: YUMにてchronyをインストール
      yum: name={{rpm.package.chrony }} state=present　　

# ===================
# dbserv01,adminserv01はapserv01をタイムサーバにする
# ===================
- hosts: db_admin
  sudo: no
  remote_user: root
  tasks:
    # ===================
    # apserv01以外(dbserv01/adminserv01)はインターネット上の
    # タイムサーバ(0.centos.pool.ntp.org)を参照せず
    # apserv01をNTPとする。
    # ===================
    - name: chrony設定ファイルの書き換え(apserv01をタイムサーバとする)
    # 【4.B】:設定ファイルを置換する
      replace:
      dest=/etc/chrony.conf 
      regexp='^server 0.centos.pool.ntp.org iburst' 
      replace='server apserv01 iburst'

# ===================
# すべてのサーバのNTPサーバを再起動する
# ===================
- hosts: all
  sudo: no
  remote_user: root
  tasks:
    # ===================
    # NTPを再起動する
    # ===================
    - name: chronyを再起動する
    # 【4.C】:設定ファイルを置換する
      service: name=chronyd enabled=yes state=restarted
      ignore_errors: True
```

##5.変数設定のplaybook(/vars/yum.yml)

${ANSIBLE_HOME}/vars/yum.yml

```yaml:
  rpm:
    package:
      vim: vim
      openssl: openssl
      httpd: httpd
      wget: wget
      unzip: unzip
      gcc: gcc
      git: git
      rsync: rsync
      libffi_devel: libffi-devel.x86_64
      bind_utils: bind-utils
      net_tools: net-tools
      mod_ssl: mod_ssl
      manpage: man-pages-ja
      chrony: chrony  # 【5.A】yumリポジトリからインストールする名称
      openssl_devel: openssl-devel
      readline_devel: readline-devel
      zlib_devel: zlib-devel
      psmisc: psmisc
      nfs_utils: nfs-utils
      mlocate: mlocate
      mariadb: mariadb
      mariadb_server: mariadb-server
      epel: epel-release
      openvpn: openvpn
      expect: expect
      libselinux_python: libselinux-python
      easy_rsa: easy-rsa
```

##6.補足説明

コメント4.A～4.Cについて。

chrony.ymlではタイムサーバ(chrony)の設定を行う。
yumにてインストール後、設定ファイルを修正(置換)する
 
(1) 4.Aですべてのサーバに対し、yumを利用してNTPをインストールする。

>
yum: name={{rpm.package.chrony }} state=present

yumモジュールを使用してchronyをインストールする。
<font color="#ff0000">{{rpm.package.chrony }}</font>は5.Aの"chrony"という文字列を取得する為の変数設定。
 
(2) 4.Bの部分でインストール直後のchronyの設定ファイルを文字列置換する。
「dbserv01」と「adminserv01」のみが当該設定対象。

>
replace:
dest=/etc/chrony.conf 
regexp='^server 0.centos.pool.ntp.org iburst' 
replace='server apserv01 iburst'

/etc/chrony.confはデフォルトで[server 0.centos.pool.ntp.org]サーバに接続しに行く。
「dbserv01」と「adminserv01」は直接インターネットに触れる必要がない。
「apserv01」はインターネットからの参照/インターネットへの参照を行う為、当該サーバのみが[server 0.centos.pool.ntp.org]に時刻同期を行い、「dbserv01」と「adminserv01」は「apserv01」への時刻同期をする設定にしたいと思う。

|設定名|内容|
|:------|:------|
|dest|置換対象のファイル名|
|regexp|正規表現にて置換する対象部分を探す|
|replace|置換する文字列です|

(3) 4.Cではサービスを再起動する。

>
service: name=chronyd enabled=yes state=restarted
ignore_errors: True
 
すべてのサービスが対象となる。
サービス名chronydを自動起動(enable)設定にして再起動する。

>
systemctld enable chronyd 
systemctld restart chrony

と同じになる。
ignore_errorsはエラーが発生しても無視する。

次回は「219.アパッチのインストール・配置」について。

<b><font color="#ff6633">連載の目次は[【こちら】](http://qiita.com/CsFactoryitter/items/6b8308b96afafd61ce5f)です。</font></b>