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

  • 0
    Like
  • 0
    Comment

    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