ventriloquist 0.4.1 → 0.5.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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -4
  3. data/CHANGELOG.md +31 -0
  4. data/DEVELOPMENT.md +37 -0
  5. data/Gemfile +13 -13
  6. data/Gemfile.lock +48 -50
  7. data/LICENSE.txt +1 -1
  8. data/README.md +65 -114
  9. data/development/Vagrantfile +20 -55
  10. data/lib/ventriloquist/cap/platforms/debian/elixir_install.rb +23 -16
  11. data/lib/ventriloquist/cap/platforms/debian/erlang_install.rb +13 -10
  12. data/lib/ventriloquist/cap/platforms/debian/go_install.rb +18 -3
  13. data/lib/ventriloquist/cap/platforms/debian/phantomjs_install.rb +22 -4
  14. data/lib/ventriloquist/cap/platforms/debian/python.rb +2 -0
  15. data/lib/ventriloquist/cap/platforms/linux/nvm_install_nodejs.rb +2 -0
  16. data/lib/ventriloquist/cap/platforms/linux/rvm_install_ruby.rb +2 -0
  17. data/lib/ventriloquist/cap/services/debian/ventriloquist_containers_upstart.rb +1 -1
  18. data/lib/ventriloquist/cap/utils/debian/prepare_container_for_docker.rb +35 -0
  19. data/lib/ventriloquist/cap/utils/linux/download.rb +24 -10
  20. data/lib/ventriloquist/cap/utils.rb +5 -0
  21. data/lib/ventriloquist/config.rb +1 -1
  22. data/lib/ventriloquist/platforms/elixir.rb +7 -2
  23. data/lib/ventriloquist/platforms/erlang.rb +3 -0
  24. data/lib/ventriloquist/platforms/go.rb +7 -2
  25. data/lib/ventriloquist/platforms/nodejs.rb +9 -2
  26. data/lib/ventriloquist/platforms/phantomjs.rb +7 -2
  27. data/lib/ventriloquist/platforms/python.rb +9 -2
  28. data/lib/ventriloquist/platforms/ruby.rb +9 -2
  29. data/lib/ventriloquist/platforms_builder.rb +7 -2
  30. data/lib/ventriloquist/plugin.rb +0 -4
  31. data/lib/ventriloquist/provisioner.rb +10 -5
  32. data/lib/ventriloquist/service.rb +4 -5
  33. data/lib/ventriloquist/services/elastic_search.rb +1 -1
  34. data/lib/ventriloquist/services/mail_catcher.rb +1 -1
  35. data/lib/ventriloquist/services/memcached.rb +1 -1
  36. data/lib/ventriloquist/services/mysql.rb +1 -1
  37. data/lib/ventriloquist/services/postgresql.rb +1 -1
  38. data/lib/ventriloquist/services/redis.rb +2 -2
  39. data/lib/ventriloquist/services/rethink_db.rb +1 -5
  40. data/lib/ventriloquist/services_builder.rb +10 -7
  41. data/lib/ventriloquist/version.rb +1 -1
  42. data/services/base/Dockerfile +19 -11
  43. data/services/build-all.sh +11 -11
  44. data/services/elasticsearch/Dockerfile +4 -1
  45. data/services/mailcatcher/Dockerfile +11 -1
  46. data/services/memcached/Dockerfile +9 -4
  47. data/services/mysql/5.5/Dockerfile +1 -0
  48. data/services/mysql/5.6/Dockerfile +8 -4
  49. data/services/openjdk7/Dockerfile +6 -1
  50. data/services/postgresql/9.1/Dockerfile +8 -5
  51. data/services/postgresql/9.1/config/bin/prepare-postgres +2 -0
  52. data/services/postgresql/9.2/Dockerfile +7 -5
  53. data/services/postgresql/9.2/config/bin/prepare-postgres +2 -0
  54. data/services/postgresql/9.3/Dockerfile +5 -5
  55. data/services/postgresql/9.3/config/bin/prepare-postgres +2 -0
  56. data/services/redis/Dockerfile +7 -4
  57. data/services/rethinkdb/Dockerfile +8 -1
  58. data/spec/spec_helper.rb +7 -9
  59. data/spec/unit/platforms_builder_spec.rb +5 -9
  60. data/spec/unit/service_spec.rb +14 -16
  61. data/spec/unit/services_builder_spec.rb +10 -20
  62. data/ventriloquist.gemspec +0 -2
  63. metadata +11 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d8d76d64a1ef2e06ce16e9a187f7a430e7e660d1
4
- data.tar.gz: 8dd069f4f7607cae3013c29b43db1337e8d90d2a
3
+ metadata.gz: bb79b6f3f2aca4996289263b71f00b7c287d2147
4
+ data.tar.gz: c7fa55870588d8600bebf38e98e34b4afe6ee6e8
5
5
  SHA512:
6
- metadata.gz: 067d9a0696b62a1ca12149f77e99f41b998662bc0d393c06f03028456175bf966b2437365b85e2d16514079441d56e8b74d1c0ae79caf45c3e847423c376cfe6
7
- data.tar.gz: af84540aa5fa5dd611403157f3661fb1b9010ee88f878d23b907299ac4dec12847a15f24fd02e960c84d540422763db193bc300b34986755edd1b8d8b9e56f8b
6
+ metadata.gz: edf98aed4a75d4c6b8cb77069fc90d5fc358a364950819e509e331f64d41cc70791ac6f0bb640b08fa69f50535c9bc481becdffae3d12d24aa2d6f2e0702a38a
7
+ data.tar.gz: 96e17b1498023728c600b1e00399d84513141de538072dbde3c159e719dc16d1acf7091878cdf76d88a81c584b404a4bfaaeadf621d505a968b9abec4d1d233c
data/.travis.yml CHANGED
@@ -1,7 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
5
- matrix:
6
- allow_failures:
7
- - rvm: 2.0.0
data/CHANGELOG.md CHANGED
@@ -1,3 +1,34 @@
1
+ ## [0.5.0](https://github.com/fgrehm/ventriloquist/compare/v0.4.1...v0.5.0) (Apr 06, 2014)
2
+
3
+ BACKWARDS INCOMPATIBILITY:
4
+
5
+ - Support for Vagrant < 1.5 has been removed, please try to use a previous plugin
6
+ version if you can't upgrade.
7
+ - Services / platforms versions are now required to be specified from Vagrantfile
8
+ to increase reproducibility / reduce the chances of surprises and simplify plugin
9
+ maintenance.
10
+ - _All_ of the services images have been rebuilt from scratch and are now
11
+ trusted builds.
12
+ - The base image for services was changed from Ubuntu Quantal 12.10 to Debian Jessie.
13
+
14
+ FEATURES:
15
+
16
+ - Added shortcut for installing multiple ruby / nodejs / python versions from `Vagrantfile`
17
+
18
+ IMPROVEMENTS:
19
+
20
+ - core: Bumped docker to 0.9.1
21
+ - core: Removed dependency on [vocker]
22
+ - core: Simplified usage with vagrant-lxc
23
+ - platforms: Improved handling of multiple versions specifications
24
+ - platforms: Show message when already installed instead of keeping silent
25
+ - platforms/phantomjs: Leverage vagrant-cachier on installation
26
+ - platforms/phantomjs: Fix installation of recent versions
27
+ - platforms/go: Leverage vagrant-cachier on installation
28
+ - platforms/elixir: Fix installation of recent versions
29
+ - services/postgres: Rename ventriloquist-pg images to ventriloquist-postgres
30
+
31
+
1
32
  ## [0.4.1](https://github.com/fgrehm/ventriloquist/compare/v0.4.0...v0.4.1) (December 13, 2013)
2
33
 
3
34
  BUG FIXES:
data/DEVELOPMENT.md ADDED
@@ -0,0 +1,37 @@
1
+ # Development notes
2
+
3
+ [Vagrantfile for testing](/development/Vagrantfile)
4
+
5
+ ## Testing services
6
+
7
+ ```sh
8
+ redis-cli ping
9
+ psql
10
+ mysql -e 'SHOW DATABASES'
11
+
12
+ # Memcached: run STATS then QUIT
13
+ telnet localhost 11211
14
+
15
+ # MailCatcher
16
+ curl localhost:1080
17
+
18
+ # RethinkDB
19
+ curl localhost:8080
20
+
21
+ # ElasticSearch
22
+ curl $(docker port $(cat /var/lib/ventriloquist/cids/es) 9200)
23
+ ```
24
+
25
+ ## Testing platforms
26
+
27
+ ```sh
28
+ rvm list
29
+ ruby -v
30
+ nvm list
31
+ node -v
32
+ pyenv versions
33
+ python --version
34
+ phantomjs -v
35
+ iex --version
36
+ erl -eval 'erlang:display(erlang:system_info(otp_release)), halt().' -noshell
37
+ ```
data/Gemfile CHANGED
@@ -1,20 +1,20 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in ventriloquist.gemspec
4
- gemspec
5
-
6
- group :development, :test do
7
- gem 'rake'
8
- gem 'vagrant', github: 'mitchellh/vagrant', tag: 'v1.3.5'
9
- gem 'rspec'
10
- gem 'simplecov', require: false
11
- gem 'bogus'
3
+ group :plugins do
4
+ # Specify your gem's dependencies in ventriloquist.gemspec
5
+ gemspec
6
+ gem 'vagrant-lxc', github: 'fgrehm/vagrant-lxc'
7
+ gem 'vagrant-pristine', github: 'fgrehm/vagrant-pristine'
8
+ gem 'vagrant-cachier', github: 'fgrehm/vagrant-cachier'
12
9
  end
13
10
 
14
11
  group :development do
15
- gem 'vagrant-lxc', github: 'fgrehm/vagrant-lxc'
16
- gem 'vagrant-pristine', github: 'fgrehm/vagrant-pristine'
17
- gem 'vagrant-global-status', github: 'fgrehm/vagrant-global-status'
18
- gem 'vagrant-cachier', github: 'fgrehm/vagrant-cachier'
19
12
  gem 'guard-rspec'
20
13
  end
14
+
15
+ group :development, :test do
16
+ gem 'rake'
17
+ gem 'vagrant', github: 'mitchellh/vagrant', tag: 'v1.5.2'
18
+ gem 'rspec', '3.0.0.beta2'
19
+ gem 'simplecov', require: false
20
+ end
data/Gemfile.lock CHANGED
@@ -1,121 +1,119 @@
1
1
  GIT
2
2
  remote: git://github.com/fgrehm/vagrant-cachier.git
3
- revision: 56b86a0debd6c899e92c10e403c4623b0d304fc1
3
+ revision: 2df1e319408a7e6f1c6e75d48e36591199e98527
4
4
  specs:
5
- vagrant-cachier (0.5.1.dev)
6
-
7
- GIT
8
- remote: git://github.com/fgrehm/vagrant-global-status.git
9
- revision: 2f1eb13b35567e04f3b5ee51996960199fc0c3e2
10
- specs:
11
- vagrant-global-status (0.1.3.dev)
5
+ vagrant-cachier (0.6.1.dev)
12
6
 
13
7
  GIT
14
8
  remote: git://github.com/fgrehm/vagrant-lxc.git
15
- revision: c7fff4d9354b8c8fc4d75625dca3dfc411729032
9
+ revision: 69ba4d8f7089150a417b53c14b05fdde557cd53c
16
10
  specs:
17
- vagrant-lxc (0.7.1.dev)
11
+ vagrant-lxc (1.0.0.beta1.dev)
18
12
 
19
13
  GIT
20
14
  remote: git://github.com/fgrehm/vagrant-pristine.git
21
- revision: 4638491786943bfbf6f115b1fc379f069963fe46
15
+ revision: 503dbc47848c81d0fbfa6840491856f518d244a1
22
16
  specs:
23
17
  vagrant-pristine (0.3.0)
24
18
 
25
19
  GIT
26
20
  remote: git://github.com/mitchellh/vagrant.git
27
- revision: a40522f5fabccb9ddabad03d836e120ff5d14093
28
- tag: v1.3.5
21
+ revision: d19047908cc2d20fe2b954eff5b6ef9e94f8cfbc
22
+ tag: v1.5.2
29
23
  specs:
30
- vagrant (1.3.5)
31
- childprocess (~> 0.3.7)
24
+ vagrant (1.5.2)
25
+ bundler (~> 1.5.2)
26
+ childprocess (~> 0.5.0)
32
27
  erubis (~> 2.7.0)
33
28
  i18n (~> 0.6.0)
34
- log4r (~> 1.1.9)
29
+ listen (~> 2.4.0)
30
+ log4r (~> 1.1.9, < 1.1.11)
35
31
  net-scp (~> 1.1.0)
36
- net-ssh (~> 2.6.6)
32
+ net-ssh (>= 2.6.6, < 2.8.0)
33
+ rb-kqueue (~> 0.2.0)
34
+ wdm (~> 0.1.0)
37
35
 
38
36
  PATH
39
37
  remote: .
40
38
  specs:
41
- ventriloquist (0.4.1)
42
- vocker (~> 0.4.1)
39
+ ventriloquist (0.5.0)
43
40
 
44
41
  GEM
45
42
  remote: https://rubygems.org/
46
43
  specs:
47
- bogus (0.1.4)
48
- dependor (>= 0.0.4)
49
44
  celluloid (0.15.2)
50
45
  timers (~> 1.1.0)
51
- childprocess (0.3.9)
46
+ childprocess (0.5.2)
52
47
  ffi (~> 1.0, >= 1.0.11)
53
48
  coderay (1.1.0)
54
- dependor (1.0.1)
55
49
  diff-lcs (1.2.5)
56
- docile (1.1.1)
50
+ docile (1.1.3)
57
51
  erubis (2.7.0)
58
52
  ffi (1.9.3)
59
53
  formatador (0.2.4)
60
- guard (2.2.4)
54
+ guard (2.4.0)
61
55
  formatador (>= 0.2.4)
62
56
  listen (~> 2.1)
63
57
  lumberjack (~> 1.0)
64
58
  pry (>= 0.9.12)
65
59
  thor (>= 0.18.1)
66
- guard-rspec (4.1.0)
67
- guard (>= 2.1.1)
68
- rspec (~> 2.14)
60
+ guard-rspec (4.2.8)
61
+ guard (~> 2.1)
62
+ rspec (>= 2.14, < 4.0)
69
63
  i18n (0.6.9)
70
- listen (2.3.1)
64
+ listen (2.4.1)
71
65
  celluloid (>= 0.15.2)
72
66
  rb-fsevent (>= 0.9.3)
73
67
  rb-inotify (>= 0.9)
74
68
  log4r (1.1.10)
75
- lumberjack (1.0.4)
69
+ lumberjack (1.0.5)
76
70
  method_source (0.8.2)
77
- multi_json (1.8.2)
71
+ multi_json (1.9.2)
78
72
  net-scp (1.1.2)
79
73
  net-ssh (>= 2.6.5)
80
- net-ssh (2.6.8)
81
- pry (0.9.12.4)
74
+ net-ssh (2.7.0)
75
+ pry (0.9.12.6)
82
76
  coderay (~> 1.0)
83
77
  method_source (~> 0.8)
84
78
  slop (~> 3.4)
85
- rake (10.1.0)
86
- rb-fsevent (0.9.3)
87
- rb-inotify (0.9.2)
79
+ rake (10.2.2)
80
+ rb-fsevent (0.9.4)
81
+ rb-inotify (0.9.3)
82
+ ffi (>= 0.5.0)
83
+ rb-kqueue (0.2.2)
88
84
  ffi (>= 0.5.0)
89
- rspec (2.14.1)
90
- rspec-core (~> 2.14.0)
91
- rspec-expectations (~> 2.14.0)
92
- rspec-mocks (~> 2.14.0)
93
- rspec-core (2.14.7)
94
- rspec-expectations (2.14.4)
95
- diff-lcs (>= 1.1.3, < 2.0)
96
- rspec-mocks (2.14.4)
85
+ rspec (3.0.0.beta2)
86
+ rspec-core (= 3.0.0.beta2)
87
+ rspec-expectations (= 3.0.0.beta2)
88
+ rspec-mocks (= 3.0.0.beta2)
89
+ rspec-core (3.0.0.beta2)
90
+ rspec-support (= 3.0.0.beta2)
91
+ rspec-expectations (3.0.0.beta2)
92
+ diff-lcs (>= 1.2.0, < 2.0)
93
+ rspec-support (= 3.0.0.beta2)
94
+ rspec-mocks (3.0.0.beta2)
95
+ rspec-support (= 3.0.0.beta2)
96
+ rspec-support (3.0.0.beta2)
97
97
  simplecov (0.8.2)
98
98
  docile (~> 1.1.0)
99
99
  multi_json
100
100
  simplecov-html (~> 0.8.0)
101
101
  simplecov-html (0.8.0)
102
- slop (3.4.7)
103
- thor (0.18.1)
102
+ slop (3.5.0)
103
+ thor (0.19.1)
104
104
  timers (1.1.0)
105
- vocker (0.4.1)
105
+ wdm (0.1.0)
106
106
 
107
107
  PLATFORMS
108
108
  ruby
109
109
 
110
110
  DEPENDENCIES
111
- bogus
112
111
  guard-rspec
113
112
  rake
114
- rspec
113
+ rspec (= 3.0.0.beta2)
115
114
  simplecov
116
115
  vagrant!
117
116
  vagrant-cachier!
118
- vagrant-global-status!
119
117
  vagrant-lxc!
120
118
  vagrant-pristine!
121
119
  ventriloquist!
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Fabio Rehm
1
+ Copyright (c) 2013-2014 Fabio Rehm
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Ventriloquist
2
2
 
3
+ [![Build Status](https://travis-ci.org/fgrehm/ventriloquist.png?branch=master)](https://travis-ci.org/fgrehm/ventriloquist) [![Gem Version](https://badge.fury.io/rb/ventriloquist.png)](http://badge.fury.io/rb/ventriloquist) [![Code Climate](https://codeclimate.com/github/fgrehm/ventriloquist.png)](https://codeclimate.com/github/fgrehm/ventriloquist) [![Gittip](http://img.shields.io/gittip/fgrehm.svg)](https://www.gittip.com/fgrehm/)
4
+
3
5
  > **ven·tril·o·quist**: _(noun)_ a person who can speak or utter sounds so that
4
6
  they seem to come from somewhere else, esp. an entertainer who makes their voice
5
7
  appear to come from a dummy of a person or animal.
@@ -23,8 +25,8 @@ for development on [Discourse](http://www.discourse.org/):
23
25
  Vagrant.configure("2") do |config|
24
26
  config.vm.box = "quantal64"
25
27
  config.vm.provision :ventriloquist do |env|
26
- env.services << %w( redis pg:9.1 mailcatcher )
27
- env.platforms << %w( nodejs ruby:1.9.3 )
28
+ env.services << %w( redis-2.8 postgres-9.1 mailcatcher-0.5 )
29
+ env.platforms << %w( nodejs-0.10 ruby-1.9.3 )
28
30
  end
29
31
  end
30
32
  ```
@@ -40,22 +42,9 @@ end
40
42
  to legacy projects.
41
43
 
42
44
 
43
- ## Status
44
-
45
- Basically a "stable experiment", I've been using VMs configured with the plugin
46
- for the last 3 months and I tested it against the following Ubuntu VMs using
47
- Docker 0.6.5+ and Vagrant 1.3.0+:
48
-
49
- * http://bit.ly/vagrant-lxc-raring64-2013-10-23 (yes! LXC inception :)
50
- * http://cloud-images.ubuntu.com/vagrant/raring/current/raring-server-cloudimg-amd64-vagrant-disk1.box
51
-
52
- _Please note that in order to use the plugin on [vagrant-lxc](https://github.com/fgrehm/vagrant-lxc)
53
- containers you need some [extra steps](#usage-with-vagrant-lxc) described below_
54
-
55
-
56
45
  ## Installation
57
46
 
58
- Make sure you have Vagrant 1.2+ and run:
47
+ Make sure you have Vagrant 1.5+ and run:
59
48
 
60
49
  ```
61
50
  vagrant plugin install ventriloquist
@@ -69,15 +58,15 @@ Add the provisioner block to your Vagrantfile and `vagrant up` it:
69
58
  ```ruby
70
59
  Vagrant.configure("2") do |config|
71
60
  config.vm.provision :ventriloquist do |env|
72
- # Pick the Docker version you want to use (defaults to 0.7.0)
61
+ # Pick the Docker version you want to use (defaults to 0.9.1)
73
62
  # or use :latest to install the latest version available
74
- env.docker_version = '0.6.7'
63
+ env.docker_version = '0.9.1'
75
64
 
76
65
  # Pick the services you need to have around
77
- env.services << %w( redis pg:9.1 memcached elasticsearch )
66
+ env.services << %w( redis-2.8 postgres-9.1 memcached-1.4 elasticsearch-1.1 )
78
67
 
79
68
  # Configure your development environment
80
- env.platforms << %w( nodejs ruby:2.0.0 go )
69
+ env.platforms << %w( nodejs-0.10 ruby-2.0.0 go-1.2 )
81
70
 
82
71
  # Install random packages
83
72
  env.packages << %w( imagemagick htop sqlite3 )
@@ -100,18 +89,18 @@ end
100
89
 
101
90
  ## Available services
102
91
 
103
- | Name | Provides | Notes |
104
- | ------------- | -------------- | ----- |
105
- | elasticsearch | 0.90.7 | Runs on port 9200 |
106
- | memcached | 1.4.15 | Runs on port 11211 |
107
- | pg | PostgreSQL 9.3 | Runs on port 5432 and adds an `export PGHOST=localhost` to the guest's `/etc/profile.d/ventriloquist`. It will also install the `postgresql-client` and `libpq-dev` packages on the guest. |
108
- | pg:9.2 | PostgreSQL 9.2 | Same as above |
109
- | pg:9.1 | PostgreSQL 9.1 | Same as above |
110
- | mysql | 5.6 | Runs on port 3306 and creates a `/home/vagrant/.my.conf`. It will also install the `mysql-client` and `libmysqlclient-dev` packages on the guest. |
111
- | mysql:5.5 | 5.5 | Same as above |
112
- | redis | 2.8.2 | Runs on port 6379 and installs / compiles the `redis-cli` excutable |
113
- | mailcatcher | 0.5.12 | SMPT server runs on 1025 and web interface on 1080 |
114
- | rethinkdb | 1.11.0 | Uses the 28015 port for the client driver, 29015 for the intracluster connections and 8080 for the administrative web UI |
92
+ | Name | Notes |
93
+ | ----------------- | ----- |
94
+ | elasticsearch-1.1 | Runs on port 9200 |
95
+ | memcached-1.4 | Runs on port 11211 |
96
+ | postgres-9.3 | Runs on port 5432 and adds an `export PGHOST=localhost` to the guest's `/etc/profile.d/ventriloquist`. It will also install the `postgresql-client` and `libpq-dev` packages on the guest. |
97
+ | postgres-9.2 | Same as above |
98
+ | postgres-9.1 | Same as above |
99
+ | mysql-5.6 | Runs on port 3306 and creates a `/home/vagrant/.my.conf`. It will also install the `mysql-client` and `libmysqlclient-dev` packages on the guest. |
100
+ | mysql-5.5 | Same as above |
101
+ | redis-2.8 | Runs on port 6379 and installs / compiles the `redis-cli` excutable |
102
+ | mailcatcher-0.5 | SMPT server runs on 1025 and web interface on 1080 |
103
+ | rethinkdb-1.12 | Uses the 28015 port for the client driver, 29015 for the intracluster connections and 8080 for the administrative web UI |
115
104
 
116
105
  The `services` parameter passed in on the Vagrantfile are the ones built with the
117
106
  Dockerfiles available under [_/services_](services) that are configured to require
@@ -125,59 +114,52 @@ PostgreSQL will involve installing the `postgresql-client` package and adding an
125
114
  `export PGHOST=localhost` to the guest's `/etc/profiles.d/ventriloquist.sh` so that
126
115
  the `psql` client works without any extra params.
127
116
 
128
- Please note that all of the builtin images are available on the [Docker index](https://index.docker.io/)
129
- with the `fgrehm/ventriloquist-` prefix that is ommited on the table above.
117
+ Please note that all of the builtin images are available as trusted builds on the
118
+ [Docker index](https://index.docker.io/) with the `fgrehm/ventriloquist-` prefix
119
+ that is ommited on the table above.
130
120
 
131
- Since services are just Docker images, you can build your own image, push to the
132
- registry and use it on your Vagrantfile, you'll just need to specify its fully
133
- qualified name and the corresponding Ventriloquist service:
121
+ For fine grained control over how Ventriloquist runs images:
134
122
 
135
123
  ```ruby
136
124
  Vagrant.configure("2") do |config|
137
125
  config.vm.provision :ventriloquist do |env|
138
126
  env.services << {
139
- redis: { image: 'username/redis' },
140
- pg: { image: 'otheruser/pg', tag: 'latest' }
127
+ redis: { image: 'username/redis' },
128
+ postgres: { image: 'otheruser/postgres' }
141
129
  }
142
130
 
143
131
  # If you need more instances of a service, you'll need to give it a unique
144
132
  # name and fine tune it at will, for example:
145
133
  env.services << {
146
- # This is basically a Vocker container definition
147
- api_db: { image: 'otheruser/pg', ports: [':5432'] },
134
+ # This is simple Vagrant Docker provisioner container
135
+ api_db: { image: 'otheruser/postgres', args: '-p :5432' },
148
136
 
149
- # The 'vimage' saves you from typing in `image: 'fgrehm/ventriloquist-redis'`
150
- worker_redis: { vimage: 'redis' },
137
+ # The 'vimage' saves you from typing in `image: 'fgrehm/ventriloquist-redis-2.8'`
138
+ worker_redis: { vimage: 'redis-2.8', type: 'redis', args: '-P' },
151
139
 
152
140
  # The 'type' parameter tells Ventriloquist to configure the service with
153
141
  # its defaults and does some extra work (like installing additional packages)
154
142
  # if the service requires it
155
- worker_db: { image: 'your-user/your-pg', type: 'pg' },
143
+ worker_db: { image: 'your-user/your-postgres', type: 'postgres' },
156
144
  }
157
145
  end
158
146
  end
159
147
  ```
160
148
 
161
- For more information on creating / running Docker containers please have a look
162
- at [Vocker](https://github.com/fgrehm/vocker)'s documentation.
163
-
164
- If you want to build your own service and don't have plans to deploy your
165
- containers to production, make sure you "[inherit](services/redis/Dockerfile#L5)"
166
- your services from the [`fgrehm/ventriloquist-base`](services/base/Dockerfile)
167
- image in order to save on some disk space.
149
+ _See http://docs.vagrantup.com/v2/provisioning/docker.html for other arguments_
168
150
 
169
151
 
170
152
  ## Available platforms
171
153
 
172
- | Name | Provides |
154
+ | Name | Notes |
173
155
  | --------- | ----------------- |
174
- | ruby | rvm + Ruby 2.0.0 |
175
- | go | 1.2 |
176
- | nodejs | nvm + Nodejs 0.10 |
177
- | phantomjs | 1.9.2 |
178
- | erlang | The latest version available at https://packages.erlang-solutions.com/erlang/ (currently R16B02) |
179
- | elixir | 0.11.2 |
180
- | python | pyenv + 3.3.2 |
156
+ | ruby | Uses rvm for installing rubies |
157
+ | go | Downloads from https://code.google.com/p/go/downloads/list |
158
+ | nodejs | Uses nvm for installing node versions |
159
+ | phantomjs | Downloads from https://bitbucket.org/ariya/phantomjs/downloads or https://code.google.com/p/phantomjs/downloads/list |
160
+ | erlang | The latest version available at https://packages.erlang-solutions.com/erlang/ (currently R16B03-1) |
161
+ | elixir | Downloads from https://github.com/elixir-lang/elixir/releases |
162
+ | python | Uses pyenv for installing python versions |
181
163
 
182
164
  In order to configure the VM for usage with the programming language that your
183
165
  app is written on, the plugin leverages Vagrant's [guest capabilities](http://docs.vagrantup.com/v2/plugins/guest-capabilities.html)
@@ -185,10 +167,27 @@ to deal with distribution specifics. Right now things should work just fine on
185
167
  Ubuntu VMs and you'll be warned in case you specify a something that is not supported
186
168
  on your guest machine.
187
169
 
188
- Unless you specify the version to use (like in `ruby:1.9.3` from the Discourse
189
- example above), the latest version of the available platforms will be installed.
190
- For example, if you omit the Ruby version you want to use, Ventriloquist will
191
- install 2.0.0 with the latest path level.
170
+ Platforms like `ruby`, `nodejs` and `python` also support installing multiple
171
+ versions since we rely on tools that take care of that for us:
172
+
173
+ ```ruby
174
+ Vagrant.configure("2") do |config|
175
+ config.vm.provision :ventriloquist do |env|
176
+ env.platforms << {
177
+ # The first version provided will be set as the default
178
+ nodejs: { versions: ['0.10', '0.9'] },
179
+ ruby: { versions: ['2.1.1', '2.1.0'] }
180
+
181
+ # The code above is the same as
182
+ env.platforms << %w( nodejs-0.9 nodejs-0.10 ruby-2.1.1 ruby-2.1.0 )
183
+ }
184
+ end
185
+ end
186
+ ```
187
+
188
+ _NOTICE: Previous versions of the plugin allowed users to omit the platform version
189
+ to be installed, but starting with 0.5.0 you need to set it explicitly on your
190
+ `Vagrantfile` (ex: `env.platforms << 'ruby'` becomes `env.platforms << 'ruby-2.1.1`)_
192
191
 
193
192
 
194
193
  ## System packages
@@ -227,70 +226,24 @@ you run a `apt-get upgrade` or the equivalent.
227
226
  * Use a Docker container as the dev environment within the Vagrant VM, maybe using
228
227
  [Buildstep](https://github.com/progrium/buildstep) or something like it to
229
228
  configure it.
230
- * Allow services configuration from the Vagrantfile (like setting the max memory
231
- used by memcached for example)
232
- * Saner defaults for services (none of the provided services have memory / connection
233
- limits or the like)
234
- * Make use of Docker data volumes for services to avoid loosing data
235
- * Introduce "profiles" - `heroku:free` for example would limit postgresql / memcached
236
- / etc resources (like max memory / connections) to what people will get there.
237
229
  * Support for installing "random" tools / packages from within the Vagrantfile
238
230
  (like git / sqlite3 / heroku toolbelt / ruby gems / npm packages)
239
- * Leverage [vagrant-cachier](https://github.com/fgrehm/vagrant-cachier) during
240
- provisioning
241
- * Convert provisioning code to a set of bash scripts so that it can be reused
242
- outside of Vagrant environments as well (maybe use them for building [Packer](http://www.packer.io/)
243
- images)
244
231
 
245
232
 
246
233
  ### Usage with [vagrant-lxc](https://github.com/fgrehm/vagrant-lxc)
247
234
 
248
- If you are on a Linux machine, you can use vagrant-lxc to avoid messing up with
249
- your working environment. While developing this plugin I was able to recreate
250
- containers that were capable of using Docker without issues multiple times on
251
- an up to date Ubuntu 13.04 host and guest.
252
-
253
- In order to allow a vagrant-lxc container to boot nested Docker containers you'll
254
- just need to `apt-get install apparmor-utils && aa-complain /usr/bin/lxc-start`
255
- and add the code below to your Vagrantfile:
235
+ If you are on a Linux machine and want to use vagrant-lxc you'll need to enable
236
+ container nesting by adding the code below to your Vagrantfile:
256
237
 
257
238
  ```ruby
258
239
  Vagrant.configure("2") do |config|
240
+ # vagrant-lxc specific tweaks for getting docker to run inside the container
259
241
  config.vm.provider :lxc do |lxc|
260
242
  lxc.customize 'aa_profile', 'unconfined'
261
243
  end
262
-
263
- config.vm.provision :shell, inline: %[
264
- if ! [ -f /etc/default/lxc ]; then
265
- cat <<STR > /etc/default/lxc
266
- LXC_AUTO="true"
267
- USE_LXC_BRIDGE="true"
268
- LXC_BRIDGE="lxcbr0"
269
- LXC_ADDR="10.0.252.1"
270
- LXC_NETMASK="255.255.255.0"
271
- LXC_NETWORK="10.0.252.0/24"
272
- LXC_DHCP_RANGE="10.0.252.2,10.0.252.254"
273
- LXC_DHCP_MAX="253"
274
- LXC_SHUTDOWN_TIMEOUT=120
275
- STR
276
- fi
277
- ]
278
244
  end
279
245
  ```
280
246
 
281
- The LXC networking configs are only required if you are on an Ubuntu host as
282
- it automatically creates the `lxcbr0` bridge for you on the host machine and
283
- if you don't do that the vagrant-lxc container will end up crashing as it
284
- will collide with the host's `lxcbr0`.
285
-
286
-
287
- ## Support
288
-
289
- Support this project and [others by fgrehm](https://github.com/fgrehm)
290
- via [gittip](https://www.gittip.com/fgrehm/).
291
-
292
- [![Support via Gittip](https://rawgithub.com/twolfson/gittip-badge/0.1.0/dist/gittip.png)](https://www.gittip.com/fgrehm/)
293
-
294
247
 
295
248
  ## Contributing
296
249
 
@@ -299,5 +252,3 @@ via [gittip](https://www.gittip.com/fgrehm/).
299
252
  3. Commit your changes (`git commit -am 'Add some feature'`)
300
253
  4. Push to the branch (`git push origin my-new-feature`)
301
254
  5. Create new Pull Request
302
-
303
- [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/fgrehm/ventriloquist/trend.png)](https://bitdeli.com/free "Bitdeli Badge")