Oracle VM では、Oracle VM Guest Additions を利用した
ゲスト OS のカスタマイズが可能です。Oracle VM リリース 3.4 の管理者ガイド
第 7 章 Oracle VM Guest Additionsのインストールおよび使用方法
https://docs.oracle.com/cd/E90714_01/e88293/vmadm-guestadd.html
以前に投稿した、Oracle VM でのメッセージ送信とあわせて利用します。
下記のあたりにも、簡単に説明があります。
Oracle VM 概要ガイド リリース 3.4
7.10 仮想マシンへのメッセージの送信
https://docs.oracle.com/cd/E90714_01/e88292/vmcon-vm-message.html
メッセージ渡しについては、どうやるのが正解なのかいまだに謎なのですが
今回は ovmcli からメッセージ送信して利用してみます。
今回のテンプレートの構成。
今回は、ORACLE が提供している Oracle Linux 7.4 の VM Template を利用します。
これは OS の初回起動時に Oracle VM Guest Additions が作用する状態で提供されています。
VM Template は、下記のように準備しています。
テンプレート名はデフォルトだと長いので、「OL7U4」という名前に変更しています。
OVM> show Vm name=OL7U4
Status = Template
Memory (MB) = 512
Max. Memory (MB) = 512
Processors = 1
Max. Processors = 1
Priority = 50
Processor Cap = 100
High Availability = No
Operating System = Oracle Linux 7
Mouse Type = OS Default
Domain Type = Xen HVM
Keymap = en-us
Start Policy = Current Server
Boot Order 1 = Disk
Origin = http://192.168.1.239/vmimg/ol74/OVM_OL7U4_x86_64_PVHVM.ova
Disk Limit = 4
Huge Pages Enabled = No
Config File Absolute Path = 192.168.4.119:/nfs/repo01/Templates/0004fb0000140000259e67e80e204686/vm.cfg
Config File Mounted Path = /OVS/Repositories/0004fb000003000085a55bcfe9b5cff4/Templates/0004fb0000140000259e67e80e204686/vm.cfg
Repository = 0004fb000003000085a55bcfe9b5cff4 [st-repo-01]
Vnic 1 = 0004fb0000070000ef51310280718d36 [Template Vnic]
VmDiskMapping 1 = 0004fb0000130000aaa6c881a9735308 [Mapping for disk Id (30cdce19a6c24c6e941f07a62661fa81.img)]
Restart Action On Crash = Restart
Id = 0004fb0000140000259e67e80e204686 [OL7U4]
Name = OL7U4
Locked = false
DeprecatedAttrs = [Huge Pages Enabled (Deprecated for PV guest)]
OVM>
VM 作成と起動~カスタマイズ。
テンプレートから VM を作成します。
[gowatana@vm01 ~]$ ovmcli clone Vm name=OL7U4 destName=custom-vm-0 destType=Vm serverPool=sv-pool-01
OVM> clone Vm name=OL7U4 destName=custom-vm-0 destType=Vm serverPool=sv-pool-01
Command: clone Vm name=OL7U4 destName=custom-vm-0 destType=Vm serverPool=sv-pool-01
Status: Success
Time: 2017-12-20 22:15:25,585 JST
JobId: 1513775725417
Data:
id:0004fb00000600008d330aa83d2b662f name:custom-vm-0
OVM> Connection closed.
[gowatana@vm01 ~]$
VM の起動して、ovm-template-config が作動する前に
Oracle VM のメッセージを送信します。
手で入力すると たいてい間に合わないので、
下記のようにコマンドを羅列したファイルを用意しておいて実行しました。
ファイルを実行すると下記のような感じになります。
[gowatana@vm01 ~]$ sh first_boot.sh
OVM> start Vm name=custom-vm-0
Command: start Vm name=custom-vm-0
Status: Success
Time: 2017-12-20 22:16:54,869 JST
JobId: 1513775805503
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.hostname message=custom-vm-0
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.hostname message=custom-vm-0
Status: Success
Time: 2017-12-20 22:16:55,414 JST
JobId: 1513775815035
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.device.0 message=eth0
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.device.0 message=eth0
Status: Success
Time: 2017-12-20 22:16:55,977 JST
JobId: 1513775815589
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.onboot.0 message=yes
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.onboot.0 message=yes
Status: Success
Time: 2017-12-20 22:16:56,614 JST
JobId: 1513775816198
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.bootproto.0 message=none
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.bootproto.0 message=none
Status: Success
Time: 2017-12-20 22:16:57,202 JST
JobId: 1513775816811
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.ipaddr.0 message=192.168.4.222
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.ipaddr.0 message=192.168.4.222
Status: Success
Time: 2017-12-20 22:16:57,759 JST
JobId: 1513775817364
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.netmask.0 message=255.255.255.0
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.netmask.0 message=255.255.255.0
Status: Success
Time: 2017-12-20 22:16:58,341 JST
JobId: 1513775817947
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.gateway.0 message=192.168.4.254
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.gateway.0 message=192.168.4.254
Status: Success
Time: 2017-12-20 22:16:58,929 JST
JobId: 1513775818526
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.dns-servers.0 message=192.168.1.254,192.168.1.253
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.network.dns-servers.0 message=192.168.1.254,192.168.1.253
Status: Success
Time: 2017-12-20 22:16:59,490 JST
JobId: 1513775819113
OVM> Connection closed.
OVM> sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.root-password message=Merry-Xmas!
Command: sendVmMessage Vm name=custom-vm-0 log=Yes key=com.oracle.linux.root-password message=Merry-Xmas!
Status: Success
Time: 2017-12-20 22:17:00,069 JST
JobId: 1513775819692
OVM> Connection closed.
[gowatana@vm01 ~]$
Oracle VM Manager から見ると、このような感じになります。
VM 起動直後は、GRUB メニューでのカウントダウンがあったりするので
だいたい今回のようなメッセージ投入であれば間に合うと思います。
おそらくは、下記のあたりに間に合えばよいでしょう。
投入したメッセージは、ovmcli でも確認することができます。
ただし、実際にゲスト OS でも受け取れているかは、ゲスト側で確認することになるはずです。
OVM> getVmSentMessages Vm name=custom-vm-0
Key:com.oracle.linux.network.bootproto.0 Value:none
Key:com.oracle.linux.network.onboot.0 Value:yes
Key:com.oracle.linux.network.hostname Value:custom-vm-0
Key:com.oracle.linux.root-password Value:Merry-Xmas!
Key:com.oracle.linux.network.dns-servers.0 Value:192.168.1.254,192.168.1.253
Key:com.oracle.linux.network.ipaddr.0 Value:192.168.4.222
Key:com.oracle.linux.network.device.0 Value:eth0
Key:com.oracle.linux.network.netmask.0 Value:255.255.255.0
Key:com.oracle.linux.network.gateway.0 Value:192.168.4.254
OVM>
ゲスト OS の様子。
起動完了したゲスト OS を見てみます。
メッセージで指定した IP アドレス宛に SSH 接続して、
同じく メッセージで指定した root パスワードでログインしてみます。
ログインすると、プロンプトからホスト名が設定されたこともわかります。
[gowatana@vm01 ~]$ ssh root@192.168.4.222
The authenticity of host '192.168.4.222 (192.168.4.222)' can't be established.
ECDSA key fingerprint is 54:d5:6a:51:4a:41:08:fa:5c:72:f9:80:67:25:11:0c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.4.222' (ECDSA) to the list of known hosts.
root@192.168.4.222's password: ★パスワード入力
[root@custom-vm-0 ~]#
[root@custom-vm-0 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.4
ネットワーク設定もされています。
テンプレートには NetworkManager がインストールされていません。
nmcli / nmtui ではなく設定ファイルに設定されます。
[root@custom-vm-0 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DNS2=192.168.1.253
DNS1=192.168.1.254
GATEWAY=192.168.4.254
NETMASK=255.255.255.0
IPADDR=192.168.4.222
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
DEVICE=eth0
[root@custom-vm-0 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:21:f6:db:be:19 brd ff:ff:ff:ff:ff:ff
inet 192.168.4.222/24 brd 192.168.4.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::221:f6ff:fedb:be19/64 scope link
valid_lft forever preferred_lft forever
[root@custom-vm-0 ~]#
何かうまくいかないときは、Syslog や systemd journal、
/var/log/ovm-template-config.log ファイルあたりを確認しながら
対処することになるはずです。
以上、Oracle VM でのゲスト OS のカスタマイズでした。
0 件のコメント:
コメントを投稿