Aqutras Members' Blog

株式会社アキュトラスのメンバーが、技術情報などを楽しく書いています。

vagrantのおすすめプラグイン with Itamae

はじめに

お久しぶりです!vitaminです!
最近、社内でインフラ系のお仕事をさせて頂くことが多くなってきました。
アキュでは開発環境の構築をItamaeを利用して行えるようにしています。 インフラ系の仕事の一つとして、そのレシピ作成や修正を行っています。
今回は、vagrant を利用して、itamaeのレシピ作成を効率的に行う方法を紹介したいと思います。

itamaeとvagrant

itamae は、サーバの設定を自動化するためのツールです。
ChefやAnssibleと似たようなものですね。
それらにも共通して言えるのですが、レシピの作成をする際に、実サーバや仮想サーバに対して実行しながら開発することは効率的ではないです。
何度も実行するために、サーバの再インストールやインストールしたものをアンインストールするのは非常に手間となってしまいます。
例えば、MySQLのインストールレシピを作成し、インストール後に設定でコケてしまったのでレシピを修正して、一旦アンインストールして、またインストールして、またコケて、、、というような繰り返しを行うことになってしまいます。最後に、インストール直後でも動くようにOSから入れなおしたり。。。
とてもつらい作業ですね。。。
そこで、vagrantを使えば、vagrant upvagrant destroyを実行するだけで、サーバの再構築を行うことができます。
この記事では、更にvagrantを利用したItamaeレシピの開発を効率化する術として、vagrant pluginを紹介したいと思います。

vagrant plugin

vagrant plugin とは

vagrant pluginを利用することで、vagrant に機能を追加し、より便利にする事ができます。
プラグインのインストールは、vagrant plugin install <プラグイン名>で行うことができます。
ここからは、自分がいつも利用しているおすすめのpluginを紹介したいと思います。

vagrant-itamae

概要

vagrant-itamae は、vagrant upvagrant provisionの際に自動でitamaeの実行を行ってくれます。
これはかなり有名 だと思います。
通常のitamaeの実行は、ホストOS側にRubyとitamaeが入っていれば、itamae sshで実行することが出来ます。
しかし、Windowsでvagrantを利用していたりすると、ホストOSにRubyが入っていなかったりして、実行出来ないことがあります。
そのような場合にこのプラグインを入れておくと、Ruby要らずで簡単に実行してくれます。

利用方法

Vagrantfileに以下を記述します。(Itamaeレシピは作成済みとします。)

config.vm.provision :itamae do |itamae|
    itamae.sudo    = true
    itamae.shell   = '/bin/sh'
    itamae.recipes = './recipe.rb'
    itamae.json    = './node.json'
end

そして、vagrant up または vagrant provision を実行するだけです。

sahara

概要

saharaは、vagrantの状態を管理するためのプラグインです。
現在の状態をcommitしたり、前の状態にrollbackしたりすることが出来ます。
例えば、Railsの環境を構築するために、RubyとMySQLをインストールするレシピを構築するとします。
そして、Rubyのレシピは完成して、MySQLのレシピを作成するという時、テストのたびにもう一度Rubyのインストールも実行してしまうのは効率が悪いです。
そこで、Rubyをインストールした状態をcommitすることで、Rubyインストール直後の状態からやり直すことが出来ます。

利用方法

まず、sandboxモードをonにします。

vagrant sandbox on

この状態で、commitしたい状態までvagrantを設定し、その状態をcommitします。

vagrant sandbox commit

またvagrantを設定した後に、元の状態に戻すにはrollbackを行います。

vagrant sandbox rollback

vagrant-pristine

概要

vagrant-pristine は、vagrant destroyvagrant up を同時に行ってくれるものです。
機能としてはそれだけで単純なのですが、地味に便利で個人的には気に入っています。

利用方法

vagrant pristineを実行するだけです。

vagrant-cachier

概要

vagrant-cachier は、パッケージのインストールを高速化するためのプラグインです。
aptやyumのパッケージは、ダウンロードを行った後にインストールを行います。
通常、何度も構築していると、毎回ダウンロードが行われてしまいます。
このプラグインは、一度ダウンロードしたパッケージをホスト側にキャッシュすることで、ダウンロードの部分を高速化してくれます。

具体的な速度の計算は、以下のサイトが参考になると思います。
Vagrant のプロビジョン時間を削減する vagrant-cachier プラグインが良い - Shin x blog

利用方法

Vagrantfileに以下を記述するだけです。

if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :box
end

おわりに

今回は、itamae + vagrant に絞ってpluginを紹介しました。
vagrant-pluginはうまく使うことで、作業効率を大きく上げることが出来ます。
特に、インストールを行うようなレシピは、待ち時間がどうしても長くなってしまうので、それを短縮すれば効率はぐっと良くなります。
自分の目的や作業環境に応じて、最適なプラグインを探して快適なvagrant生活を送りましょう!