はじめに
AnsibleやJenkinsを使ったDevOpsのプロセスを学習することになったので、Open Libertyを導入・構成管理するユースケースで実際に動かして見たときのメモです。
完全初学者のメモなので、間違ってる箇所・こうした方がいい箇所などあると思うので、気になるところがありましたらコメントいただけると幸いです。
前提条件
-
ホスト:
- Mac OS High Sierra
- VirtualBox
- Vagrant
-
ゲスト:
-
コントローラーVM
- CentOS 7.1
- Ansible 2.6.2
- Jenkins 2.135
-
ターゲットVM
- CentOS 7.1
- Open Liberty 18.0.0.2
- Eclipse OpenJ9: 1.8.0_162
-
手順
ホスト側の準備
- VirtualBox + Vagrantの導入は他記事を参考に。また以下は打鍵したコマンドを記していますが、実行途中・結果のログは割愛しています。
vagrant box add centos71 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
2. vagrant initでVM設定
vagrant init centos71
Vagrant.configure(2) do |config|
config.vm.define "controller" do |node|
node.vm.box = "centos71"
node.vm.hostname = "controller"
node.vm.network :private_network, ip: "192.168.100.10"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210
node.vm.network :forwarded_port, id: "jenkins", guest:8080, host: 18080
end
config.vm.define "target" do |node|
node.vm.box = "centos71"
node.vm.hostname = "target"
node.vm.network :private_network, ip: "192.168.100.20"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
end
end
3. vagrant upでVMが2つ上がってくることを確認
vagrant up
vagrant status
Current machine states:
controller running (virtualbox)
target running (virtualbox)
4. 2つのVMで通信できるように鍵作って交換
ssh root@localhost -p 2210
ssh-keygen -t rsa
ssh-copy-id root@192.168.100.20
5. Open LibertyとOpenJ9を入手
ゲスト(コントローラー)側の準備
1. Ansible導入は他記事を参考に
- 前提のPythonはCentOSには最初から入ってるので略
python --version
Python 2.7.5
sudo yum install ansible
ansible --version
ansible 2.6.2
2. Jenkins導入は他記事を参考に
- 前提のJavaとwget入れる
- jenkinsがsudoできるようにしておく
sudo yum install java-1.8.0-openjdk wget
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
sudo yum install -y jenkins
service jenkins start
chkconfig jenkins on
sudo /usr/sbin/visudo
# Defaults requiretty
Defaults:jenkins !requiretty
jenkins ALL=(ALL) NOPASSWD:ALL
ゲスト(ターゲット)側の準備
- unzip導入(unarchiveモジュールの前提)
sudo yum install unzip
コントローラーのAnsibleからOpen Liberty + OpenJ9の導入
- OpenLibertyとOpenJ9のファイルをコピー
mkdir ansible
cp openliberty-18.0.0.2.zip /ansible/
cp OpenJDK8-OPENJ9_x64_Linux_jdk8u162-b12_openj9-0.8.0.tar.gz /ansible/
2. roles作成
mkdir roles
cd roles
mkdir common
mkdir OpenJ9
mkdir OpenLiberty
- common
---
- name: create group oladmin
group:
name: oladmin
- name: create user oladmin
user:
name: oladmin
group: oladmin
- name: create directories
file:
group: oladmin
owner: oladmin
mode: 0770
path: "{{ item }}"
state: directory
with_items:
- "/opt/IBM/OpenJ9"
- "/opt/IBM/OpenLiberty"
- OpenJ9
---
- name: unarchive OpenJ9
unarchive:
copy: yes
src: /ansible/OpenJDK8-OPENJ9_x64_Linux_jdk8u162-b12_openj9-0.8.0.tar.gz
dest: /opt/IBM/OpenJ9
owner: oladmin
group: oladmin
keep_newer: no
list_files: no
mode: 0770
- OpenLiberty
---
- name: unarchive Open Liberty
unarchive:
copy: yes
src: /ansible/openliberty-18.0.0.2.zip
dest: /opt/IBM/OpenLiberty/
owner: oladmin
group: oladmin
keep_newer: no
list_files: no
mode: 0770
3. inventory/hosts作成
[targets]
192.168.100.20
4. install.yml作成
---
- name: install liberty
become: true
hosts: targets
roles:
- common
- OpenJ9
- OpenLiberty
tasks:
5. Playbook全体ディレクトリ構成は以下:
ansible
L install.yml
L roles
L common
L task
L main.yml
L OpenJ9
L task
L main.yml
L OpenLiberty
L task
L main.yml
L inventory
L hosts
6. Jenkinsでジョブ作成(Ansibleコマンド実行)
7. Jenkinsからジョブ実行して成功するのを確認(以下は初回実行して導入後に再実行してるので冪等性が保たれ、okが出ている)
Open Liberty + OpenJ9の導入@ターゲット
まとめ
最低限のAnsibleのPlaybookと、Jenkinsのジョブを使って、OpenJ9とOpenLibertyを導入しました。
server.envファイルにJavaのパスを設定して、サーバー(JVM)作成&起動するtaskは次回に追加したいと思います。
またAnsibleのディレクトリ設計やJenkinsのジョブ構成についても最低限なので今後改善をしていきたいと思います。