【연재 01】204.yum에서 필요한 라이브러리/미들/소프트웨어를 인스톨 한다【Ansible yum 모듈】

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

1.yum에서의 설치 개요



yum을 사용하여 필요한 라이브러리/소프트웨어/미들웨어를 설치합니다.



2.playbook 파일의 상관





3.playbook(site.yml)



${ANSIBLE_HOME}/site.yml
메인이 되는 playbook(site.yml) 참조

4.yum 설치용 playbook



${ANSIBLE_HOME}/operations/0012_yum.yml

0012_yum.yml
# ===================
# yumにてパッケージをインストールする(yum.yml)
# =================== 

# ===================
# すべてのサーバにインストールするパッケージ
# 主にサーバ固有のミドルウェア以外のライブラリやソフトウェア
# をインストールする
# ===================
- hosts: all
  sudo: no
  remote_user: root
  tasks:
    - name: YUMインストール(全体)
      yum: name=firewalld state=present
    - yum: name={{rpm.package.vim }} state=present
    - yum: name={{rpm.package.openssl }} state=present
    - yum: name={{rpm.package.wget }} state=present
    - yum: name={{rpm.package.unzip }} state=present
    - yum: name={{rpm.package.gcc }} state=present
    - yum: name={{rpm.package.git }} state=present
    - yum: name={{rpm.package.rsync }} state=present
    - yum: name={{rpm.package.libffi_devel }} state=present
    - yum: name={{rpm.package.bind_utils }} state=present
    - yum: name={{rpm.package.net_tools }} state=present
    - yum: name={{rpm.package.manpage }} state=present
    - yum: name={{rpm.package.chrony }} state=present
    - yum: name={{rpm.package.openssl_devel }} state=present
    - yum: name={{rpm.package.readline_devel }} state=present
    - yum: name={{rpm.package.zlib_devel }} state=present
    - yum: name={{rpm.package.psmisc }} state=present
    - yum: name={{rpm.package.nfs_utils }} state=present
    - yum: name={{rpm.package.mlocate }} state=present
    - yum: name={{rpm.package.mariadb }} state=present
    - yum: name={{rpm.package.expect }} state=present
    - yum: name={{rpm.package.lsof }} state=present
    - yum: name={{rpm.package.python_passlib }} state=present

    # ===================
    #AnsibleにてSELinuxを実行するのに必要
    # ===================
    - yum: name={{rpm.package.libselinux_python }} state=present

# ===================
# アパッチをインストール
# java APサーバのTOMCATはyumではなく直接TOMCATのサイトからダウンロードした
# ものを使用する為ここではインストールしない
# ===================
- hosts: ap_admin
  sudo: no
  remote_user: root
  vars_files:
    - ../vars/yum.yml
  tasks:
    - name: YUMインストール(apserv01とadminserv0にアパッチをインストール)
      yum: name={{rpm.package.httpd }} state=present
    - yum: name={{rpm.package.mod_ssl }} state=present

# ===================
# mysql(mariadb-server)をインストール
# adminserv01にインストールするのは本番デプロイ前の確認用
# ===================
- hosts: db_admin
  sudo: no
  remote_user: root
  vars_files:
    - ../vars/yum.yml
  tasks:
    - name: YUMインストール(dbserv01とadminserv01にmysqlをインストール)
      yum: name={{rpm.package.mariadb_server }} state=present

# ===================
# adminserv01のみでyumからインストールするのはopenvpnのみ
# SelniumやTomcatは本家サイトより直接ダウンロードする
# ===================
- hosts: adminserv01
  sudo: no
  remote_user: root
  vars_files:
    - ../vars/yum.yml
  tasks:
    # ===================
    # ・openvpnをyumからインストールする為EPELリポジトリをインストールする
    # ・openvpnに設定するSSL証明書作成にはeasy_rsaで作成する(直接OpenSSLコマンド使用しない)
    # ===================
    - name: YUMインストール(adminserv01にopenvpn関連をインストール。またアパッチのSVNモジュールもインストール)
      yum: name={{rpm.package.epel }} state=present
    - yum: name={{rpm.package.openvpn }} state=present
    - yum: name={{rpm.package.easy_rsa }} state=present
    - yum: name=mod_dav_svn state=present
  • 【YUM 모듈】Ansible에서의 yum 설치 모듈

  • Ansible

    서식:

    yum: name=\${라이브러리 이름} state=${present 또는 latest 또는 absent}

    예:
    firewalld가 설치되어 있지 않으면 한다.
    yum: name=firewalld state=present
    


    state
    상태


    present
    설치된 것

    latest
    최신 설치됨

    absent
    설치되지 않은 것


    5.yum 설치용 playbook(/vars/yum.yml)



    ${ANSIBLE_HOME}/vars/yum.yml
    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
          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
    

    rpm
    ├── package
    │ └── vim : vim
    │ └── openss:oepnssl
    ···
    의 계층에서 YUM 패키지명을 정의하고 있다.

    변수를 사용하는 경우는 여러 곳에서 이용하는 경우는 좋지만
    · 한 곳에서만 참조됩니다.
    ・프로덕션 환경과 개발 환경에서 값을 전환할 필요가 있다(환경 의존하는 IP나 호스트명, 패스나 포트 등)
    그렇지 않으면 오히려 직관성을 잃어 버릴지도 모릅니다.
    이번 yum.yml도 재이용성도 없고, 프로덕션 환경과 개발 환경에서의 전환이 불필요하기 때문에, 변수를 외부화하는 메리트는 얇은 생각이 듭니다 w

    다음번은 「SELinux 무효화 【Ansible SELinux 모듈】」에 대해.

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

    좋은 웹페이지 즐겨찾기