YAML
Ansible
nfs
centos7
ansible-playbook

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

More than 1 year has 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.環境変数を設定する」について。

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