もうちょいコード化やりますか 上

もうちいっとばかりコード化をやりますか。
前回はWeb+DBのサーバ/インフラ徹底攻略に沿って進めてただけなので、思ったより理解度が低いかな~って気がするので、Vagrantやその他もろもろのインストールは飛ばしますが、改めて最初からやる。

まずは自分のBOXを作ろう

ちょっとまって、そのBOX大丈夫?という事で、自分で作っておきますよっと。
ただメンドクサイことにUbuntuserverにはX Windowは入れていないのと、Windows環境ではVMwareなのだよ。

環境
Ubuntu14
VirualBOX 4.3(apt)
Vagrant 1.6.5

Windows8.1
VMware Player

参考サイト
CentOS 6.5 x86_64 minimalのVagrant boxを作ってみた

参考サイトを参考にBOXに向いたサーバーを構築します。
VMwareからVirtuslBOXに移行してVagrantで取り込みます。
VMはというと、yum updateはしたけど、その他パッケージ類はまったく入れてません。

VMwareからVirtualBOXの移行について

VMwareに付属しているOVFToolを使います。
Winキー+R でcmdを叩きましょう。OVFTOOLのパスはそれぞれで確認しよう。

C:\Program Files (x86)\VMware\VMware Player\OVFTool>
C:\Program Files (x86)\VMware\VMware Player\OVFTool>ovftool.exe "D:\ドキュメント
\Virtual Machines\vm\vm.vmx" "C:\Users\takeken\Desktop"
Opening VMX source: D:\ドキュメント\Virtual Machines\vm\vm.vmx
Opening OVF target: C:\Users\takeken\Desktop
Writing OVF package: C:\Users\takeken\Desktop\vm\vm.ovf
Progress: 2%

実行は至って簡単でexeを1回実行するだけ。

Transfer Completed
Completed successfully

と表示されれば完了です。

vm.mf
vm.ovf
vm-disk1.vmdk
vm-file1.iso

上記のように4個のファイルが出来上がっていると思いますが、mfファイルは不要らしくあると失敗するらしいので削除してしまいます。

以上です!

では本題に戻って、Win機の上のVMwareで作っていたベースとなるCentOSをサーバー機のUbuntuへ飛ばしてBOX化させるという手順に進みます。

 

BOXを作ってみよう

・・・

Ubuntuサーバーにファイルの移動が終わりました。FileZilaを使ってSFTPでサーバー機へ飛ばしています。何の設定も不要なので、とっても楽です。

vagrant@ubuntu:~/vmware$ ls
vm-disk1.vmdk  vm.ovf

では、このovfファイルをVirtualBOXにインポートしましょう。と、ここまではサクサク進んで良かったのですが、ここからは結構苦戦したというか、久しぶりに数日間かかりました。
まずはWin機のVMwareから取り込んだOVFファイルからVirtualBOXにインポートします。

vagrant@ubuntu:/home/takeken/vmware$ vboxmanage import vm.ovf
vagrant@ubuntu:~/vmware$ vboxmanage import vm.ovf
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting /home/vagrant/vmware/vm.ovf...
OK.
Disks:  vmdisk1 20      1214775296      http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized   vm-disk1.vmdk   508630528       -1
Virtual system 0:
 0: Suggested OS type: "RedHat_64"
    (change with "--vsys 0 --ostype <type>"; use "list ostypes" to list all possible values)
 1: Suggested VM name "vm"
    (change with "--vsys 0 --vmname <name>")
 2: Number of CPUs: 1
    (change with "--vsys 0 --cpus <n>")
 3: Guest memory: 1024 MB
    (change with "--vsys 0 --memory <MB>")
 4: USB controller
    (disable with "--vsys 0 --unit 4 --ignore")
 5: Network adapter: orig nat, config 5, extra type=nat
 6: SCSI controller, type LsiLogic
    (change with "--vsys 0 --unit 6 --scsitype {BusLogic|LsiLogic}";
    disable with "--vsys 0 --unit 6 --ignore")
 7: Hard disk image: source image=vm-disk1.vmdk, target path=/home/vagrant/VirtualBox VMs/vm/vm-disk1.vmdk, controller=6;channel=0
    (change target path with "--vsys 0 --unit 7 --disk path";
    disable with "--vsys 0 --unit 7 --ignore")
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Successfully imported the appliance.

取り込みは終了。

vagrant@ubuntu:~/vmware$ vboxmanage showvminfo vm
Name:            vm
Groups:          /
Guest OS:        Red Hat (64 bit)
UUID:            53ad5fdb-1832-47a4-ab61-d7eee907b0e2
Config file:     /home/vagrant/VirtualBox VMs/vm/vm.vbox
Snapshot folder: /home/vagrant/VirtualBox VMs/vm/Snapshots
Log folder:      /home/vagrant/VirtualBox VMs/vm/Logs
Hardware UUID:   53ad5fdb-1832-47a4-ab61-d7eee907b0e2
Memory size:     1024MB

ここまではいいのですが。

パッケージーング!
なんだか上手くいきそうだ。そんな雰囲気がしている。
とか思ってひたすら繰り返しつつ、結局数日間もかかったっていう。

vagrant@ubuntu:/home/takeken/vmware$ sudo vagrant package --base vm
==> vm: Exporting VM...
==> vm: Compressing package to: /home/takeken/vmware/package.box

できあがったものをvagrant box add でBOXとして追加します。

vagrant@ubuntu:~/vmware$ vagrant box add cent_base package.box
==> box: Adding box 'cent_base' (v0) for provider:
    box: Downloading: file:///home/vagrant/vmware/package.box
==> box: Successfully added box 'cent_base' (v0) for 'virtualbox'!

では作業ディレクトリにうつって、このBoxでコード化物語を始めた・・・かったのだが。

vagrant@ubuntu:~/vmware$ vagrant box list
cent_base (virtualbox, 0)


vagrant@ubuntu:~/vmware$ vagrant init cent_base
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

ググると色々でてくるのだけれど、どれもダメだった。
以下のログ。

root@ubuntu:~/test-infra-cent# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...

Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period.

If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong.

If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well.

If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

たまたま見つけた方法でインストールしたVMの設定を弄ってみる。
Vagrantでは無理だけど、Virtualboxから起動してVNCで繋ぐことはできるようだ。

 

起動がうまくいかない!

QEMU、Dockerでも全く問題なかった部分で躓いているようです。
今回はWindowsとLinuxを、VMwareとVirtualboxをまたいでいたりといろいろ不確定要素が高いのですが、それでもこんだけ嵌るのは久し振りだ。

たまたま起承転と進んでるようだが、ぜんぜん嬉しくなー!

転という事だし、もうWindowsは頼らない。GUIには頼らない。

今までの事は無かったかのように進めよう。

・・・

 

心機一転、バージョンもアップして、さあ進めるか!とガッツリ気合ものって絶好調だったが、今度はVNCが繋がらなくなってしまった。(´・ω・`)
設定は間違っていない・・・と思うんだ・・が・・

 

こんなことに数時間もかけてしまった。なぜググるという事を怠ってしまったのか。
いや、怠っていたのではなく、VRDE server という部分をスルーしていたのだ。

 

繋ぐ方法だが

結論だけ、書く。

リモデスだったリモデスだったリモデスだったリモデスだった
リモデスだったリモデスだったリモデスだったリモデスだった

この数時間 VRDE でググらなかった。
VNCのことばっかりググっていた。

VRDEでググったのはほんの数分前だった。

この数時間は無意味だった。

・・・

 

では方法も分かったことだし気を取り直してVMの作成に進もう~。
時間は戻らないのだ。多分、入れなおしたVirtualboxはaptではなくDebパッケージでインストールしたのが原因と思われ。

 

CUIだけでVirtualboxのVMを作る

VMの作り方はQEMUと同じように、CPUやメモリなどをレシピのようなものを流し込んでいく感じです。

さっそくCPUから、CPUは32ビットで進めています。

VBoxManage createvm \
    --name cent \
    --ostype  Linux \
    --register \
    --basefolder /root/cent

メモリは1G、Vramは32Mです。

VBoxManage modifyvm cent --memory 1024

VBoxManage modifyvm cent --vram 32

NICはブリッジでいくので

VBoxManage modifyvm cent --nic1 bridged --bridgeadapter1 em1

HDDを作成。

VBoxManage createhd --filename /root/cent/cent.vdi --size 20000 --format VDI

ストレージコントローラを作成。

VBoxManage storagectl cent --name cent_sata1 --add sata --bootable on

ポート1にさっき作ったHDD、ポート2にDVDをつけます。

VBoxManage storageattach cent \
    --storagectl cent_sata1 \
    --port 1                \
    --type hdd              \
    --medium /root/cent/cent.vdi
VBoxManage storageattach cent \
--storagectl cent_sata1 \
--port 2 \
--type dvddrive \
--medium /home/vagrant/CentOS-6.5-i386-bin-DVD1.iso

VRDEの設定をします。

VBoxManage modifyvm cent \
--vrde on \
--vrdeport 32108 \
--vrdeaddress 192.168.24.200 \
--vrdereusecon on

あとはvboxheadless -s VM名で起動してリモデスで繋ぎます。
恐ろしいことに、コード化の要素はいまだになし。。。

vagrant

インストールは省略します。

今回の日記の冒頭に戻ります。

 

まずは自分のBOXを作ろう

ちょっとまって、そのBOX大丈夫?という事で、自分で作っておきますよっと。
ただメンドクサイことにUbuntuserverにはX Windowは入れていないのと、Windows環境ではVMwareなのだよ。
なので、サーバー機のCLI環境でVMを作成しました。

環境
Ubuntu14
VirualBOX 4.3.18
Vagrant 1.6.5

参考サイト
CentOS 6.5 x86_64 minimalのVagrant boxを作ってみた

参考サイトを参考にBOXに向いたサーバーを構築します。
VMwareからVirtuslBOXに移行してVagrantで取り込みます。
VMはというと、yum updateはしたけど、その他パッケージ類はまったく入れてません。

いったん最低限の設定だけをした後にパッケージ化してみて、起動したところ今までなかったログがでました。

Please verify that the guest additions are properly installed in the guest

VirutalboxのGuestAdditionを入れてくれと出ました。実はそもそもVmwareから移行する方法を試していた時点でこれが原因で動かないのかな?なんて推測はしていたのだが。
そもそもこのエラーすらでなくて、デバッグモードで起動してもよく分からんところでループしてたもんだから、原因の特定はできていなかったのだね。

でも、これでGuestAdditionが原因な可能性は高まった。もしかするとVMwareから取り込んだときもmodifyvmで変更してGuestAdditionをインストールすれば上手くいくかもしれないが、また気がむいたら。
今はこれ以上追及しにゃい。

VBoxGuestAdditions インストール

やり方はとくに難しくなく、locateでパスを調べてCD-ROMドライブにマウントすればOK。
ゲスト側でdkmsをインストールして、先にすすめよう。

root@ubuntu:~/cent# locate VBoxGuestAdditions.iso
/usr/share/virtualbox/VBoxGuestAdditions.iso
root@ubuntu:~/cent# VBoxManage storageattach cent --storagectl cent_sata1 --port 2 --type dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso
[root@localhost ~]# mkdir /mnt/cd
[root@localhost ~]# mount /dev/cdrom /mnt/cd
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
[root@localhost ~]# ls /mnt/cd
32Bit        OS2                       VBoxWindowsAdditions-amd64.exe  autorun.sh
64Bit        VBoxLinuxAdditions.run    VBoxWindowsAdditions-x86.exe    cert
AUTORUN.INF  VBoxSolarisAdditions.pkg  VBoxWindowsAdditions.exe        runasroot.sh
[root@localhost ~]# sh /mnt/cd/VBoxLinuxAdditions.run --nox11
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.18 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
add_symlink: link file /usr/lib/VBoxGuestAdditions already exists
Installing additional modules ...
Removing existing VirtualBox DKMS kernel modules           [  OK  ]
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules     [  OK  ]
Doing non-kernel setup of the Guest Additions              [  OK  ]
Starting the VirtualBox Guest Additions                    [  OK  ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping

 

では、改めてBOXを作りましょうか。

一気に載せます~。

root@ubuntu:~/cent# vagrant package --base cent
==> cent: Exporting VM...
==> cent: Compressing package to: /root/cent/package.box
root@ubuntu:~/cent# vagrant box add cenb /root/cent/package.box
==> box: Adding box 'cenb' (v0) for provider:
    box: Downloading: file:///root/cent/package.box
==> box: Successfully added box 'cenb' (v0) for 'virtualbox'!
root@ubuntu:~/cent# vagrant init cenb
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
root@ubuntu:~/cent# vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'cenb'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: cent_default_1415667028644_91438
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => /root/cent

始めて完走!ついにここまで来ました。
接続してみましょう~。

 

・・・

トゥットゥル ━━(゚∀゚)━━━━━!!

root@ubuntu:~/cent# vagrant ssh
[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS release 6.6 (Final)

やっとできた(´・ω・`)

やっとVagrantに入ります。が、長くなりすぎたので続きは次回に。

参考サイト

@itoeの日記
CUIからVirtualBoxをインストール&VMを操作する

Qiita zakkied
VirtualBox の VM をコマンドラインから管理する

f99aq8oveのブログ
FreeBSD なサーバーに VirtualBox を入れて、その上で Ubuntu server を動かす

oracle Virtualbox 公式

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です