VagrantでVMware vSphere(ESXi)上のVMを操作する「vagrant-vsphere」を試してみた。
Vagrantのproviderは、VirtualBoxやAWSなど様々ありますが、VMware vSphere(ESXi)用のvagrant-vsphereを試してみたので備忘録として残しておきます。
Installation
まずは、vagrant-vsphere pluginのインストールから。githubのREADMEに書いてますが一応。
$ vagrant plugin install vagrant-vsphere
Prepare dummy box
次にダミー用のboxイメージを作成します。vsphereを使う場合は、virtualboxとは違ってローカルにboxイメージは置きません。
$ cd ~/.vagrant.d/gems/gems/vagrant-vsphere-0.8.2/example_box/
example_boxディレクトリ配下にmetadata.jsonファイルがあるので、それをtarコマンドで固めます。
$ cat ./metadata.json { "provider": "vSphere" } $ tar cvzf dummy.box ./metadata.json
作ったboxは、適当なディレクトリに配置します。例えばプロジェクトのrootに置く場合。
$ ls Vagrantfile Vagrantfile.virtualbox Vagrantfile.vsphere dummy.box cookbooks/ nodes/ roles/ conf/ ... ...
Prepare a template in vShpere
次に、VMのひな形になるboxを用意します。以下のリンクを参考に、vSphere上にクローン用のテンプレートイメージとCustomization Specificationを作成します。
Vagrant up
準備が終わったのでVMを作成します。 Vagrantfileはこんな感じで用意します。
$ vi Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = 'dummy' config.vm.box_url = './dummy.box' config.vm.synced_folder ENV["SYNCED_FOLDER"], "/vagrant" config.vm.network 'private_network', ip: 'x.x.x.x' config.ssh.host = 'x.x.x.x' config.vm.provider :vsphere do |vsphere| vsphere.host = 'HOST NAME OF YOUR VSPHERE INSTANCE' vsphere.data_center_name = 'YOUR DATACENTER' vsphere.compute_resource_name = 'YOUR COMPUTE RESOURCE' vsphere.resource_pool_name = 'YOUR RESOURCE POOL' vsphere.data_store_name = 'YOUR DATA STORE' vsphere.template_name = 'YOUR VM TEMPLATE' vsphere.name = 'NEW VM NAME' vsphere.user = 'YOUR VMWARE USER' vsphere.password = ENV["VSPHERE_PASSWORD"] vsphere.insecure = true vsphere.template_name = 'YOUR TEMPLATE NAME' vsphere.customization_spec_name = 'YOUR CUSTOMIZATION SPEC' end end
ENV["SYNCED_FOLDER"]とENV["VSPHERE_PASSWORD"]は、Vagrantfileに直接書きたくないので、環境変数にしてます。 VMを作成する時に指定する感じです。
$ export SYNCED_FOLDER=/your/path $ VSPHERE_PASSWORD=**** vagrant up --provider=vsphere $ vagrant ssh
あとは普通に、vagrant ssh、vagrant destroyとか動きます。vagrant自体の細かい使い方は省略します。
Wrap up
vagrant-vsphereを試してみました。vSphere上のVM作成をコマンドラインからやりたいときに便利です。 (fogのvsphere providerも試してみたんですが、うまく動かなかったのでこっちにしました。)
今では、Chef cookbookのCI環境用に使ってます。 このplugin自体あんまり使ってる事例とかがなくて、試行錯誤しながらとりあえず動くところまではできたのでよかったです。 同じように困っている人がこのブログがお役にたてれば幸いです。ではでは。