【連載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
# ===================
# 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モジュール】」について。
連載の目次は【こちら】です。
Author And Source
この問題について(【連載01】204.yumにて必要なライブラリ/ミドル/ソフトウェアをインストールする【Ansible yumモジュール】), 我々は、より多くの情報をここで見つけました https://qiita.com/CsFactoryitter/items/1b7e6138197e2c58b719著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .