2017年2月28日火曜日

Nagios 4.2.4 の日本語RPMを docker + mock環境 で作ってみたよ!


ども。 久しぶりのNagiosネタです!

今回は調子に乗って、build環境に [docker + mock]を使ってみました!


もくじ



環境

buildの環境です。
項目
docker hostCoreOS
docker imagecentos:latest (CentOS7)
docker imageauchida/mock-rpmbuilder
SRPMEPEL-7
CoreOSはネットワークなどなど、設定済みとします。

Dockerホストで共有フォルダを作成

mkdir /tmp/rpmbuild
chmod a+w /tmp/rpmbuild # ← あとで必要なので、誰でも書きこみ可能とする

Docker Image (centos:latest) をダウンロード

 docker pull centos:latest
参考:

User Feedback

Docker (centos:latest) で、 SRPMを取得、再構築


Docker (centos:latest) の起動

 docker run -v /tmp/rpmbuild:/root/rpmbuild -i -t centos:latest /bin/bash

RPMBuild 用のパッケージをインストール

 yum install gcc make gettext rpm-build epel-release -y

Nagios SRPMの取得(EPEL)

 yumdownloader --source nagios

Nagios SRPMの展開

 rpm -ivh nagios-4.2.4-2.el7.src.rpm

patchファイルのダウンロード

ももーいさんのパッチを利用させていただきました!

 curl -L -o rpmbuild/SOURCES/nagios-jp-4.2.4.patch.gz http://ftp.momo-i.org/pub/security/nagios/patches/nagios-jp-4.2.4.patch.gz

SPECファイルの編集

Patchを提示しておきます。


日本語JP SRPM を作成

rpmbuild -bs rpmbuild/SPECS/nagios-jp.spec

ここで、いったん centos:latest
の、出番は終了

Docker Image (auchida/mock-rpmbuilder) をダウンロード

 docker pull auchida/mock-rpmbuilder
参考:

Card

日本語JP SRPM をBuild

docker run -e MOCK_CONFIG=epel-7-x86_64 -e MOCK_TARGET=SRPMS -v /tmp/rpmbuild:/rpmbuild --privileged=true -i auchida/mock-rpmbuilder

build中・・・
INFO: mock.py version 1.2.18 starting (python version = 3.5.1)...
Start: init plugins
INFO: selinux disabled
Finish: init plugins
Start: run
INFO: Start(/rpmbuild/SRPMS/nagios-4.2.4-2.el7.centos.jp.src.rpm)  Config(epel-7-x86_64)
Start: clean chroot
Finish: clean chroot
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled yum cache
Start: cleaning yum metadata
Finish: cleaning yum metadata
Mock Version: 1.2.18
INFO: Mock Version: 1.2.18
Start: yum install
Finish: yum install
Start: creating cache
Finish: creating cache
Finish: chroot init
INFO: Installed packages:
Start: build phase for nagios-4.2.4-2.el7.centos.jp.src.rpm
Start: build setup for nagios-4.2.4-2.el7.centos.jp.src.rpm
Finish: build setup for nagios-4.2.4-2.el7.centos.jp.src.rpm
Start: rpmbuild nagios-4.2.4-2.el7.centos.jp.src.rpm
Finish: rpmbuild nagios-4.2.4-2.el7.centos.jp.src.rpm
Finish: build phase for nagios-4.2.4-2.el7.centos.jp.src.rpm
INFO: Done(/rpmbuild/SRPMS/nagios-4.2.4-2.el7.centos.jp.src.rpm) Config(epel-7-x86_64) 2 minutes 6 seconds
INFO: Results and/or logs in: /rpmbuild/output
INFO: Cleaning up build root ('cleanup_on_success=True')
Start: clean chroot
Finish: clean chroot
Finish: run

出来上がり

出力Dir構造
/tmp/rpmbuild/output/
|-- build.log
|-- nagios-4.2.4-2.el7.centos.jp.src.rpm
|-- nagios-4.2.4-2.el7.centos.jp.x86_64.rpm
|-- nagios-common-4.2.4-2.el7.centos.jp.x86_64.rpm
|-- nagios-debuginfo-4.2.4-2.el7.centos.jp.x86_64.rpm
|-- nagios-devel-4.2.4-2.el7.centos.jp.x86_64.rpm
|-- root.log
`-- state.log
となりました!

まとめ

さらっとやっているように書きましたが、
  • Docker
  • mock
を、普通に使うとハマってしまいましたー!

ここで、情報まとめておけば何とかなるかなー?って。
現場からは以上でーす!


Zenback