ubuntu12.04にVagrantのインストールからポートフォワード設定して外部からsshするまで
ubuntu12.04にvgrantをインストール
環境
- ホストOS : ubuntu 12.04(32bit)
- VirtualBox : VirtualBox 4.3.14 for Linux hosts
- Vagrant : vagrant_1.6.3_i686.deb
VirtualBoxのインストール
VMアプリケーションのインストール
ここからVirtualBoxをダウンロード
今回はUbuntu 12.04 LTS ("Precise Pangolin") i386を選択ダウンロードしたdebファイルをインストール
$ sudo dpkg -i virtualbox-4.3_4.3.14-95030~Ubuntu~precise_i386.deb
依存関係に問題があった場合は
$ sudo dpkg -r virtualbox-4.3_4.3.14-95030~Ubuntu~precise_i386.deb
でアンインストールして、gdebiやパッケージセンターを使ってインストールする
Vagrantのインストール
ターミナルから VM を快適に扱うためのアプリケーション。
Vagrantfile(VM用設定)が融通効いて共有しやすいことや、
プラットフォームによらず一貫性のあるコマンドで扱えることがウリ。
http://www.vagrantup.com/downloads.htmlからインストール(2014/7/31時点のバージョンは1.6.3)
DEBの32-bitを選択するとvagrant_1.6.3_i686.debというファイルがダウンロードされた。インストール
$ dpkg -i vagrant_1.6.3_i686.deb
ひな形となるboxの用意
Vagrantでは予め用意された仮想マシンの雛形を利用して仮想マシンを構築する。
下記はQuick startでよく使われるUbuntuの仮想マシンの雛形だが、他にも、以下のサイトに大量のboxが用意されている。
http://www.vagrantbox.es/
今回はUbuntu Server 12.10 amd64 Minimal (VirtualBox 4.2.6)を使ってみる。
boxを追加
$ sudo vagrant box add ubuntu12.10MinimalServer http://goo.gl/wxdwM
==> box: Adding box 'ubuntu12.10MinimalServer' (v0) for provider:
box: Downloading: http://goo.gl/wxdwM
==> box: Successfully added box 'ubuntu12.10MinimalServer' (v0) for 'virtualbox'!
boxファイルを確認
$ sudo vagrant box list
ubuntu12.10MinimalServer (virtualbox, 0)
仮想マシン作成
仮想マシンの作成は、仮想マシンの設定ファイルを作成するディレクトリ作成、初期化、設定ファイル編集、起動の順に行う。
仮想マシン初期化
$ sudo vagrant init ubuntu12.10MinimalServer
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.
長々と書いてあるが、準備OKというメッセージだと思う。
作成されたVagrantfileの以下の部分のコメントアウトを外す
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--memory", "1024"]
end
仮想マシンを起動する
$ sudo vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu12.10MinimalServer'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: VMGuest_default_1406977872161_53660
==> default: Fixed port collision for 22 => 2222. Now on port 2201.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2201 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2201
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
default: The guest additions on this VM do not match the installed version of
default: VirtualBox! In most cases this is fine, but in rare cases it can
default: prevent things such as shared folders from working properly. If you see
default: shared folder errors, please make sure the guest additions within the
default: virtual machine match the version of VirtualBox you have installed on
default: your host and reload your VM.
default:
default: Guest Additions Version: 4.2.6
default: VirtualBox Version: 4.3
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /home/hoge/VMGuest
IPアドレスを192.168.33.11で登録したのでホストからsshしてみる(初期ユーザー/パスワード: vagrant/vagrant)
$ ssh vagrant@192.168.33.11
Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-21-generic x86_64)
* Documentation: https://help.ubuntu.com/
Your Ubuntu release is not supported anymore.
For upgrade information, please visit:
http://www.ubuntu.com/releaseendoflife
New release '13.04' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Sat Aug 2 08:13:09 2014 from 192.168.33.1
vagrant@vagrant:~$
外出先などからドメインやグローバルアドレスを指定してsshでログインしたい Vagrantfileに以下のような記述のコメントアウトを外す
config.vm.network "forwarded_port", guest: 22, host: 2222
これはホストマシンの2222番ポートに来たTCPのアクセスをゲストの80に転送する設定。 ゲストマシンでファイアウォールの設定がある場合はする、私はufwを使っているので 以下を実行して2222ポートを開放した
$ sudo ufw allow 2222/tcp
また、ルーターの設定を変更する必要がある。 Buffaloのルーターなら
「ログイン」 → 「ゲーム&アプリ」 → 「ポート変換」から
Internet側IPアドレスを「エアステーションのInternet側IPアドレス」
プロトコルを「任意のTCP/UDPポート」で2020を指定
LAN側IPアドレスに「ホストマシンのIPアドレス」を指定
LAN側ポートに「2020」を指定
これで、外出先でも
$ ssh 「ドメイン名 または グローバルIP」でログインすることができる。
ポートの指定を2020で、ログインID/パスワードはvgrant/vgrantです。
追記
sshでログインしてapt-get updateしようとすると、リポジトリが古いためエラーが出る。 以下のように編集する。
$ sudo sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
$ sudo sed -i -e 's/br.old-releases.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
$ sudo apt-get update; sudo apt-get upgrade -y
これでアップグレードできる
基本的に何かをインストールしたい場合はrootになって作業することが好ましい。 sudoコマンドを使ってインストールすると/root/にインストールされるのを避ける為。 それにsudo地獄面倒くさいから。
一般的なコマンド
スリープ
$ vagrant suspend
スリープ復帰
$ vagrant resume
終了
$ vagrant halt
再起動
$ vagrant reload
仮想マシンの削除
$ vagrant destroy
$ sudo vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Destroying VM and associated drives...
削除が一瞬で終わってしまう、ちょっと怖い
参考
本家 docs
インストール インストールや設定
box box
Packerのインストール(未実行)
VM用の マシンイメージを作成するためのアプリケーション。 設定1つでマルチプラットフォーム(VirtualBox、VMware、EC2 AMIなど)のイメージを作成できるのがウリ。