vagrantのおすすめプラグイン with Itamae
はじめに
お久しぶりです!vitaminです!
最近、社内でインフラ系のお仕事をさせて頂くことが多くなってきました。
アキュでは開発環境の構築をItamaeを利用して行えるようにしています。
インフラ系の仕事の一つとして、そのレシピ作成や修正を行っています。
今回は、vagrant を利用して、itamaeのレシピ作成を効率的に行う方法を紹介したいと思います。
itamaeとvagrant
itamae は、サーバの設定を自動化するためのツールです。
ChefやAnssibleと似たようなものですね。
それらにも共通して言えるのですが、レシピの作成をする際に、実サーバや仮想サーバに対して実行しながら開発することは効率的ではないです。
何度も実行するために、サーバの再インストールやインストールしたものをアンインストールするのは非常に手間となってしまいます。
例えば、MySQLのインストールレシピを作成し、インストール後に設定でコケてしまったのでレシピを修正して、一旦アンインストールして、またインストールして、またコケて、、、というような繰り返しを行うことになってしまいます。最後に、インストール直後でも動くようにOSから入れなおしたり。。。
とてもつらい作業ですね。。。
そこで、vagrantを使えば、vagrant up
とvagrant destroy
を実行するだけで、サーバの再構築を行うことができます。
この記事では、更にvagrantを利用したItamaeレシピの開発を効率化する術として、vagrant pluginを紹介したいと思います。
vagrant plugin
vagrant plugin とは
vagrant pluginを利用することで、vagrant に機能を追加し、より便利にする事ができます。
プラグインのインストールは、vagrant plugin install <プラグイン名>
で行うことができます。
ここからは、自分がいつも利用しているおすすめのpluginを紹介したいと思います。
vagrant-itamae
概要
vagrant-itamae は、vagrant up
やvagrant 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 destroy
とvagrant 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生活を送りましょう!