とても便利でした。
あらまし
itamaeとserverspecを使って環境構築スクリプトを書いていて、砂場がほしくなったのでローカルマシンにVMを立てたかったのですが、職場のルール上ダメとのこと。
ローカルがダメならクラウド上に立てればいいじゃない!
ということでIDCFクラウドで仮想マシンを1つ作ることに。
Vagrantfile
基本的にこちらの記事通りに進めていったのですが、何やらエラーが出てしまいました。
networkが判別できずに落ちているようだったので、network_id
かnetwork_name
を設定しなければならないようです。
あとはそのままだとマシン名が人に優しくない名前になってしまうので設定しておきます。
管理コンソール上の表示名と合わせておくと、管理コンソールから作成したときと同じになるので分かりやすいです。
フォルダの同期設定もしておくと便利です。
vagrant up
やvagrant reload
を行うと設定したホストマシン上のフォルダとゲストマシン上のフォルダの同期を取ってくれます。
筆者はhomeディレクトリ直下にVagrantfileを置いてしまったため、初期設定でhomeディレクトリ以下全てを同期してくれようとしてひどい目にあい、同期先・元ともに変更しています。
OSはCentOSに変えています。
こちら、Vagrant向けのテンプレートを用意してくださっているので、それを利用しました。
上記の諸々を反映して以下のようになりました。
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-6.8"
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder "./vagrant_data", "/home/vagrant/synced_data", type: "rsync"
config.vm.provider :cloudstack do |cloudstack, override|
# ダミーBox
override.vm.box = "dummy"
override.vm.box_url = "https://github.com/klarna/vagrant-cloudstack/raw/master/dummy.box"
# CloudStackAPIを使用するためのエンドポイント・認証情報
cloudstack.host = "compute.jp-east.idcfcloud.com"
cloudstack.path = "/client/api"
cloudstack.port = "443"
cloudstack.scheme = "https"
cloudstack.api_key = "API Keyをここに記入"
cloudstack.secret_key = "Secret Keyをここに記入"
# 仮想マシン作成のパラメータ
override.vm.hostname = "マシン名を記入"
cloudstack.display_name = "管理コンソール上の表示名を記入"
cloudstack.template_name = "CentOS 6.8 64-bit for Vagrant" # <= Vagrant向けテンプレート
cloudstack.zone_name = "joule"
cloudstack.network_name = "joule-network1" # <= 必須!
cloudstack.service_offering_name = "light.S1"
# 仮想マシンへの接続に必要なネットワークの設定
cloudstack.pf_ip_address_id = "IPアドレスのIDを記入"
cloudstack.pf_public_port = "22"
cloudstack.pf_private_port = "22"
cloudstack.keypair = "SSH鍵の名前を記入"
override.ssh.private_key_path = "SSHの秘密鍵のパスを記入"
override.ssh.username = "vagrant" # <= Vagrant向けテンプレート使用に伴いユーザーを設定
end
end
使ってみて
作成・削除ともにすぐに終わりますし、砂場用途にはかなりもってこいだと感じました。
管理コンソールからやると何かと面倒ですが、コマンド1つで出来るようになると使い勝手が格段に良くなりますね。
何かの機会があれば個人でも使ってみたいです。