【연재 01】211.NFS를 인스톨 해 관리 서버(adminserv01)와 AP 서버(apserv01)·DB 서버(dbserv01)로부터 접속한다

【연재 01】211.NFS를 인스톨 해 관리 서버(adminserv01)와 AP 서버(apserv01)·DB 서버(dbserv01)로부터 접속한다

2022-10-06 last update

10 minutes reading ansible-playbook centos7 YAML Ansible nfs
본 기사는 사례 연구의 연재입니다. 목차는 【이쪽】입니다.
최신 소스 코드는 【GitHub】에서 게시 중입니다.
서버 책임은 여기에서 확인하십시오.

1. NFS 설정 개요



NFS 서버와 클라이언트를 설치합니다.

이번에는 필요한 자재(yum에서는 설치하지 않는 tomcat, jenkis, selenium 등)를 일단 「adminserv01」에 카피해, 「dbserv01」이나 「apserv01」은 「adminserv01」을 마운트하는 것으로 파일을 취득하는 형식으로 한다.



2.playbook 파일의 상관





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/environment.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
    서비스: 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. 환경 변수 설정」에 대해.

    시리즈의 목차는 【이쪽】입니다.