くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Vagrant+VirtualBox+UbuntuにCygwin+X Windowsでアクセスする

ノートPCにVMをボカボカ立てていたら、容量がいっぱいになってしまった。。。

VMはサーバに立てて、Windowからcygwinでごにょごにゃしたくなったので、その時の備忘録。

環境は以下の通り

  • サーバ
  • クライアント

CygwinからVirtualBoxを触れるようにする

クライアントから、サーバへ接続するときはsshを利用している。

そのままだとサーバ側の画面が転送できないので、設定が必要になる。

画面が転送できないと、あとでやるVagrantのBoxになるVMイメージがリモートで作成できないのでめんどくさい。。。

keisanbutsuriya.hateblo.jp

画面転送にはX Windows Systemを採用

Cygwinには、「XWin Server」というソフトが入っているので、やるのは設定とオプション付けた呼び出しだけ

# Xサーバの起動
$ run xwin -multiwindow -noclipboard
# X Windows Systemを使うssh接続(userとポートは適当)
$ DISPLAY=:0.0 ssh -X user@192.168.0.100

毎回打つのが面倒なので、aliasをつけておくと楽

export DISPLAY=:0.0
alias runx='run xwin -multiwindow -noclipboard'
alias sshx='ssh -X '

ちゃんとできたかは、geditなどを起動してみるとよい。

UbuntuVagrantをインストールする

インストールはapt-getで。

$ sudo apt-get install -y virtualbox vagrant ruby1.9.1 ruby1.9.1-dev zlib1g-dev
$ sudo gem install nokogiri -v '1.6.7.2'
$ sudo vagrant plugin install vagrant-windows

VagrantRuby制のツールなので、プラグインをインストールするためにgemとかが必要になる。

これら(ruby1.9.1 ruby1.9.1-dev zlib1g-dev)は、vagrant-windowsプラグインのために追加している。

VagrantのBoxを作成してみる

ここらへんを見ながら作成。元記事が素晴らしすぎるので、そのままやればOK!!

tech.nitoyon.com

qiita.com

qiita.com

個人的なメモ。

WinRMを有効にするスクリプト(vagrant_init.bat)

winrm quickconfig -q
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
winrm set winrm/config @{MaxTimeoutms="1800000"}
winrm set winrm/config/service @{AllowUnencrypted="true"}
winrm set winrm/config/service/auth @{Basic="true"}
sc config WinRM start= auto

Boxに含めるデフォルトのVagrantfile(Vagrantfile.txt)

Vagrant.configure("2") do |config|
  config.vm.guest = :windows
end

Vagrantのコマンド

# boxの作成
$ vagrant package --base "Win7Pro_x86" --vagrantfile Vagrantfile.txt
# boxの追加
$ vagrant box add Win7Pro_x86 package.box
# boxの確認
$ vagrant box list

# 初期化
$ vagrant init Win7Pro_x86
# 起動
$ vagrant up
# 停止
$ vagrant halt
# 破棄
$ vagrant destroy

作ったBoxで起動&接続してみる

こっちも参考サイト様どおりやればOK!

最小のVagrantfileは以下な感じ

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  # Every Vagrant virtual environment requires a box to build off
  config.vm.box = "Win7Pro_x86"
  # Using winrm communicator
  config.vm.communicator = "winrm"
  # Port forward RDP
  config.vm.network :forwarded_port, guest: 3389, host: 13389
end

設定は、RDPのポートフォワーディングだけ。なので、固定IPは不要ー

なので、ゲストOSに接続するときは<ホストOSのIP>:13389といった感じで、ポート指定で接続すればOK!

とりあえず、RDPで接続できるようになった!!以上!!

参考にしたサイト様