Vagrantでスポットインスタンスを使う
こんには、@oko_changです。
最近、Vagrant入門ガイドという本も発売されていろいろな環境でVagrantが使用されているようです。
自分の好みのVMを簡単に起動したり、接続したり出来るので色々捗りますね。
私の場合はvagrant-awsを使ってEC2インスタンスを起動することが多いのですが、以下のようの事案が発生しないか心配になってきました。
『最近、AWSの使用率が高いみたいだけど、まさか調子に乗ってオンデマンドインスタンスとか使ってないよね?』
『DevOpsだか何だか知らないけど、いい加減にしなさいよ!!!』
せっかく便利なのに、これは困ります。
ということで、今回はVagrantでスポットインスタンスを使うまでの流れをまとめます。
環境構築
まずはrbenvとrubyのインストールをします。
$ sudo yum install git gcc make zlib-devel libxml2-devel libxslt-devel readline-devel openssl-devel $ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(rbenv init -)"' >> ~/.bashrc $ exec $SHELL -l $ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build $ cd .rbenv/plugins/ruby-build/ $ sudo ./install.sh $ cd $ rbenv install 1.9.3-p448 $ rbenv rehash $ rbenv global 1.9.3-p448 $ gem install aws-sdk $ rbenv rehash $ gem install bundler $ rbenv rehash
次にVagrantのインストールをします。
$ sudo yum groupinstall "Development Tools" $ sudo rpm -ivh http://files.vagrantup.com/packages/b12c7e8814171c1295ef82416ffe51e8a168a244/vagrant_1.3.1_x86_64.rpm
通常であれば、以下のようにvagrant-awsのプラグインをします。
$ vagrant plugin install vagrant-aws $ vagrant plugin list vagrant-aws (0.3.0)
開発版のvagrant-awsのセットアップ
現在リリースされているvagrant-awsはスポットインスタンスに対応していないので、開発版を使います。
~/.vagrant.d/gems/gems/以下に開発版のvagrant-awsを配置します。
$ cd ~/.vagrant.d/gems/gems/ $ git clone -b develop https://github.com/tralamazza/vagrant-aws.git vagrant-aws-0.3.0-develop $ cd ./vagrant-aws-0.3.0-develop/ $ bundle $ bundle exec rake
ダミー用のboxをダウンロードします。
$ vagrant box add dummy https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box
Vagrantfileに設定を書きます。
$ vi Vagrantfile ## okochang configuration Vagrant.require_plugin "vagrant-aws" Vagrant.configure("2") do |config| config.vm.box = "dummy" config.vm.provider :aws do |aws, override| aws.access_key_id = "set your access key id" aws.secret_access_key = "set your secret key" aws.region_config "ap-northeast-1" do |region| region.spot_instance = true region.spot_max_price = "0.020" end aws.region = "ap-northeast-1" aws.instance_type = "m1.small" aws.keypair_name = "okochang-key" aws.security_groups = ["develop-group"] aws.ami = "ami-9763e696" override.ssh.username = "ubuntu" override.ssh.private_key_path = "~/.ssh/yanase-develop.pem" end end
あとは以下のように起動、接続、削除などをします。
$ bundle exec vagrant status $ bundle exec vagrant ssh $ bundle exec vagrant destroy
まとめ
開発版を使えばVagrantからでもスポットインスタンスを使用する事が出来るので、無駄な争いを減らす事が出来ると思います。
通常版でサポートされるのが楽しみですね。
冒頭に紹介した事案はフィクションであり、私個人とはまったく関係ございません。
参考
- https://github.com/tralamazza/vagrant-aws/tree/develop
- http://okochang.hatenablog.jp/entry/2013/05/10/102134
- 作者: 新原雅司
- 出版社/メーカー: 技術評論社
- 発売日: 2013/09/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る