Vagrantfileでup時に必要なプラグインを自動でインストールする

vagrant up時にVagrantのプラグインを自動でインストールするようなVagrantfileの記述があったので備忘録代わり。

一行目いじればreloadとかも条件を適宜追加可能。

試した環境

MacOS 10.12.6 (Sierra)
Vagrant 1.9.7

使ったサンプル

https://github.com/manjiii/Vagrant-samples/tree/master/Skeleton-nginx-nodejs-mongodb

記述の仕方

以下みたいな感じ。

if ARGV[0] == 'up'
  plugins_dependencies = %w( vagrant-vbguest vagrant-docker-compose ) # <- ここに必要なプラグインを列挙する
  plugin_status = false
  plugins_dependencies.each do |plugin_name|
    unless Vagrant.has_plugin? plugin_name
      puts "#{plugin_name} is required."
      system("vagrant plugin install #{plugin_name}")
      plugin_status = true
    end
  end
  #Restart Vagrant if any new plugin installed
  if plugin_status === true
    exec "vagrant #{ARGV.join' '}"
  else
    puts "All Plugin Dependencies already installed"
  end
end

拾い元

Demand a Vagrant plugin within the Vagrantfile?
https://stackoverflow.com/questions/19492738/demand-a-vagrant-plugin-within-the-vagrantfile

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.