はじめに
Oracle Cloud Infrastructure 上で動かすインスタンスは、Oracle側で用意したOSのイメージやマーケットプレイス上のイメージを使用して作成することが出来ます。Windows, Oracle Linux, Cent OS, Ubuntu などが標準で用意されています。
これに対して、独自に用意した仮想マシンイメージを Custom Image としてBYOI(仮想マシンの移行)することで、任意の仮想マシンイメージを使用してインスタンスを起動することができます。
今回の記事は、Virtual Box で作成した仮想マシン をインポートして、インスタンスとして稼働させる方法を記載していきます。
Custom Imageについて
独自の仮想マシンイメージをBYOIする時には、2つの選択肢が存在しています。
- 準仮想化モード : Linux(カーネルバージョンが3.4以上)のものが対応
- エミュレーションモード(完全仮想化モード) : 古いLinux, Windows イメージが対応
詳細は省略しますが、パフォーマンスの面で準仮想化モードを選択するのが推奨です。カーネルバージョンが3.4以上のLinuxイメージをBYOIする場合は、積極的に準仮想化モードを使用するのが良いと思います。
その他注意事項は以下のDocumentに記載があります。
準仮想化モード
https://docs.cloud.oracle.com/iaas/Content/Compute/References/customimagesparavirtualizedmode.htm
エミュレーションモード
https://docs.cloud.oracle.com/iaas/Content/Compute/References/customimagesemulationmode.htm
移行元のイメージを作成
Virtual Box で仮想マシン作成
移行元のイメージを、VirtualBoxを使用して準備します。個人的な理由で、オープンソースの仮想ネットワークOSで有名なVyOS(元vyatta)をOCI上で使いたいため、VyOSの仮想マシンをVirtualBoxに作成します。
Virtual Box で仮想ディスクのフォーマットを選択可能です。OCIではVMDKとQCOW2の2種類の形式がサポートされているため、今回はVMDKを選択します。既存の仮想マシンのフォーマットが異なる場合は、変換などを行うことが出来るようです。
仮想マシンのスペック
- Disk : 50GBのVMDKファイル
- ネットワークインターフェース : 1個
VyOS Install
VyOSのインストール用ISOイメージを読み込ませ、仮想マシンを起動します。
VyOS Download
https://downloads.vyos.io/?dir=rolling/current/amd64
VyOSのインストールは、下の手順に従います。
インストーラのLiveISOのアカウントは、ID : vyos Pass : vyos でログインが可能です。
https://support.vyos.io/en/guides/vyos-user-guide/user-guide/installation
インストール完了後、ISOイメージを取り外し再起動すると、VyOSのログインプロンプトが表示されるので、入力したパスワードでログインをします。
VyOS Configure
configure mode に入ります
vyos@vyos$ configure
vyos@vyos#
ネットワークインターフェースを、DHCP有効にします。
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 description 'OUTSIDE'
SSHを有効にします。
set service ssh port '22'
設定値を保存します。commitしたタイミングで、DHCPやSSHが有効になり、SSHを使用したアクセスが出来るようになります。
commit
save
InterfaceのMacAddressを削除します
delete interfaces ethernet eth0 hw-id
config を確認します
vyos@vyos# show
interfaces {
ethernet eth0 {
address dhcp
description OUTSIDE
- hw-id 08:00:27:a0:e1:fa
}
loopback lo {
}
}
service {
ssh {
port 22
}
}
system {
config-management {
commit-revisions 100
}
console {
device ttyS0 {
speed 9600
}
}
host-name vyos
login {
user vyos {
authentication {
encrypted-password secret
plaintext-password ""
}
level admin
}
}
ntp {
server 0.pool.ntp.org {
}
server 1.pool.ntp.org {
}
server 2.pool.ntp.org {
}
}
}
configuration を保存します
commit
save
VyOSのLinux Kernel バージョンを確認します。4.16.36が使われています。
# uname -a
Linux vyos 4.19.36-amd64-vyos #1 SMP Sun Apr 21 10:39:20 CEST 2019 x86_64 GNU/Linux
VyOSを停止します
poweroff
BYOIのための準備
以下のDocumentに、BYOI(仮想マシンイメージの持ち込み)をする前に、推奨される準備作業が記載されています。これに従って、作業を進めます。
https://docs.cloud.oracle.com/iaas/Content/Compute/Tasks/preparingcustomimage.htm
(VyOSの場合はGRUBのmkconfigに失敗したので、実施しないで次の手順に進みます)
Custom Imageの作成
VMDKファイルをアップロード
以下のディレクトリに、Virtual Box で作成した VyOSの VMDK ファイルが格納されています。
C:\Users\susugiya\VirtualBox VMs
これを、OCIのObject Storage へ アップロードします。
oci os object put --bucket-name customimage --file 'vyos-1.2.0.vmdk' --name vyos-1.2.0.vmdk --profile ashburn
VMDKファイルを、Custom Image として Import
Object Storage へアップロードした VMDK ファイルの、URLをコピーします。Object Storage のコンソール上から、URLを表示することができます。
Compute メニューの、Custom Image から、vmdk ファイルをImportすることができます
Image Import を押すと、IMPORTING ステータスとなります。Available となるまで一定時間待機します。自自分の環境の場合、500MBのイメージで、約15分ほど待機する必要がありました。
Instanceの設定
IPアドレス
Custom Image を使用して、OCIでInstanceを作成します。自分のVyOSの設定方法が悪かったのか、移行元で設定したeth0が消えており、eth1として認識されてしまったため、DHCPで接続することができない状態です。設定変更するために、VNCコンソールで作成したInstanceに接続します。
Interface eth1 に対して、DHCPを有効にするconfig を設定します
set interfaces ethernet eth1 address dhcp
set interfaces ethernet eth1 description 'OUTSIDE'
OCI上で名前解決が行えるように、DNSサーバの設定を行います
set system name-server 127.0.0.53
設定を保存します
commit
save
これで、InterfaceにIPアドレスが設定され、他のInstanceからSSHが出来るようになりました。
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:00:17:01:08:1c brd ff:ff:ff:ff:ff:ff
inet 10.100.0.3/24 brd 10.100.0.255 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::200:17ff:fe01:81c/64 scope link
valid_lft forever preferred_lft forever
パスワードの変更
安全のために、パスワードを変更します
set system login user vyos authentication plaintext-password <new-password>
設定の保存
commit
save
SSHのポート番号変更
さらに安全のために、SSHのポートを変更します
set service ssh port <port>
delete service ssh port 22
設定の保存
commit
save
参考URL
Custom Imageについて
https://docs.cloud.oracle.com/iaas/Content/Compute/References/bringyourownimage.htm
準仮想化モード用のカスタムイメージの作成
https://docs.cloud.oracle.com/iaas/Content/Compute/References/customimagesparavirtualizedmode.htm
エミュレーションモード用のカスタムイメージの作成
https://docs.cloud.oracle.com/iaas/Content/Compute/References/customimagesemulationmode.htm#drivers
VirtualBoxの仮想マシンを簡単にOracle Cloud(OCI)へBYOIできた
https://qiita.com/feifo/items/6810b5635854175a0c4f
Virtual Box から OCI へ Export
https://docs.oracle.com/cd/E97728_01/E97727/html/ovf.html#ovf-export-oci
VyOS QuickStart Guide
https://support.vyos.io/en/guides/vyos-user-guide/user-guide/quick-start-guide