Help us understand the problem. What is going on with this article?

【連載01】211.NFSをインストールし管理サーバ(adminserv01)とAPサーバ(apserv01)・DBサーバ(dbserv01)から接続する

More than 3 years have passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。
最新のソースコードは【GitHub】で公開中です。
サーバの責務はこちらで確認ください。

1.NFS設定概要

NFSサーバとクライアントをインストールする。

今回は必要な資材(yumではインストールしないtomcat、jenkis、selenium等)を一旦「adminserv01」にコピーし、「dbserv01」や「apserv01」は「adminserv01」をマウントすることによりファイルを取得する形式にする。

image

2.playbookファイルの相関

image

3.playbook(site.yml)

${ANSIBLE_HOME}/site.yml
メインとなるplaybook(site.yml)参照

4.NFSサーバ設定のplaybook(/operations/0081_nfs.yml)

${ANSIBLE_HOME}/operations/0081_nfs.yml

playbook中のコメントの補足に関しては「6.補足説明」を参照。

# ===================
# NFSサーバとNFSクライアント設定(nfs.yml)
# ===================
- hosts: adminserv01
  sudo: no
  remote_user: root
  vars_files:
    - ../vars/enviroment.yml
  tasks:

# ===================
# NFS用設定ファイルを指定場所(/etc/exports)に配置する
# exportsの#EXP_NETWORK文字列を置換する(環境依存部分)
# ===================
    - name: NFS設定ファイルはexportsを指定場所に配置(ファイルは常に再配置)
      shell: cp /var/opt/data/nfs/nfs/settings/exports /etc/exports  #【4.A:NFSサーバへの許可をするネットワークを設定を記述したexportsファイルの配置】

    - name: "許可するネットワークセグメントを置換する(#EXP_NETWORKを指定値に置換する)"
      replace: dest=/etc/exports regexp="#EXP_NETWORK" replace="{{nfs.exportnetwork}}"  #【4.B:ネットワークは環境依存する為(本番と開発では違う)外部変数化した文字列で置換】
    - name: "rcpbindとnfs-serverをRestartする"
      service: name=rpcbind state=restarted enabled=yes  #【4.C:NFSサーバとrcpbindサービスを起動】
    - service: name=nfs-server state=restarted enabled=yes
- hosts: ap_db
  sudo: no
  remote_user: root
  tasks:
    # ========================================================
    # マウント先が削除されて参照ができなくなってるいる状態
    # ========================================================
    - shell: ls /var/opt/data/nfs
      register: mounted_err
      ignore_errors: true
    # ========================================================
    # すべてのサーバに
    # /var/opt/data/nfsディレクトリをrootユーザー755で作成する。
    # 当該フォルダにはインストーラや設定ファイルなどをコピーする。
    # 後ほどNFSサーバを導入し当該ディレクトにファイルをコピーしたのち
    # 資源配布を行うようにする
    # ========================================================
    - shell: umount /var/opt/data/nfs
      when: mounted_err.rc == 2
# ===================
# apserv01へ/etc/fstabにadminserv01へのマウント指定
# ===================
- hosts: apserv01
  sudo: no
  remote_user: root
  tasks:
    - name: "(apserv01)rcpbindを使用可能にし、/etc/fstabにadminserv01へのマウント設定"
      service: name=rpcbind state=started enabled=yes
    - mount: name=/var/opt/data/nfs src=adminserv01:/var/opt/data/nfs  fstype=nfs state=mounted  #【4.D:常時接続状態でかつMount状態(/etc/fstabに記述)】

# ===================
# apserv01へ/etc/fstabにadminserv01へのマウント指定
# ===================
- hosts: dbserv01
  sudo: no
  remote_user: root
  tasks:
    - name: "(apserv01)rcpbindを使用可能にし、/etc/fstabにadminserv01へのマウント設定"
      service: name=rpcbind state=started enabled=yes
    - mount: name=/var/opt/data/nfs src=adminserv01:/var/opt/data/nfs  fstype=nfs  state=mounted

5.変数設定playbook(/vars/enviroment.yml)

nfs:
exportnetwork: 192.168.134.0

6.補足説明

4.NFSサーバ設定のplaybook(/operations/0081_nfs.yml)内のコメント4.A~4.Dについて。

  • 4.A:NFSサーバへの許可をするネットワーク設定を記述したexportsファイルの配置

shell: cp /var/opt/data/nfs/nfs/settings/exports /etc/exports

NFSサーバに接続許可するネットワークを記述する。

  • 4.B:ネットワークは環境依存する為(本番と開発では違う)外部変数化した文字列で置換

exportsファイルの内容:

/var/opt/data/nfs #EXP_NETWORK/255.255.255.0(rw,no_root_squash)

となっている。
#EXP_NETWORKの部分を置換する為にreplaceモジュールを使用して指定した文字に一致した部分を置換する。

replace: dest=/etc/exports regexp="#EXP_NETWORK" replace="{{nfs.exportnetwork}}"

replaceモジュール
名前 説明 補足
dest 対象のファイルを指定
regexp 正規表現で対象ファイルより置換対象文字列を探す
replace 置換する文字列を記述

{{}}で括られた位置は5.変数設定で設定した値が設定される。

  • 4.C:NFSサーバとrcpbindサービスを起動 NFSサーバとrcpbindサービスを起動し、NFSサーバとして起動する。

service: name=rpcbind state=restarted enabled=yes
 service: name=nfs-server state=restarted enabled=yes

serviceモジュール

デーモンを起動する
CentOS7でのservicectl、CentOS6でのinit.d。

名前 説明 補足
enabled true(自動起動する状態)
false(自動起動しない状態)
例:
systemctl enable nfs-server
/etc/init.d/nfs-server
と同様
state started(起動状態)
restart(再起動)
restarted(再起動)
reloaded(再読み込み)
例:
systemctl start nfs-server
/etc/init.d/nfs-server start
と同様

7.補足の補足(注意)

NFSを常時接続したい場合、OS起動時に/etc/fstabを参照し、NFSサーバにマウントしにいくことになる。
今回の場合、「adminserv01」がNFSサーバとなり、「apserv01」(APサーバ)と「dbserv01」(DBサーバ)はクライアントとして起動時に接続を試みる。
今回の環境はVagrantを使用していますが、起動順は「apserv01」、「dbserv01」、「adminserv01」となっている為、「apserv01」と「dbserv01」の起動は「adminserv01」を探し、あきらめるまで約1分半程度かかる。
NFSを導入する場合は起動順を意識してVagrantfileはNFSサーバが先に起動する設定にしておく方がいいかと思われる。


次回は「211.環境変数を設定する」について。

連載の目次は【こちら】です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away