2017年12月25日月曜日

Oracle VM の ovm-template-config の世界。

Oracle VM には、ovm-template-config というゲスト OS 構成ツールがあります。
今回はこの仕組みを利用して、ゲスト OS の設定を変更してみます。

Oracle VMリリース3.4の管理者ガイド
7.7 Oracle VMテンプレート構成スクリプトおよびモジュール
https://docs.oracle.com/cd/E90714_01/e88293/vmadm-guestadd-template.html

ovm-template-config のインストール。

ゲスト OS に、RPM でインストールします。
今回も Oracle Linux 7.4 です。
[root@adv25 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4
[root@adv25 ~]# yum install --enablerepo=ol7_addons -y ovm-template-config
読み込んだプラグイン:ulninfo
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ ovm-template-config.noarch 0:3.7-5.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
 Package                   アーキテクチャー
                                        バージョン       リポジトリー      容量
================================================================================
インストール中:
 ovm-template-config       noarch       3.7-5.el7        ol7_addons        40 k

トランザクションの要約
================================================================================
インストール  1 パッケージ

総ダウンロード容量: 40 k
インストール容量: 126 k
Downloading packages:
ovm-template-config-3.7-5.el7.noarch.rpm                   |  40 kB   00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : ovm-template-config-3.7-5.el7.noarch            1/1
  検証中                  : ovm-template-config-3.7-5.el7.noarch            1/1

インストール:
  ovm-template-config.noarch 0:3.7-5.el7

完了しました!
[root@adv25 ~]#

そして ovm-template-config には、設定要素ごとに RPM が用意されています。
[root@adv25 ~]# yum list --enablerepo=ol7_addons ovm-template-config-*
読み込んだプラグイン:ulninfo
インストール済みパッケージ
ovm-template-config.noarch                        3.7-5.el7          @ol7_addons
利用可能なパッケージ
ovm-template-config-authentication.noarch         3.7-5.el7          ol7_addons
ovm-template-config-datetime.noarch               3.7-5.el7          ol7_addons
ovm-template-config-firewall.noarch               3.7-5.el7          ol7_addons
ovm-template-config-network.noarch                3.7-5.el7          ol7_addons
ovm-template-config-selinux.noarch                3.7-5.el7          ol7_addons
ovm-template-config-ssh.noarch                    3.7-5.el7          ol7_addons
ovm-template-config-system.noarch                 3.7-5.el7          ol7_addons
ovm-template-config-user.noarch                   3.7-5.el7          ol7_addons
[root@adv25 ~]#

まとめてインストールします。
[root@adv25 ~]# yum install --enablerepo=ol7_addons -y ovm-template-config-*

インストールされた RPM です。
[root@adv25 ~]# rpm -qa --queryformat '%{name}\n' | grep ovm-template-config-
ovm-template-config-selinux
ovm-template-config-firewall
ovm-template-config-ssh
ovm-template-config-user
ovm-template-config-authentication
ovm-template-config-network
ovm-template-config-system
ovm-template-config-datetime
[root@adv25 ~]#

実は、RPM あたりスクリプトファイルが1つだけ含まれています。
[root@adv25 ~]# rpm -qa --queryformat '%{name}\n' | grep ovm-template-config- | while read L
> do
> echo "--- $L"
> rpm -ql $L
> done
--- ovm-template-config-selinux
/etc/template.d/scripts/selinux
--- ovm-template-config-firewall
/etc/template.d/scripts/firewall
--- ovm-template-config-ssh
/etc/template.d/scripts/ssh
--- ovm-template-config-user
/etc/template.d/scripts/user
--- ovm-template-config-authentication
/etc/template.d/scripts/authentication
--- ovm-template-config-network
/etc/template.d/scripts/network
--- ovm-template-config-system
/etc/template.d/scripts/system
--- ovm-template-config-datetime
/etc/template.d/scripts/datetime
[root@adv25 ~]#

/etc/template.d 配下のスクリプトは、ovm-chkconfig で管理されます。
これは chkconfig に似せてあるようです。
基本的に、configure、cleanup だけが利用されています。
[root@adv25 ~]# ovm-chkconfig --list
name                 configure   unconfigure reconfigure cleanup     suspend     resume      migrate     shutdown
authentication       on:90       off         off         on:10       off         off         off         off
datetime             on:50       off         off         on:50       off         off         off         off
firewall             on:41       off         off         off         off         off         off         off
network              on:50       off         off         on:50       off         off         off         off
selinux              on:30       off         off         off         off         off         off         off
ssh                  on:70       off         off         on:30       off         off         off         off
system               on:60       off         off         on:60       off         off         off         off
user                 on:60       off         off         on:40       off         off         off         off
[root@adv25 ~]#



ovm-template-config スクリプトの RPM を作成してみる。

ovm-template-config の仕様にそったスクリプトの RPM を作成してみます。
まず、git と rpm-build をインストールしておきます。
(git は、今回 GitHub にファイルを配置したためです。)
[root@adv25 ~]# yum install -y git rpm-build

今回は、下記のファイルを作成しました。
ただ /etc/motd ファイルを編集するだけのスクリプトです。

GitHub: gowatana/ovm-template-config-jpougadv
https://github.com/gowatana/ovm-template-config-jpougadv
  1. jpougadv: ovm-template-config に対応した Python スクリプト。
  2. ovm-template-config-jpougadv.spec: RPM の SPEC ファイル。
  3. Makefile: RPM のビルドで利用する make ファイル。

RPM を生成します。※出力は省略しています。
[gowatana@adv25 ~]# git clone https://github.com/gowatana/ovm-template-config-jpougadv.git
[gowatana@adv25 ~]# cd ovm-template-config-jpougadv/
[gowatana@adv25 ovm-template-config-jpougadv]# make dist
[gowatana@adv25 ovm-template-config-jpougadv]# make rpm

下記のように、tar.gz ファイルと・・・
[gowatana@adv25 ovm-template-config-jpougadv]$ ls -l
合計 16
-rw-rw-r--. 1 gowatana gowatana 868 12月 25 20:04 Makefile
-rw-rw-r--. 1 gowatana gowatana 1289 12月 25 20:04 jpougadv
-rw-rw-r--. 1 gowatana gowatana 1424 12月 25 20:04 ovm-template-config-jpougadv-1.0.tar.gz
-rw-rw-r--. 1 gowatana gowatana 869 12月 25 20:04 ovm-template-config-jpougadv.spec

RPM が作成されます。
[gowatana@adv25 ovm-template-config-jpougadv]$ ls -Rl ~/rpmbuild
/home/gowatana/rpmbuild:
合計 0
drwxr-xr-x. 3 gowatana gowatana 46 12月 25 20:04 BUILD
drwxr-xr-x. 2 gowatana gowatana 6 12月 25 20:04 BUILDROOT
drwxr-xr-x. 3 gowatana gowatana 20 12月 25 20:04 RPMS
drwxr-xr-x. 2 gowatana gowatana 6 12月 25 20:04 SOURCES
drwxr-xr-x. 2 gowatana gowatana 6 12月 25 20:04 SPECS
drwxr-xr-x. 2 gowatana gowatana 60 12月 25 20:04 SRPMS

/home/gowatana/rpmbuild/BUILD:
合計 0
drwxr-xr-x. 2 gowatana gowatana 79 12月 25 20:04 ovm-template-config-jpougadv-1.0

/home/gowatana/rpmbuild/BUILD/ovm-template-config-jpougadv-1.0:
合計 12
-rw-r--r--. 1 gowatana gowatana 868 12月 25 20:04 Makefile
-rw-r--r--. 1 gowatana gowatana 1289 12月 25 20:04 jpougadv
-rw-r--r--. 1 gowatana gowatana 869 12月 25 20:04 ovm-template-config-jpougadv.spec

/home/gowatana/rpmbuild/BUILDROOT:
合計 0

/home/gowatana/rpmbuild/RPMS:
合計 0
drwxr-xr-x. 2 gowatana gowatana 63 12月 25 20:04 noarch

/home/gowatana/rpmbuild/RPMS/noarch:
合計 4
-rw-rw-r--. 1 gowatana gowatana 3124 12月 25 20:04 ovm-template-config-jpougadv-1.0-1.el7.noarch.rpm

/home/gowatana/rpmbuild/SOURCES:
合計 0

/home/gowatana/rpmbuild/SPECS:
合計 0

/home/gowatana/rpmbuild/SRPMS:
合計 4
-rw-rw-r--. 1 gowatana gowatana 3956 12月 25 20:04 ovm-template-config-jpougadv-1.0-1.el7.src.rpm
[gowatana@adv25 ovm-template-config-jpougadv]$

作成した RPM の情報です。
/etc/template.d/scripts/jpougadv というクリプト ファイルが 1つだけ含まれます。
[gowatana@adv25 ~]$ rpm -qpl /home/gowatana/rpmbuild/RPMS/noarch/ovm-template-config-jpougadv-1.0-1.el7.noarch.rpm
/etc/template.d/scripts/jpougadv
[gowatana@adv25 ~]$ rpm -qpi /home/gowatana/rpmbuild/RPMS/noarch/ovm-template-config-jpougadv-1.0-1.el7.noarch.rpm
Name : ovm-template-config-jpougadv
Version : 1.0
Release : 1.el7
Architecture: noarch
Install Date: (not installed)
Group : Unspecified
Size : 1289
License : GPL
Signature : (none)
Source RPM : ovm-template-config-jpougadv-1.0-1.el7.src.rpm
Build Date : 2017年12月25日 20時04分51秒
Build Host : adv25
Relocations : (not relocatable)
URL : https://gowatana.blogspot.jp/2017/12/ovm-template-config.html
Summary : Oracle VM template jpougadv configuration script.
Description :
Oracle VM template JPOUG Advent Calendar message configuration script.
[gowatana@adv25 ~]$

root ユーザで、RPM をインストールしてみます。
[root@adv25 ~]# yum install -y /home/gowatana/rpmbuild/RPMS/noarch/ovm-template-config-jpougadv-1.0-1.el7.noarch.rpm

ovm-chkconfig にスクリプトが追加されました。
[root@adv25 ~]# ovm-chkconfig --list jpougadv
name                 configure   unconfigure reconfigure cleanup     suspend     resume      migrate     shutdown
jpougadv             on:55       off         off         on:55       off         off         off         off
[root@adv25 ~]#

このスクリプトによって、ovm-template-config による configure / cleanup ができます。
[root@adv25 ~]# cat /etc/motd
[root@adv25 ~]# ovm-template-config --console-input --script jpougadv configure
[root@adv25 ~]# cat /etc/motd
=========================================
 JPOUG Advent Calendar 2017
 https://jpoug.doorkeeper.jp/events/67051
=========================================
[root@adv25 ~]# ovm-template-config --console-input --script jpougadv cleanup
[root@adv25 ~]# cat /etc/motd
[root@adv25 ~]#

ovm-template-config スクリプトを利用してみます。

初回起動時の構成を実行するときに ovmd が利用されるので、
下記のようにインストールしておきます。

ここまでで作成した ovm-template-config-jpougadv の RPM もインストールしておきます。

ovm-template-config の対象になる OS の設定をクリーンアップします。
[root@custom-vm-0 ~]# ovmd -s cleanup

ovm-template-initial-config の初回起動時の構成を有効にします。
Oracle Linux 6.x の頃は「service ovmd enable-initial-config」で有効にできましたが、
Oracle Linux 7.x では sed で直接ファイルを編集してしまいます。
この設定は、初期セットアップの処理の中で no に戻されます。
(ちなみに OL6 の /etc/init.d/ovmd スクリプトでも同様の方法でした。)
[root@custom-vm-0 ~]# grep ^INITIAL_CONFIG /etc/sysconfig/ovm-template-initial-config
INITIAL_CONFIG=no
[root@custom-vm-0 ~]# sed -i 's/^INITIAL_CONFIG=.*/INITIAL_CONFIG=yes/g' /etc/sysconfig/ovm-template-initial-config
[root@custom-vm-0 ~]# grep ^INITIAL_CONFIG /etc/sysconfig/ovm-template-initial-config
INITIAL_CONFIG=yes

ovm-template-initial-config サービスが有効になっていることを確認します。
[root@custom-vm-0 ~]# systemctl is-enabled ovm-template-initial-config
enabled

OS 再起動後の初期セットアップが終わってからログインすると、
/etc/motd の編集により下記のようにメッセージが表示されるようになります。
Last login: Mon Dec 25 11:58:12 2017 from 192.168.1.197
=========================================
 JPOUG Advent Calendar 2017
 https://jpoug.doorkeeper.jp/events/67051
=========================================
[root@custom-vm-0 ~]#

以上、Oracle VM の ovm-template-config のスクリプトを利用してみる話でした。

0 件のコメント:

コメントを投稿