ひさしぶりにtWAS(WebSphere Application Server traditional)のNetwork Deployment環境が検証用に必要になり、macOS版がないのでVagrant/VirtualBox上のCentOSに導入することにし、デスクトップ環境を入れたくないのでサイレントインストールの方法を確認したメモ。あわせてAnsibleで自動化したメモ。
サイレントインストールは以下の3通りがある。レスポンスファイルを作るのは面倒で、コンソールモードはCUIでの対話式のインストール方法なので、自動化にはコマンドモードが簡単。
仮想マシンの準備
2台のVMをVagrantで起動する。1台でよい場合はVagrantfile
を修正すること。
前提ソフトウェア
brew install git
brew cask install virtualbox
brew cask install vagrant
VagrantはホストOSのVagrantfile
があるディレクトリーをVMの/vagrant
にマウントするので、このディレクトリーを使ってDockerfile
などファイルの受け渡しができるが、デフォルトではVM起動時にrsyncするだけなので、リアルタイムに同期するためには、VirtualBoxのGuest Additionsが必要で、これを自動でインストールしてくれるvagrant-vbguest
プラグインを導入しておく。
vagrant plugin install vagrant-vbguest
(補足)
VirtulBox 6.0.8、Vagrant 2.2.4、vagrant-vbguest 0.17.2の組み合わせでは以下のIssueに該当するのかマウントが上手くいかなかった。
そのような場合はデフォルトのrsyncにしたほうがよい。Vagrantfile
のconfig.vm.synced_folder
をコメントアウトし、config.vbguest.auto_update
をfalse
にする。
VMのスナップショットをとれるようにsahara
プラグインも入れておくと便利。
vagrant plugin install sahara
リポジトリのクローン
GitHubからリポジトリをクローンしてVagrantfile
を取得する。
# このgitリポジトリをクローン
git clone https://github.com/sotoiwa/vagrant-was-centos
# クローンしたディレクトリーに入る
cd vagrant-was-centos
# VM起動
vagrant up
インストールパッケージの準備
ダウンロードしたWASのインストールイメージとFixPackのファイルをVagrantfile
があるディレクトリーに置く。
$ ls -l *.zip
-rw-r--r--@ 1 sotoiwa staff 559661094 5 20 13:48 9.0.0-WS-IHSPLG-FP011.zip
-rw-r--r--@ 1 sotoiwa staff 1130998013 5 20 13:46 9.0.0-WS-WAS-FP011.zip
-rw-r--r--@ 1 sotoiwa staff 1633871835 5 20 13:46 WAS_ND_V9.0_MP_ML.zip
-rw-r--r--@ 1 sotoiwa staff 171926710 5 20 13:37 agent.installer.linux.gtk.x86_64_1.8.9004.20190423_2015.zip
-rw-r--r--@ 1 sotoiwa staff 165819084 5 20 13:44 ibm-java-sdk-8.0-5.35-linux-x64-installmgr.zip
-rw-r--r-- 1 sotoiwa staff 992220534 5 20 15:50 sdk.repo.8030.java8.linux.zip
-rw-r--r--@ 1 sotoiwa staff 205003961 5 20 13:28 was.repo.9000.ihs.zip
-rw-r--r--@ 1 sotoiwa staff 318279547 5 20 13:29 was.repo.9000.plugins.zip
$
仮想マシンの起動
仮想マシンを起動してログインする。
vagrant up
vagrant ssh node1
WASのインストール
仮想マシン内でWASをインストールする。以下の作業はVMが2台の場合は両方のVMに対して実施。
準備
root
になる。
sudo -i
以下は全てroot
で実行する。
echo 192.168.33.41 node1 >> /etc/hosts
echo 192.168.33.41 node1 >> /etc/hosts
/etc/hosts
に名前解決エントリを追加する。
ulimit -n 8192
echo "ulimit -n 8192" >> .bashrc
SELinuxを無効化する。
setenforce 0
sed -i '/^SELINUX=/c\SELINUX=disabled' /etc/selinux/config
WASの前提パッケージをインストールする。
yum install -y gtk2 libXtst xorg-x11-fonts-Type1
ファイルの解凍に使用するのでunzip
をインストールする。
yum install -y unzip
リポジトリの準備
/vagrant
ディレクトリーからzipファイルをコピーし、/work
ディレクトリーに展開する。スクリプトでまとめ実行する。
/vagrant/unzip_repo.sh
#!/bin/bash
set -eu
set -o pipefail
function unzip_repo () {
repo=$1
filename=${!repo}
mkdir -p /work/${repo}
cd /work/${repo}
cp /vagrant/${filename} .
unzip -q ${filename}
}
IIM=agent.installer.linux.gtk.x86_64_1.8.9004.20190423_2015.zip
WAS=WAS_ND_V9.0_MP_ML.zip
JDK=sdk.repo.8030.java8.linux.zip
IHS=was.repo.9000.ihs.zip
PLG=was.repo.9000.plugins.zip
WAS_FP=9.0.0-WS-WAS-FP011.zip
JDK_FP=ibm-java-sdk-8.0-5.35-linux-x64-installmgr.zip
IHSPLG_FP=9.0.0-WS-IHSPLG-FP011.zip
unzip_repo IIM
unzip_repo WAS
unzip_repo JDK
unzip_repo IHS
unzip_repo PLG
unzip_repo WAS_FP
unzip_repo JDK_FP
unzip_repo IHSPLG_FP
IIMのインストール
IIMをインストールする。
cd /work/IIM
./installc -acceptLicense
WAS/IHS/プラグインのインストール
WAS/IHS/プラグインをインストールする。
# インストール可能なパッケージの確認
cd /opt/IBM/InstallationManager/eclipse/tools
./imcl listAvailablePackages \
-repositories /work/WAS,/work/JDK,/work/IHS,/work/PLG,/work/WAS_FP,/work/JDK_FP,/work/IHSPLG_FP
# WASのインストール
./imcl install com.ibm.websphere.ND.v90 com.ibm.java.jdk.v8 \
-repositories /work/WAS,/work/JDK,/work/IHS,/work/PLG,/work/WAS_FP,/work/JDK_FP,/work/IHSPLG_FP \
-installationDirectory /opt/IBM/WebSphere/AppServer \
-installFixes all \
-acceptLicense
# IHSのインストール
./imcl install com.ibm.websphere.IHS.v90 com.ibm.java.jdk.v8 \
-repositories /work/WAS,/work/JDK,/work/IHS,/work/PLG,/work/WAS_FP,/work/JDK_FP,/work/IHSPLG_FP \
-installationDirectory /opt/IBM/HTTPServer \
-installFixes all \
-acceptLicense
# プラグインのインストール
./imcl install com.ibm.websphere.PLG.v90 com.ibm.java.jdk.v8 \
-repositories /work/WAS,/work/JDK,/work/IHS,/work/PLG,/work/WAS_FP,/work/JDK_FP,/work/IHSPLG_FP \
-installationDirectory /opt/IBM/WebSphere/Plugins \
-installFixes all \
-acceptLicense
プロファイルの作成
デプロイメント・マネージャープロファイルを作成する(node1のみ)。
cd /opt/IBM/WebSphere/AppServer/bin
./manageprofiles.sh -create \
-profileName Dmgr01 \
-profilePath /opt/IBM/WebSphere/AppServer/profiles/Dmgr01 \
-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/management \
-serverType DEPLOYMENT_MANAGER \
-enableAdminSecurity true \
-adminUserName wasadmin \
-adminPassword wasadmin
INSTCONFPARTIALSUCCESS
になるが、ログをみるとcreateProfileShortCut2StartMenuMgmt.ant
が失敗しているので、デスクトップ環境がないためであり問題ないと推測。
デプロイメント・マネージャーを起動する(node1のみ)。
/opt/IBM/WebSphere/AppServer/profiles/Dmgr01/bin/startManager.sh
デプロイメント・マネージャーに接続するカスタムプロファイルを作成する。
./manageprofiles.sh -create \
-profileName Custom01 \
-profilePath /opt/IBM/WebSphere/AppServer/profiles/Custom01 \
-templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/managed \
-dmgrHost localhost \
-dmgrPort 8879 \
-dmgrAdminUserName wasadmin \
-dmgrAdminPassword wasadmin
こちらもINSTCONFPARTIALSUCCESS
になるが、ログをみるとcreateProfileShortCut2StartMenuManaged.ant
が失敗しているので、デスクトップ環境がないためであり問題ないと推測。
管理コンソールへアクセス
管理コンソールにアクセスできることを確認。
Ansible
Ansibleを勉強中なので、上記内容をAnsibleで実行するできるようにPlaybookにした。Vagrantにansible_local
というモジュールもあるが、ローカルのAnsibleを使用するようにしているため、Ansibleをインストールする。
brew install ansible
VMを起動して、Playbookを実行。
vagrant up && ansible-playbook -i hosts site.yml
IPアドレスやパスワードを直書きしていたり、Playbookに改善の余地はあるがとりあえず動いたのでOK。冪等性も考慮してあるつもり。Playbookの内容はGitHubを参照。