Vagrant 1.6 プレビュー機能:Windows ゲストOS

Vagrant Blog:Feature Preview: Windows Guests

Vagrant 1.6 では、Vagrantに重要な機能が追加されます。
Linux環境と同様に簡単にWindows環境を管理することがVagrantで可能になり、Varantとして公式にサポートします。

勘違いしないでください、Windows上でVagrantを使用することはサポートしています。
Vagrantは一年間Windows上での動作をサポートしてきました。
Vagrant 1.6 では、Vagrant 環境内での(VirtualBox、Hyper-V、EC2上での)Windows動作をサポートします。

Vagrant 1.6 でWindowsゲストのサポートを提供し、Linux環境同様に、Windows環境をサインアップし、ソフトウェアのインストールや設定にPowerShellスクリプト、Chef、Pupetなどを使うことができます。

Linux環境では、Vagrant ssh、Windowsゲストには、Windows環境にリモートデスクトップにコマンド一つでアクセスできるVagrant rdpが提供されます。

VagrantはWindowsへの通信に、SSHまたはWinRMを使用します。
WinRMは、とても便利です。

WinRMのサポートは、新しい1.6からです

Vagrant.configure("2") do |config|
	# ...
	config.vm.communicator = "winrm"
end

Vagrant Cloudで、Vagrant Shareをやってみた

Vagrantのバージョン確認

Vagrant のバージョンが、1.5以降である必要があります。次のコマンドでVagrantのバージョンを確認しましょう。

vagrant -v

次に、Vagrant Cloudで、アカウントを作成します。
作成が終わったら、Vagrantでの操作に戻ります。

Vagrant upの準備

vagrant shareするには、httpサーバーを動かしている必要があるので、httpdをインストールするVagrantfileを用意する。ポートフォワードを使用することにして、次のようなVagrantfileを使った。

Vagrantfile

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "hashicorp/precise32"
  config.vm.network "forwarded_port", guest: 80, host: 8080
  config.vm.provision:shell,:inline=> <<-EOT
    yum update -y
    service iptables stop
    chkconfig iptables off
  
    yum -y install httpd
    chkconfig httpd on
    service httpd start
  EOT
end

ファイルを準備したら、仮想マシンを起動する。

vagrant up

 

vagrant login

vagrant shareするには、Vagrant Cloudにログインしておく必要があるので、次のコマンドでログインする。

vagrant login

 

vagrant share

ここまでで準備が完了なので、vagrant shareしてみる。

vagrant share

次のように結果が出力されるので、ブラウザでアクセスしてみる。
image

 

http://slick-moose-8753.vagrantshare.comに接続すると・・・

image

 

無事、アクセスできますね。これは便利!!

ちなみに、Vagrant Cloudで確認すると、次のように状態管理されていることが確認できます。

image

 

後片付け

Ctrl+c

で、Varant Shareを終了させる。
Ctrl+cで終了させると、Vagrant Cloudにも連携して、割り当てが解除される。

ウィンドウを×で閉じちゃうと、Vagrant shareは終了して、アクセスできなくなるけど、1時間たつまでは、Vagrant Cloudにそのまま情報が残る。アクセスできないし、1時間で解除されるから×で閉じてもいいけど、気持ち悪いのでおとなしく、Ctrl+cで止めましょう。

まとめ

ローカルで開発して、それの動作確認をインターネットごしにできるのは、開発用とだけでみると素敵に楽すぎる。

vagrant cloudの「Shares」概要:Vagrant環境の共有

Sharesは、インターネットにネットワークで接続している人が誰でもVagrant動作環境に接続共有できるようにするものです。
いくつかの共有タイプがあります。

HTTP Sharing

デフォルトで、Vagrant Shareは世界中の誰でもVagrant環境にHTTPアクセスできるように共有します。作成したURLは、公にアクセスできるようにし、アクセスするのにVagrantは不要でブラウザだけでアクセスできます。

$ vagrant share
==> default: Local HTTP port: 5000
    default: Local HTTPS port: disabled
==> default: Your Vagrant Share is running!
==> default: URL: http://frosty-weasel-0857.vagrantshare.com

一度、shareを作成すると、比較的わかりにくいURLが出力されます。このURLは直接起動したVagrant環境にルーティングします。将来的には、アクセス生業や監査ログ機能が追加される予定です。

SSH Access

Vagrant Shareは、1つフラグをたてるだけで、誰でも簡単にVagrant環境にSSHできるようにします。

SSH Accessはデフォルトでは共有されます。SSH共有を有効にするには、[vagrant share]に、[—ssh]フラグをつけなければなりません

$ vagrant share –ssh
==> default: SSH Port: 22
==> default: Generating new SSH key…
    default: Please enter a password to encrypt the key:
    default: Repeat the password to confirm:
    default: Inserting generated SSH key into machine…
==> default: Checking authentication and authorization…
==> default: Creating Vagrant Share session…
    default: Share will be at: awful-squirrel-9454
==> default: Your Vagrant Share is running!

[–ssh]フラグを立てると、VagrantはSSH Access用に新しいSSHキーペアを生成します。公開鍵は自動的にVagrant環境に挿入されます。非公開鍵は、Vagrant Share接続管理用サーバーにアップロードされます。パスワードで暗号化された非公開鍵はどこにもアップロードされません。

SSH Accessがshareされると、Vagrant環境にアクセスしたい人は、SSHするために[vagrant connect]を使用します。

$ vagrant connect --ssh awful-squirrel-9454
Loading share 'awful-squirrel-9454'...
Password for the private key:
Executing SSH...
Welcome to Ubuntu 12.04.1 LTS
 * Documentation:  https://help.ubuntu.com/
Last login: Wed Feb 26 08:38:55 2014 from 192.168.148.1
vagrant@precise64:/vagrant$

Vagrant Connect

Vagrant Shareは、TCP/UDP接続を共有できます。

[vagrant connect SHARE-NAME]を実行して共有します。

$ vagrant connect awful-squirrel-9454
==> connect: Connecting to: awful-squirrel-9454
==> connect: Starting a VM for a static connect IP.
    connect: The machine is booted and ready!
==> connect: Connect is running!
==> connect: SOCKS address: 127.0.0.1:62167
==> connect: Machine IP: 172.16.0.2
==> connect:
==> connect: Press Ctrl-C to stop connection.
...

Vagrant Cloud使ってみた:Boxファイルの検索と共有

Boxes

1.Boxesを探して使用する

Vagrant Cloudの主な使用法は、Vagrant環境で必要となるテクノロジーを含んだboxを探すことです。

  1. Discover page]にアクセスします。

    image

  2. 欲しいboxを検索するか、左側にある[featured]上のナビゲーションを使用します。
  3. boxを見つけたら、名前をクリックすると詳細を確認できます。

    image

  4. 使用する準備ができたら、名前をコピーします。(たとえば、[hashicorp/precise64"])

    vagrant init hashicorp/precise64

    のようにVagrantプロジェクトを初期化します。または、すでにVagrantプロジェクトを作成している場合は、Vagrantfileに使用するboxファイルを適用します。
    config.vm.box = “hashicorp/precise64"

2.新しいBoxを作成する

Vagrant Cloudは、boxを共有するのに役立ちます。実際の物理的なboxファイルの作成方法については、Vagrantのドキュメント[creating base boxes]を参照してください。

物理的なboxファイルを作成し、Vagrantでシンプルに使用するために、Vagrant Cloudに追加します。

  1. Vagrant Cloudにログインします。
  2. 右上にある[Create Box]をクリックします。

    image

  3. 必要事項を入力します。boxファイル名と、概要と詳細説明を記入します。

    image

  4. boxのバージョン番号を記入します。

    image

  5. 対応するプロバイダーを登録します。

    image

    登録するには、対応するプロバイダー名と、Boxファイルの格納URLを指定します。
    ※Vagrant Cloudでストレージ領域を提供してくれるわけじゃないのね。。。
    ベータ中は内部的にテストをしていて、将来的には提供予定(参考

    image

  6. [Release now]ボタンをクリックします。

    image

Vagrant 1.5とVagrant Cloudがリリース

Vagrantにいくつかの新機能が追加された新しいメジャーリリース版であるVagrant 1.5がリリースされました。安定性に注力されていて、今回のリリースでより安定したようです。

また、Varant Cloudが発表されました。
Vagrant Cloudは、Vagrant環境をCreateし、shareし、discoverするための場所です。Vagrant Cloudは、boxとVagrand Shareを管理する場所です。

Vagrant 1.5は後方互換が導入されています。いくつかの設定オプションが変更されていますが、以前動作しますし、廃止予定警告が出力されます。将来的なリリースでは、オプションが削除されます。

Vagrant 1.5は今までで一番大きな機能追加がされています。また、たくさんのバグが修正されました。

主な機能

Changelog

https://github.com/mitchellh/vagrant/blob/master/CHANGELOG.mdで紹介されているVagrant 1.5での変更内容。

破壊的変更

  • プロビジョナー/ansible:vagrantプロビジョン手順でマシンを起動する際に影響する、(Vagrantfileから取得する)マシン名を標準で安全な値を設定するように保障されるようになりました。

DEPRECATIONS

  • プロビジョナー/chef-solo:[nfs]設定は、[synced_folder_type]に置き換えられました。将来バージョンで、[nfs]設定は削除されます。
  • プロビジョナー/pupet:[nfs]設定は、、[synced_folder_type]に置き換えられました。将来バージョンで、[nfs]設定は削除されます。

機能追加

  • 新しいプロバイダー
    Hyper-V。Hyper-Vを有効にしているWindowsマシーンで、VagrantはHyper-V仮想マシンを管理できるようになりました。
  • 新しいゲスト
    Funtoo(ホスト名とネットワークの変更をサポート)
  • 新しいゲスト
    NetBSD
  • 新しいゲスト
    TinyCore Linux。network、halt、rsyncやBoot2Dockerと動作したりできます。
  • 新しい同期フォルダーの種類
    rsync。ゲストマシンへの一方向に一回だけ同期します。新しいコマンド[vagrant rsync]と[vagrant rsync-auto]でフォルダーを同期できます。
  • 新しい同期フォルダーの種類
    Windowsホスト上のSMBを使用して双方向のフォルダー同期を可能にします。
  • パスワードベースのSSH認証。通常の仮想マシンのイメージをVarantで使用できるようになります。さらにVagrantは自動的にマシンにkeypairを挿入します。
  • プラグインバージョンの指定で、バージョンを範囲で指定できるようになりました。
    (例)vagrant plugin install foo –plugin-version “> 1.0, < 1.1”
  • ゲストで[guest capabilities]を使うように、ホストを指定した操作[host capabilities]ができるようになりました。これにより、ホストを対象としたプラグインを開発しやすくなります。
  • サブVM設定内のプロビジョナーやプロバイダーをオーバーライドできるようになりました。
  • プロバイダー/virtualbox
    プロバイダー特有の設定[cpu]で、VM上のCPU数を設定できるようになりました。
  • プロビジョナー/docker
    docker buildを使用してイメージをビルドできるようになりました。

機能強化(抜粋)

  • コマンド[vagrant pluguin uninstall]:複数プラグインのアンインストールが可能になりました。
  • コマンド[vagrant pluguin install]:複数プラグインのインストールが可能になりました。