ventriloquist 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.gitignore +1 -1
 - data/CHANGELOG.md +47 -2
 - data/Gemfile +2 -1
 - data/Gemfile.lock +36 -28
 - data/README.md +116 -41
 - data/base_box/README.md +3 -0
 - data/base_box/Vagrantfile +66 -0
 - data/development/Vagrantfile +32 -11
 - data/lib/ventriloquist/cap/platforms.rb +55 -0
 - data/lib/ventriloquist/cap/{debian → platforms/debian}/elixir_install.rb +1 -0
 - data/lib/ventriloquist/cap/{debian → platforms/debian}/erlang_install.rb +0 -0
 - data/lib/ventriloquist/cap/{debian → platforms/debian}/go_install.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → platforms/debian}/phantomjs_install.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → platforms/debian}/python.rb +1 -0
 - data/lib/ventriloquist/cap/{linux → platforms/linux}/nvm_install.rb +0 -0
 - data/lib/ventriloquist/cap/{linux → platforms/linux}/nvm_install_nodejs.rb +0 -0
 - data/lib/ventriloquist/cap/platforms/linux/rvm_install.rb +17 -0
 - data/lib/ventriloquist/cap/{linux → platforms/linux}/rvm_install_ruby.rb +2 -3
 - data/lib/ventriloquist/cap/services.rb +40 -0
 - data/lib/ventriloquist/cap/{debian → services/debian}/mysql_install_client.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → services/debian}/mysql_install_headers.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → services/debian}/pg_install_client.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → services/debian}/pg_install_headers.rb +1 -1
 - data/lib/ventriloquist/cap/{debian → services/debian}/ventriloquist_containers_upstart.rb +0 -0
 - data/lib/ventriloquist/cap/{linux → services/linux}/mysql_configure_client.rb +0 -0
 - data/lib/ventriloquist/cap/{linux → services/linux}/pg_export_pghost.rb +0 -0
 - data/lib/ventriloquist/cap/utils.rb +40 -0
 - data/lib/ventriloquist/cap/utils/debian/git_install.rb +13 -0
 - data/lib/ventriloquist/cap/utils/debian/install_build_tools.rb +13 -0
 - data/lib/ventriloquist/cap/utils/debian/install_packages.rb +47 -0
 - data/lib/ventriloquist/cap/utils/debian/mercurial_install.rb +13 -0
 - data/lib/ventriloquist/cap/utils/linux/download.rb +39 -0
 - data/lib/ventriloquist/cap/{linux → utils/linux}/make.rb +0 -0
 - data/lib/ventriloquist/cap/{linux → utils/linux}/untar.rb +0 -0
 - data/lib/ventriloquist/config.rb +6 -3
 - data/lib/ventriloquist/platforms/elixir.rb +1 -1
 - data/lib/ventriloquist/platforms/go.rb +1 -1
 - data/lib/ventriloquist/platforms/nodejs.rb +1 -0
 - data/lib/ventriloquist/platforms/phantomjs.rb +1 -1
 - data/lib/ventriloquist/platforms/ruby.rb +1 -0
 - data/lib/ventriloquist/plugin.rb +3 -114
 - data/lib/ventriloquist/provisioner.rb +12 -1
 - data/lib/ventriloquist/service.rb +14 -7
 - data/lib/ventriloquist/services/elastic_search.rb +12 -0
 - data/lib/ventriloquist/services/mail_catcher.rb +12 -0
 - data/lib/ventriloquist/services/memcached.rb +12 -0
 - data/lib/ventriloquist/services/mysql.rb +5 -0
 - data/lib/ventriloquist/services/postgresql.rb +5 -0
 - data/lib/ventriloquist/services/redis.rb +12 -6
 - data/lib/ventriloquist/services/rethink_db.rb +16 -0
 - data/lib/ventriloquist/services_builder.rb +14 -5
 - data/lib/ventriloquist/version.rb +1 -1
 - data/locales/en.yml +6 -1
 - data/services/base/Dockerfile +8 -7
 - data/services/build-all.sh +6 -3
 - data/services/elasticsearch/Dockerfile +6 -7
 - data/services/mailcatcher/Dockerfile +3 -6
 - data/services/memcached/Dockerfile +11 -12
 - data/services/mysql/5.5/Dockerfile +17 -0
 - data/services/mysql/{config → 5.5/config}/bin/add-mysql-user +0 -5
 - data/services/mysql/5.6/Dockerfile +32 -0
 - data/services/mysql/5.6/config/bin/add-mysql-user +15 -0
 - data/services/mysql/5.6/config/etc/my.cnf +129 -0
 - data/services/openjdk7/Dockerfile +1 -5
 - data/services/postgresql/9.1/Dockerfile +5 -10
 - data/services/postgresql/9.2/Dockerfile +7 -6
 - data/services/postgresql/9.3/Dockerfile +16 -0
 - data/services/postgresql/9.3/config/bin/prepare-postgres +25 -0
 - data/services/postgresql/9.3/config/bin/start-postgres +6 -0
 - data/services/postgresql/9.3/config/etc/postgresql/9.3/main/postgresql.conf +591 -0
 - data/services/redis/Dockerfile +10 -6
 - data/services/rethinkdb/Dockerfile +17 -0
 - data/spec/unit/service_spec.rb +22 -12
 - data/spec/unit/services_builder_spec.rb +26 -8
 - data/ventriloquist.gemspec +1 -1
 - metadata +46 -28
 - data/lib/ventriloquist/cap/debian/git_install.rb +0 -18
 - data/lib/ventriloquist/cap/debian/install_build_tools.rb +0 -18
 - data/lib/ventriloquist/cap/debian/mercurial_install.rb +0 -18
 - data/lib/ventriloquist/cap/linux/download.rb +0 -26
 - data/lib/ventriloquist/cap/linux/rvm_install.rb +0 -17
 - data/services/mysql/Dockerfile +0 -20
 
| 
         @@ -0,0 +1,39 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module VagrantPlugins
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Ventriloquist
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Cap
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module Linux
         
     | 
| 
      
 5 
     | 
    
         
            +
                    module Download
         
     | 
| 
      
 6 
     | 
    
         
            +
                      def self.download(machine, src, destination)
         
     | 
| 
      
 7 
     | 
    
         
            +
                        machine.communicate.tap do |comm|
         
     | 
| 
      
 8 
     | 
    
         
            +
                          if comm.test('which wget')
         
     | 
| 
      
 9 
     | 
    
         
            +
                            download_with_wget(machine, src, destination)
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                          elsif comm.test('which curl')
         
     | 
| 
      
 12 
     | 
    
         
            +
                            download_with_curl(machine, src, destination)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                          # If neither wget or curl could be found, try installing
         
     | 
| 
      
 15 
     | 
    
         
            +
                          # curl
         
     | 
| 
      
 16 
     | 
    
         
            +
                          elsif machine.capability?(:install_packages)
         
     | 
| 
      
 17 
     | 
    
         
            +
                            machine.guest.capability(:install_packages, 'curl')
         
     | 
| 
      
 18 
     | 
    
         
            +
                            download_with_curl(machine, src, destination)
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                          else
         
     | 
| 
      
 21 
     | 
    
         
            +
                            raise 'Unable to download file for guest VM!'
         
     | 
| 
      
 22 
     | 
    
         
            +
                          end
         
     | 
| 
      
 23 
     | 
    
         
            +
                        end
         
     | 
| 
      
 24 
     | 
    
         
            +
                      end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                      def self.download_with_wget(machine, src, destination)
         
     | 
| 
      
 27 
     | 
    
         
            +
                        machine.env.ui.info("Downloading #{src} to #{destination}")
         
     | 
| 
      
 28 
     | 
    
         
            +
                        machine.communicate.execute("wget #{src} -O #{destination}")
         
     | 
| 
      
 29 
     | 
    
         
            +
                      end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                      def self.download_with_curl(machine, src, destination)
         
     | 
| 
      
 32 
     | 
    
         
            +
                        machine.env.ui.info("Downloading #{src} to #{destination}")
         
     | 
| 
      
 33 
     | 
    
         
            +
                        machine.communicate.execute("curl #{src} -o #{destination}")
         
     | 
| 
      
 34 
     | 
    
         
            +
                      end
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                  end
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
    
        data/lib/ventriloquist/config.rb
    CHANGED
    
    | 
         @@ -1,11 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module VagrantPlugins
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Ventriloquist
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Config < Vagrant.plugin("2", :config)
         
     | 
| 
       4 
     | 
    
         
            -
                  attr_reader :services, :platforms
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_reader :services, :platforms, :packages
         
     | 
| 
      
 5 
     | 
    
         
            +
                  attr_accessor :docker_version
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
                  def initialize
         
     | 
| 
       7 
     | 
    
         
            -
                    @services 
     | 
| 
       8 
     | 
    
         
            -
                    @platforms 
     | 
| 
      
 8 
     | 
    
         
            +
                    @services       = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @platforms      = []
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @packages       = []
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @docker_version = '0.7.0'
         
     | 
| 
       9 
12 
     | 
    
         
             
                  end
         
     | 
| 
       10 
13 
     | 
    
         
             
                end
         
     | 
| 
       11 
14 
     | 
    
         
             
              end
         
     | 
| 
         @@ -3,7 +3,7 @@ module VagrantPlugins 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module Platforms
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class Elixir < Platform
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
     | 
    
         
            -
                      @config[:version] = '0. 
     | 
| 
      
 6 
     | 
    
         
            +
                      @config[:version] = '0.11.2' if @config[:version] == 'latest'
         
     | 
| 
       7 
7 
     | 
    
         
             
                      machine.guest.tap do |guest|
         
     | 
| 
       8 
8 
     | 
    
         
             
                        guest.capability(:erlang_install)
         
     | 
| 
       9 
9 
     | 
    
         
             
                        guest.capability(:elixir_install, @config[:version])
         
     | 
| 
         @@ -3,7 +3,7 @@ module VagrantPlugins 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module Platforms
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class Go < Platform
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
     | 
    
         
            -
                      @config[:version] = '1. 
     | 
| 
      
 6 
     | 
    
         
            +
                      @config[:version] = '1.2' if @config[:version] == 'latest'
         
     | 
| 
       7 
7 
     | 
    
         
             
                      machine.guest.capability(:mercurial_install)
         
     | 
| 
       8 
8 
     | 
    
         
             
                      machine.guest.capability(:go_install, @config[:version])
         
     | 
| 
       9 
9 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -5,6 +5,7 @@ module VagrantPlugins 
     | 
|
| 
       5 
5 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
6 
     | 
    
         
             
                      @config[:version] = '0.10' if @config[:version] == 'latest'
         
     | 
| 
       7 
7 
     | 
    
         
             
                      machine.guest.tap do |guest|
         
     | 
| 
      
 8 
     | 
    
         
            +
                        guest.capability(:install_packages, 'curl', silent: true)
         
     | 
| 
       8 
9 
     | 
    
         
             
                        guest.capability(:nvm_install)
         
     | 
| 
       9 
10 
     | 
    
         
             
                        guest.capability(:nvm_install_nodejs, @config[:version])
         
     | 
| 
       10 
11 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -3,7 +3,7 @@ module VagrantPlugins 
     | 
|
| 
       3 
3 
     | 
    
         
             
                module Platforms
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class PhantomJS < Platform
         
     | 
| 
       5 
5 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
     | 
    
         
            -
                      @config[:version] = '1.9. 
     | 
| 
      
 6 
     | 
    
         
            +
                      @config[:version] = '1.9.2' if config[:version] == 'latest'
         
     | 
| 
       7 
7 
     | 
    
         
             
                      machine.guest.capability(:phantomjs_install, @config[:version])
         
     | 
| 
       8 
8 
     | 
    
         
             
                    end
         
     | 
| 
       9 
9 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -5,6 +5,7 @@ module VagrantPlugins 
     | 
|
| 
       5 
5 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
6 
     | 
    
         
             
                      @config[:version] = '2.0.0' if @config[:version] == 'latest'
         
     | 
| 
       7 
7 
     | 
    
         
             
                      machine.guest.tap do |guest|
         
     | 
| 
      
 8 
     | 
    
         
            +
                        guest.capability(:install_packages, 'curl', silent: true)
         
     | 
| 
       8 
9 
     | 
    
         
             
                        guest.capability(:rvm_install)
         
     | 
| 
       9 
10 
     | 
    
         
             
                        guest.capability(:rvm_install_ruby, @config[:version])
         
     | 
| 
       10 
11 
     | 
    
         
             
                      end
         
     | 
    
        data/lib/ventriloquist/plugin.rb
    CHANGED
    
    | 
         @@ -25,120 +25,9 @@ module VagrantPlugins 
     | 
|
| 
       25 
25 
     | 
    
         
             
                    Config
         
     | 
| 
       26 
26 
     | 
    
         
             
                  end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                   
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  guest_capability("debian", "pg_install_headers") do
         
     | 
| 
       34 
     | 
    
         
            -
                    require_relative "cap/debian/pg_install_headers"
         
     | 
| 
       35 
     | 
    
         
            -
                    Cap::Debian::PgInstallHeaders
         
     | 
| 
       36 
     | 
    
         
            -
                  end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
                  guest_capability("linux", "pg_export_pghost") do
         
     | 
| 
       39 
     | 
    
         
            -
                    require_relative "cap/linux/pg_export_pghost"
         
     | 
| 
       40 
     | 
    
         
            -
                    Cap::Linux::PgExportPghost
         
     | 
| 
       41 
     | 
    
         
            -
                  end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                  guest_capability("debian", "mysql_install_client") do
         
     | 
| 
       44 
     | 
    
         
            -
                    require_relative "cap/debian/mysql_install_client"
         
     | 
| 
       45 
     | 
    
         
            -
                    Cap::Debian::MySqlInstallClient
         
     | 
| 
       46 
     | 
    
         
            -
                  end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                  guest_capability("debian", "mysql_install_headers") do
         
     | 
| 
       49 
     | 
    
         
            -
                    require_relative "cap/debian/mysql_install_headers"
         
     | 
| 
       50 
     | 
    
         
            -
                    Cap::Debian::MySqlInstallHeaders
         
     | 
| 
       51 
     | 
    
         
            -
                  end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                  guest_capability("linux", "mysql_configure_client") do
         
     | 
| 
       54 
     | 
    
         
            -
                    require_relative "cap/linux/mysql_configure_client"
         
     | 
| 
       55 
     | 
    
         
            -
                    Cap::Linux::MySqlConfigureClient
         
     | 
| 
       56 
     | 
    
         
            -
                  end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                  guest_capability("debian", "git_install") do
         
     | 
| 
       59 
     | 
    
         
            -
                    require_relative "cap/debian/git_install"
         
     | 
| 
       60 
     | 
    
         
            -
                    Cap::Debian::GitInstall
         
     | 
| 
       61 
     | 
    
         
            -
                  end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
                  guest_capability("debian", "mercurial_install") do
         
     | 
| 
       64 
     | 
    
         
            -
                    require_relative "cap/debian/mercurial_install"
         
     | 
| 
       65 
     | 
    
         
            -
                    Cap::Debian::MercurialInstall
         
     | 
| 
       66 
     | 
    
         
            -
                  end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                  guest_capability("linux", "make") do
         
     | 
| 
       69 
     | 
    
         
            -
                    require_relative "cap/linux/make"
         
     | 
| 
       70 
     | 
    
         
            -
                    Cap::Linux::Make
         
     | 
| 
       71 
     | 
    
         
            -
                  end
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
       73 
     | 
    
         
            -
                  guest_capability("debian", "install_build_tools") do
         
     | 
| 
       74 
     | 
    
         
            -
                    require_relative "cap/debian/install_build_tools"
         
     | 
| 
       75 
     | 
    
         
            -
                    Cap::Debian::InstallBuildTools
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                  guest_capability("debian", "ventriloquist_containers_upstart") do
         
     | 
| 
       79 
     | 
    
         
            -
                    require_relative "cap/debian/ventriloquist_containers_upstart"
         
     | 
| 
       80 
     | 
    
         
            -
                    Cap::Debian::VentriloquistContainersUpstart
         
     | 
| 
       81 
     | 
    
         
            -
                  end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                  guest_capability("linux", "download") do
         
     | 
| 
       84 
     | 
    
         
            -
                    require_relative "cap/linux/download"
         
     | 
| 
       85 
     | 
    
         
            -
                    Cap::Linux::Download
         
     | 
| 
       86 
     | 
    
         
            -
                  end
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
                  guest_capability("linux", "untar") do
         
     | 
| 
       89 
     | 
    
         
            -
                    require_relative "cap/linux/untar"
         
     | 
| 
       90 
     | 
    
         
            -
                    Cap::Linux::Untar
         
     | 
| 
       91 
     | 
    
         
            -
                  end
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
                  guest_capability("linux", "nvm_install") do
         
     | 
| 
       94 
     | 
    
         
            -
                    require_relative "cap/linux/nvm_install"
         
     | 
| 
       95 
     | 
    
         
            -
                    Cap::Linux::NvmInstall
         
     | 
| 
       96 
     | 
    
         
            -
                  end
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
                  guest_capability("linux", "nvm_install_nodejs") do
         
     | 
| 
       99 
     | 
    
         
            -
                    require_relative "cap/linux/nvm_install_nodejs"
         
     | 
| 
       100 
     | 
    
         
            -
                    Cap::Linux::NvmInstallNodeJS
         
     | 
| 
       101 
     | 
    
         
            -
                  end
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
     | 
    
         
            -
                  guest_capability("linux", "rvm_install") do
         
     | 
| 
       104 
     | 
    
         
            -
                    require_relative "cap/linux/rvm_install"
         
     | 
| 
       105 
     | 
    
         
            -
                    Cap::Linux::RvmInstall
         
     | 
| 
       106 
     | 
    
         
            -
                  end
         
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                  guest_capability("debian", "phantomjs_install") do
         
     | 
| 
       109 
     | 
    
         
            -
                    require_relative "cap/debian/phantomjs_install"
         
     | 
| 
       110 
     | 
    
         
            -
                    Cap::Debian::PhantomjsInstall
         
     | 
| 
       111 
     | 
    
         
            -
                  end
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
                  guest_capability("debian", "go_install") do
         
     | 
| 
       114 
     | 
    
         
            -
                    require_relative "cap/debian/go_install"
         
     | 
| 
       115 
     | 
    
         
            -
                    Cap::Debian::GoInstall
         
     | 
| 
       116 
     | 
    
         
            -
                  end
         
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
                  guest_capability("linux", "rvm_install_ruby") do
         
     | 
| 
       119 
     | 
    
         
            -
                    require_relative "cap/linux/rvm_install_ruby"
         
     | 
| 
       120 
     | 
    
         
            -
                    Cap::Linux::RvmInstallRuby
         
     | 
| 
       121 
     | 
    
         
            -
                  end
         
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
                  guest_capability("debian", "erlang_install") do
         
     | 
| 
       124 
     | 
    
         
            -
                    require_relative "cap/debian/erlang_install"
         
     | 
| 
       125 
     | 
    
         
            -
                    Cap::Debian::ErlangInstall
         
     | 
| 
       126 
     | 
    
         
            -
                  end
         
     | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
       128 
     | 
    
         
            -
                  guest_capability("debian", "elixir_install") do
         
     | 
| 
       129 
     | 
    
         
            -
                    require_relative "cap/debian/elixir_install"
         
     | 
| 
       130 
     | 
    
         
            -
                    Cap::Debian::ElixirInstall
         
     | 
| 
       131 
     | 
    
         
            -
                  end
         
     | 
| 
       132 
     | 
    
         
            -
             
     | 
| 
       133 
     | 
    
         
            -
                  guest_capability("debian", "pyenv_install") do
         
     | 
| 
       134 
     | 
    
         
            -
                    require_relative "cap/debian/python"
         
     | 
| 
       135 
     | 
    
         
            -
                    Cap::Debian::Python
         
     | 
| 
       136 
     | 
    
         
            -
                  end
         
     | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
                  guest_capability("debian", "pyenv_install_python") do
         
     | 
| 
       139 
     | 
    
         
            -
                    require_relative "cap/debian/python"
         
     | 
| 
       140 
     | 
    
         
            -
                    Cap::Debian::Python
         
     | 
| 
       141 
     | 
    
         
            -
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  require_relative 'cap/platforms'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  require_relative 'cap/utils'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  require_relative 'cap/services'
         
     | 
| 
       142 
31 
     | 
    
         
             
                end
         
     | 
| 
       143 
32 
     | 
    
         
             
              end
         
     | 
| 
       144 
33 
     | 
    
         
             
            end
         
     | 
| 
         @@ -12,19 +12,30 @@ module VagrantPlugins 
     | 
|
| 
       12 
12 
     | 
    
         
             
                class Provisioner < Vagrant.plugin("2", :provisioner)
         
     | 
| 
       13 
13 
     | 
    
         
             
                  def initialize(machine, config, installer = nil, client = nil)
         
     | 
| 
       14 
14 
     | 
    
         
             
                    super(machine, config)
         
     | 
| 
       15 
     | 
    
         
            -
                    @installer = installer || Vocker::DockerInstaller.new(@machine)
         
     | 
| 
      
 15 
     | 
    
         
            +
                    @installer = installer || Vocker::DockerInstaller.new(@machine, config.docker_version)
         
     | 
| 
       16 
16 
     | 
    
         
             
                    @client    = client    || Vocker::DockerClient.new(@machine)
         
     | 
| 
       17 
17 
     | 
    
         
             
                  end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                  def provision
         
     | 
| 
       20 
20 
     | 
    
         
             
                    @logger = Log4r::Logger.new("vagrant::provisioners::ventriloquist")
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                    provision_packages
         
     | 
| 
       22 
23 
     | 
    
         
             
                    provision_services
         
     | 
| 
       23 
24 
     | 
    
         
             
                    provision_platforms
         
     | 
| 
       24 
25 
     | 
    
         
             
                  end
         
     | 
| 
       25 
26 
     | 
    
         | 
| 
       26 
27 
     | 
    
         
             
                  protected
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
      
 29 
     | 
    
         
            +
                  def provision_packages
         
     | 
| 
      
 30 
     | 
    
         
            +
                    return if config.packages.empty?
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    if @machine.guest.capability?(:install_packages)
         
     | 
| 
      
 33 
     | 
    
         
            +
                      @machine.guest.capability(:install_packages, config.packages)
         
     | 
| 
      
 34 
     | 
    
         
            +
                    else
         
     | 
| 
      
 35 
     | 
    
         
            +
                      @machine.env.ui.warn(I18n.t 'ventriloquist.install_packages_unsupported')
         
     | 
| 
      
 36 
     | 
    
         
            +
                    end
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       28 
39 
     | 
    
         
             
                  def provision_services
         
     | 
| 
       29 
40 
     | 
    
         
             
                    return if config.services.empty?
         
     | 
| 
       30 
41 
     | 
    
         | 
| 
         @@ -10,13 +10,20 @@ module VagrantPlugins 
     | 
|
| 
       10 
10 
     | 
    
         
             
                  end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
12 
     | 
    
         
             
                  def provision(machine)
         
     | 
| 
       13 
     | 
    
         
            -
                     
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                     
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                     
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
                    cidfile = "#{CONTAINER_IDS_PATH}/#{@name}"
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    if @docker_client.container_running?("$(cat #{cidfile})")
         
     | 
| 
      
 16 
     | 
    
         
            +
                      machine.env.ui.info("Service '#{@name}' already running")
         
     | 
| 
      
 17 
     | 
    
         
            +
                    else
         
     | 
| 
      
 18 
     | 
    
         
            +
                      machine.env.ui.info("Starting '#{@name}' service")
         
     | 
| 
      
 19 
     | 
    
         
            +
                      machine.communicate.sudo("mkdir -p #{CONTAINER_IDS_PATH}")
         
     | 
| 
      
 20 
     | 
    
         
            +
                      # Reduce network latency, see https://groups.google.com/d/msg/docker-user/Z3zQuRawIsE/2AEkl30WpTQJ
         
     | 
| 
      
 21 
     | 
    
         
            +
                      # for more info
         
     | 
| 
      
 22 
     | 
    
         
            +
                      @config[:dns]     = '127.0.0.1'
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @config[:name]    = @name
         
     | 
| 
      
 24 
     | 
    
         
            +
                      @config[:cidfile] = cidfile
         
     | 
| 
      
 25 
     | 
    
         
            +
                      @docker_client.run_container(@config)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
       20 
27 
     | 
    
         
             
                  end
         
     | 
| 
       21 
28 
     | 
    
         
             
                end
         
     | 
| 
       22 
29 
     | 
    
         
             
              end
         
     | 
| 
         @@ -2,6 +2,11 @@ module VagrantPlugins 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module Ventriloquist
         
     | 
| 
       3 
3 
     | 
    
         
             
                module Services
         
     | 
| 
       4 
4 
     | 
    
         
             
                  class Redis < Service
         
     | 
| 
      
 5 
     | 
    
         
            +
                    def initialize(*args)
         
     | 
| 
      
 6 
     | 
    
         
            +
                      super
         
     | 
| 
      
 7 
     | 
    
         
            +
                      @config[:ports] ||= ['6379:6379']
         
     | 
| 
      
 8 
     | 
    
         
            +
                    end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       5 
10 
     | 
    
         
             
                    def provision(machine)
         
     | 
| 
       6 
11 
     | 
    
         
             
                      super
         
     | 
| 
       7 
12 
     | 
    
         
             
                      install_client(machine)
         
     | 
| 
         @@ -9,20 +14,21 @@ module VagrantPlugins 
     | 
|
| 
       9 
14 
     | 
    
         | 
| 
       10 
15 
     | 
    
         
             
                    protected
         
     | 
| 
       11 
16 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                    # TODO: Use the same version as the configured service
         
     | 
| 
       13 
17 
     | 
    
         
             
                    def install_client(machine)
         
     | 
| 
       14 
18 
     | 
    
         
             
                      return if machine.communicate.test('which redis-cli > /dev/null')
         
     | 
| 
       15 
19 
     | 
    
         | 
| 
      
 20 
     | 
    
         
            +
                      redis_version = '2.8.2'
         
     | 
| 
       16 
21 
     | 
    
         
             
                      machine.guest.tap do |guest|
         
     | 
| 
       17 
22 
     | 
    
         
             
                        guest.capability(:install_build_tools)
         
     | 
| 
       18 
     | 
    
         
            -
                         
     | 
| 
       19 
     | 
    
         
            -
                        guest.capability(: 
     | 
| 
       20 
     | 
    
         
            -
                        guest.capability(: 
     | 
| 
      
 23 
     | 
    
         
            +
                        # TODO: Use the same version specified on the Vagrantfile
         
     | 
| 
      
 24 
     | 
    
         
            +
                        guest.capability(:download, "http://download.redis.io/releases/redis-#{redis_version}.tar.gz", "/tmp/redis-#{redis_version}.tar.gz")
         
     | 
| 
      
 25 
     | 
    
         
            +
                        guest.capability(:untar, "/tmp/redis-#{redis_version}.tar.gz", '/tmp')
         
     | 
| 
      
 26 
     | 
    
         
            +
                        guest.capability(:make, "/tmp/redis-#{redis_version}", 'redis-cli')
         
     | 
| 
       21 
27 
     | 
    
         
             
                      end
         
     | 
| 
       22 
28 
     | 
    
         | 
| 
       23 
29 
     | 
    
         
             
                      machine.communicate.tap do |comm|
         
     | 
| 
       24 
     | 
    
         
            -
                        comm.sudo( 
     | 
| 
       25 
     | 
    
         
            -
                        comm.execute('rm -rf /tmp/redis 
     | 
| 
      
 30 
     | 
    
         
            +
                        comm.sudo("cp /tmp/redis-#{redis_version}/src/redis-cli /usr/local/bin")
         
     | 
| 
      
 31 
     | 
    
         
            +
                        comm.execute('rm -rf /tmp/redis-*')
         
     | 
| 
       26 
32 
     | 
    
         
             
                      end
         
     | 
| 
       27 
33 
     | 
    
         
             
                    end
         
     | 
| 
       28 
34 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1,15 +1,23 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require_relative 'service'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require_relative 'services/postgresql'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require_relative 'services/redis'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative 'services/mail_catcher'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative 'services/memcached'
         
     | 
| 
       4 
6 
     | 
    
         
             
            require_relative 'services/mysql'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require_relative 'services/elastic_search'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require_relative 'services/rethink_db'
         
     | 
| 
       5 
9 
     | 
    
         | 
| 
       6 
10 
     | 
    
         
             
            module VagrantPlugins
         
     | 
| 
       7 
11 
     | 
    
         
             
              module Ventriloquist
         
     | 
| 
       8 
12 
     | 
    
         
             
                class ServicesBuilder
         
     | 
| 
       9 
13 
     | 
    
         
             
                  MAPPING = {
         
     | 
| 
       10 
     | 
    
         
            -
                    'pg' 
     | 
| 
       11 
     | 
    
         
            -
                    ' 
     | 
| 
       12 
     | 
    
         
            -
                    ' 
     | 
| 
      
 14 
     | 
    
         
            +
                    'pg'            => Services::PostgreSQL,
         
     | 
| 
      
 15 
     | 
    
         
            +
                    'elasticsearch' => Services::ElasticSearch,
         
     | 
| 
      
 16 
     | 
    
         
            +
                    'mailcatcher'   => Services::MailCatcher,
         
     | 
| 
      
 17 
     | 
    
         
            +
                    'mysql'         => Services::MySql,
         
     | 
| 
      
 18 
     | 
    
         
            +
                    'redis'         => Services::Redis,
         
     | 
| 
      
 19 
     | 
    
         
            +
                    'memcached'     => Services::Memcached,
         
     | 
| 
      
 20 
     | 
    
         
            +
                    'rethinkdb'     => Services::RethinkDB,
         
     | 
| 
       13 
21 
     | 
    
         
             
                  }
         
     | 
| 
       14 
22 
     | 
    
         | 
| 
       15 
23 
     | 
    
         
             
                  def initialize(services, mapping = MAPPING)
         
     | 
| 
         @@ -44,13 +52,14 @@ module VagrantPlugins 
     | 
|
| 
       44 
52 
     | 
    
         | 
| 
       45 
53 
     | 
    
         
             
                  def create_service_provisioner(name, config, docker_client)
         
     | 
| 
       46 
54 
     | 
    
         
             
                    name, tag = name.to_s.split(':')
         
     | 
| 
      
 55 
     | 
    
         
            +
                    type      = config.delete(:type) || name
         
     | 
| 
       47 
56 
     | 
    
         | 
| 
       48 
57 
     | 
    
         
             
                    # REFACTOR: This is a bit confusing...
         
     | 
| 
       49 
58 
     | 
    
         
             
                    config[:tag]   ||= (tag || 'latest')
         
     | 
| 
       50 
     | 
    
         
            -
                    config[:image] ||= extract_image_name(name)
         
     | 
| 
      
 59 
     | 
    
         
            +
                    config[:image] ||= extract_image_name(config.delete(:vimage) || name)
         
     | 
| 
       51 
60 
     | 
    
         
             
                    config[:image] << ":#{config[:tag]}"
         
     | 
| 
       52 
61 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                    klass = @mapping.fetch( 
     | 
| 
      
 62 
     | 
    
         
            +
                    klass = @mapping.fetch(type, Service)
         
     | 
| 
       54 
63 
     | 
    
         
             
                    klass.new(name, config, docker_client)
         
     | 
| 
       55 
64 
     | 
    
         
             
                  end
         
     | 
| 
       56 
65 
     | 
    
         |