Edited at

【連載01】204.yumにて必要なライブラリ/ミドル/ソフトウェアをインストールする【Ansible yumモジュール】

More than 3 years have passed since last update.

当記事はケーススタディの連載となっています。目次は【こちら】です。

最新のソースコードは【GitHub】で公開中です。

サーバの責務はこちらで確認ください。


1.yumでのインストール概要

yumを利用して必要なライブラリ/ソフトウェア/ミドルウェアをインストールする。

image


2.playbookファイルの相関

image


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モジュール】」について。

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