vagrant-proxyconf 1.5.2 → 2.0.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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +15 -14
  4. data/CHANGELOG.md +19 -0
  5. data/Gemfile +25 -7
  6. data/LICENSE.txt +1 -1
  7. data/README.md +117 -18
  8. data/Rakefile +1 -27
  9. data/development/Dockerfile +40 -0
  10. data/development/README.md +2 -0
  11. data/development/Vagrantfile.example +156 -9
  12. data/development/install-c7.sh +46 -0
  13. data/development/install-debian.sh +55 -0
  14. data/development/tinyproxy.conf +333 -0
  15. data/lib/vagrant-proxyconf/action.rb +15 -7
  16. data/lib/vagrant-proxyconf/action/base.rb +47 -5
  17. data/lib/vagrant-proxyconf/action/configure_apt_proxy.rb +17 -0
  18. data/lib/vagrant-proxyconf/action/configure_chef_proxy.rb +32 -27
  19. data/lib/vagrant-proxyconf/action/configure_docker_proxy.rb +113 -12
  20. data/lib/vagrant-proxyconf/action/configure_env_proxy.rb +58 -11
  21. data/lib/vagrant-proxyconf/action/configure_git_proxy.rb +25 -9
  22. data/lib/vagrant-proxyconf/action/configure_npm_proxy.rb +14 -6
  23. data/lib/vagrant-proxyconf/action/configure_pear_proxy.rb +15 -8
  24. data/lib/vagrant-proxyconf/action/configure_svn_proxy.rb +15 -8
  25. data/lib/vagrant-proxyconf/action/configure_yum_proxy.rb +16 -0
  26. data/lib/vagrant-proxyconf/cap/linux/chef_proxy_conf.rb +17 -0
  27. data/lib/vagrant-proxyconf/cap/linux/docker_proxy_conf.rb +2 -1
  28. data/lib/vagrant-proxyconf/cap/linux/yum_proxy_conf.rb +19 -0
  29. data/lib/vagrant-proxyconf/cap/util.rb +4 -5
  30. data/lib/vagrant-proxyconf/capability.rb +10 -0
  31. data/lib/vagrant-proxyconf/config.rb +20 -0
  32. data/lib/vagrant-proxyconf/config/chef_proxy.rb +25 -0
  33. data/lib/vagrant-proxyconf/config/docker_proxy.rb +25 -0
  34. data/lib/vagrant-proxyconf/config/git_proxy.rb +3 -0
  35. data/lib/vagrant-proxyconf/config/npm_proxy.rb +25 -0
  36. data/lib/vagrant-proxyconf/config/pear_proxy.rb +19 -0
  37. data/lib/vagrant-proxyconf/version.rb +1 -1
  38. data/locales/en.yml +38 -0
  39. data/resources/yum_config.awk +1 -0
  40. data/spec/spec_helper.rb +27 -9
  41. data/spec/unit/fixtures/docker_client_config_json_enabled_proxy +9 -0
  42. data/spec/unit/fixtures/docker_client_config_json_no_proxy +5 -0
  43. data/spec/unit/fixtures/etc_environment_only_http_proxy.conf +9 -0
  44. data/spec/unit/fixtures/yum_with_repository_and_proxy_containing_special_chars.conf +10 -0
  45. data/spec/unit/vagrant-proxyconf/action/base_spec.rb +191 -0
  46. data/spec/unit/vagrant-proxyconf/action/configure_apt_proxy_spec.rb +162 -0
  47. data/spec/unit/vagrant-proxyconf/action/configure_chef_proxy_spec.rb +32 -0
  48. data/spec/unit/vagrant-proxyconf/action/configure_docker_proxy_spec.rb +489 -0
  49. data/spec/unit/vagrant-proxyconf/action/configure_env_proxy_spec.rb +105 -4
  50. data/spec/unit/vagrant-proxyconf/action/configure_git_proxy_spec.rb +116 -0
  51. data/spec/unit/vagrant-proxyconf/action/configure_npm_proxy_spec.rb +67 -0
  52. data/spec/unit/vagrant-proxyconf/action/configure_pear_proxy_spec.rb +116 -0
  53. data/spec/unit/vagrant-proxyconf/action/configure_svn_proxy_spec.rb +85 -0
  54. data/spec/unit/vagrant-proxyconf/action/configure_yum_proxy_spec.rb +100 -0
  55. data/spec/unit/vagrant-proxyconf/cap/linux/docker_proxy_conf_spec.rb +1 -1
  56. data/spec/unit/vagrant-proxyconf/cap/util_spec.rb +2 -2
  57. data/spec/unit/vagrant-proxyconf/config/key_mixin_spec.rb +1 -1
  58. data/spec/unit/vagrant-proxyconf/resources/yum_config_spec.rb +14 -0
  59. data/travis/before_install +26 -0
  60. metadata +24 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57a68635cfc9a1ce7ad88b14d65ff04950f43b7b
4
- data.tar.gz: 182af0796244d4b82b6eb6cc9338b2cc3212361b
3
+ metadata.gz: 29246610a402d179b8e3ac8f2d4f5761ffa37a0d
4
+ data.tar.gz: d35190d33063c461b8a4cf5551493b5d9c7d3673
5
5
  SHA512:
6
- metadata.gz: 31c746c218e6f4f65e9b3cbe88c09b7ca4d0e2efe472193d4571c60b531ad0241d76d55579a00673b08d9d543bf5eacfe6a9800e0baa6326408a344eda6b0e0b
7
- data.tar.gz: 12fc3b6db9dc5511dcba1f21b0e77d1f796c734613420cd3c4b5672a0b10a6cec7131138c203d839c05a21235b092077ca842465f4bdca1142f8a22b28445209
6
+ metadata.gz: ca2472979189cd4471b56e2a350796d496323616e1dff2cff864a6a8f092096a385556f999eea8dc418d23e71a56dd55cb738d47ca3973bc4bddc26cb9418737
7
+ data.tar.gz: '049c14499abe8e93de88abee505026e6a68c0ca7f062a5d9ad370a51c296684b7e17d647d0205db43b84c270b50aee2c29bfda1e624fa9f0edb63d627c398d08'
data/.gitignore CHANGED
@@ -4,3 +4,4 @@
4
4
  /doc
5
5
  /tmp
6
6
  vagrant-proxyconf-*.gem
7
+ /vendor
@@ -2,24 +2,25 @@ language: ruby
2
2
  cache: bundler
3
3
  sudo: false
4
4
 
5
- before_install:
6
- - rvm @global do gem uninstall bundler --all --executables
7
- - gem uninstall bundler --all --executables
8
- - gem install bundler --version '~> 1.5.2'
9
- - bundle --version
5
+ before_install: ./travis/before_install
10
6
  bundler_args: --without=development
11
7
 
12
- rvm: 2.0.0
13
- env: VAGRANT_VERSION=v1.7.2
8
+ env:
9
+ global:
10
+ - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
11
+
12
+ rvm: 2.4.4
14
13
  matrix:
15
14
  include:
16
- - env: VAGRANT_VERSION=v1.6.5
17
- - env: VAGRANT_VERSION=v1.5.4
18
- - env: VAGRANT_VERSION=v1.4.3
19
- - env: VAGRANT_VERSION=v1.3.5
20
- rvm: 1.9.3
21
- - env: VAGRANT_VERSION=v1.2.7
22
- rvm: 1.9.3
15
+ - env: VAGRANT_VERSION=v2.2.2
16
+ - env: VAGRANT_VERSION=v2.1.5
17
+ - env: VAGRANT_VERSION=v2.0.4
18
+ - env: VAGRANT_VERSION=v1.9.8
19
+ rvm: 2.3.4
20
+ - env:
21
+ - VAGRANT_VERSION=v1.8.7
22
+ - BUNDLER_VERSION=1.12.5
23
+ rvm: 2.2.5
23
24
  - env: VAGRANT_VERSION=master
24
25
  allow_failures:
25
26
  - env: VAGRANT_VERSION=master
@@ -1,3 +1,22 @@
1
+ # 2.0.0 / 2019-01-03
2
+
3
+ Improvements:
4
+
5
+ - Significant refactor to support disabling a proxy. Now when `config.proxy.enabled = false` all supporting proxies will be uncofigured.
6
+ - Added new tests for new features.
7
+ - Updated README.md to reflect new behavior.
8
+ - Cleaned up travis builds to support newere versions of vagrant.
9
+
10
+ Features:
11
+ - Added new configuration parameter for `skipping` configuring a disabled or enabled proxy.
12
+
13
+ Bug Fixes:
14
+
15
+ - Disable proxy settings in provisioned box ([GH-167][])
16
+ - unable to disable proxy for chef provisioners ([GH-118][])
17
+ - Proxy remains enabled after updating config ([GH-87][])
18
+
19
+
1
20
  # 1.5.2 / 2015-10-01
2
21
 
3
22
  Improvements:
data/Gemfile CHANGED
@@ -1,22 +1,40 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ #### Added due to https://groups.google.com/forum/#!topic/vagrant-up/J8J6LmhzBqM/discussion
4
+ embedded_locations = %w(/Applications/Vagrant/embedded /opt/vagrant/embedded)
5
+
6
+ embedded_locations.each do |p|
7
+ ENV['VAGRANT_INSTALLER_EMBEDDED_DIR'] = p if File.directory?(p)
8
+ end
9
+
10
+ unless ENV.key?('VAGRANT_INSTALLER_EMBEDDED_DIR')
11
+ $stderr.puts "Couldn't find a packaged install of vagrant, and we need this"
12
+ $stderr.puts 'in order to make use of the RubyEncoder libraries.'
13
+ $stderr.puts 'I looked in:'
14
+ embedded_locations.each do |p|
15
+ $stderr.puts " #{p}"
16
+ end
17
+ end
18
+ #### End Added due to https://groups.google.com/forum/#!topic/vagrant-up/J8J6LmhzBqM/discussion
19
+
3
20
  gem 'vagrant',
4
- git: 'https://github.com/mitchellh/vagrant.git',
5
- ref: ENV.fetch('VAGRANT_VERSION', 'v1.7.2')
21
+ git: 'https://github.com/mitchellh/vagrant.git',
22
+ ref: ENV.fetch('VAGRANT_VERSION', 'v2.2.2')
6
23
 
7
- gem 'cane', '~> 2.6'
8
- gem 'coveralls', require: false
9
24
  gem 'rake'
10
25
  gem 'rspec', '~> 3.1'
11
26
  gem 'rspec-its', '~> 1.0'
12
- gem 'tailor', '~> 1.4'
13
27
 
14
28
  group :development do
15
29
  gem 'guard-rspec'
16
30
  gem 'redcarpet'
17
- gem 'yard', '~> 0.8'
31
+ gem 'yard', '~> 0.9.11'
18
32
  end
19
33
 
34
+ # when testing our plugin we need to make sure some vagrant plugins are installed
35
+ # however, the syntax `Vagrant.require_plugin 'vagrant-proxyconf' was deprecated
36
+ # and this is the future for using testing vagrant behind bundler.
37
+ # https://stackoverflow.com/questions/19492738/demand-a-vagrant-plugin-within-the-vagrantfile
20
38
  group :plugins do
21
- gem 'vagrant-proxyconf', path: '.'
39
+ gem 'vagrant-proxyconf', path: __dir__
22
40
  end
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2013-2015 Teemu Matilainen <teemu.matilainen@iki.fi>
3
+ Copyright (c) 2013-2017 Teemu Matilainen <teemu.matilainen@iki.fi>
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,18 +1,11 @@
1
1
  # Proxy Configuration Plugin for Vagrant
2
2
 
3
3
  <span class="badges">
4
- [![Gem Version](https://badge.fury.io/rb/vagrant-proxyconf.png)][gem]
5
- [![Build Status](https://travis-ci.org/tmatilai/vagrant-proxyconf.png?branch=master)][travis]
6
- [![Dependency Status](https://gemnasium.com/tmatilai/vagrant-proxyconf.png)][gemnasium]
7
- [![Code Climate](https://codeclimate.com/github/tmatilai/vagrant-proxyconf.png)][codeclimate]
8
- [![Coverage Status](https://coveralls.io/repos/tmatilai/vagrant-proxyconf/badge.png)][coveralls]
9
- </span>
10
4
 
11
- [gem]: https://rubygems.org/gems/vagrant-proxyconf
12
- [travis]: https://travis-ci.org/tmatilai/vagrant-proxyconf
13
- [gemnasium]: https://gemnasium.com/tmatilai/vagrant-proxyconf
14
- [codeclimate]: https://codeclimate.com/github/tmatilai/vagrant-proxyconf
15
- [coveralls]: https://coveralls.io/r/tmatilai/vagrant-proxyconf
5
+ [![Gem Version](https://badge.fury.io/rb/vagrant-proxyconf.png)](https://rubygems.org/gems/vagrant-proxyconf)
6
+ [![Build Status](https://travis-ci.org/tmatilai/vagrant-proxyconf.svg?branch=master)](https://travis-ci.org/tmatilai/vagrant-proxyconf)
7
+
8
+ </span>
16
9
 
17
10
  A [Vagrant](http://www.vagrantup.com/) plugin that configures the virtual machine to use specified proxies. This is useful for example in case you are behind a corporate proxy server, or you have a caching proxy (for example [polipo](https://github.com/tmatilai/polipo-box)).
18
11
 
@@ -125,12 +118,12 @@ VAGRANT_HTTP_PROXY="http://proxy.example.com:8080" vagrant up
125
118
 
126
119
  ### Disabling the plugin
127
120
 
128
- The plugin can be totally skipped by setting `config.proxy.enabled` to `false` or empty string (`""`).
129
- This can be useful to for example disable it for some provider.
130
- Specific applications can be skipped by setting `config.proxy.enabled` to
131
- a hash( like `{ svn: false }`).
132
- This disabling keeps proxy configurations for applications on the guest.
133
- The configurations must be cleared before disabling if needed.
121
+ New Behavior Warning: Setting the plugin to disabled now unconfigures all or specific proxies.
122
+
123
+ The plugin can be disabled by setting `config.proxy.enabled` to `false` or empty string (`""`).
124
+ This can be also be used to disable a proxy for some provider.
125
+ Specific applications can be disabled by setting `config.proxy.enabled` to
126
+ a hash( like `{ svn: false }` or `{ svn: {enabled: false} }`).
134
127
 
135
128
  ```ruby
136
129
  config.proxy.enabled # => all applications enabled(default)
@@ -141,6 +134,53 @@ config.proxy.enabled = "" # => all applications disabled
141
134
  config.proxy.enabled = false # => all applications disabled
142
135
  ```
143
136
 
137
+ ### Skipping the plugin
138
+
139
+ The plugin can also be skipped from applying/removing the proxy configuration for a specific provider.
140
+
141
+ #### When the plugin is disabled as in the following example:
142
+
143
+ ```
144
+ {
145
+ :apt => {
146
+ :enabled => false,
147
+ :skip => true,
148
+ },
149
+ :svn => {
150
+ :enabled => false,
151
+ :skip => true,
152
+ },
153
+ }
154
+ ```
155
+
156
+ The plugin is disabled, but `skip = true` means that no proxy configuration will be removed so the system
157
+ will remain in it's most recent state. This can be useful if you just want to skip over specific provider
158
+ being configured or unconfigured.
159
+
160
+
161
+ #### When the plugin is enabled as in the following example:
162
+
163
+ ```
164
+ {
165
+ :apt => {
166
+ :enabled => true,
167
+ :skip => false,
168
+ },
169
+ :svn => {
170
+ :enabled => true,
171
+ :skip => true,
172
+ },
173
+ }
174
+ ```
175
+
176
+ The plugin is enabled, but `skip = true` means that no proxy configuration will be applied so the system
177
+ will remain in it's most recent state. This can be useful if you just want to skip over specific provider
178
+ being configured or unconfigured.
179
+
180
+ In the example above the `apt` proxy will be enabled and proxy configuration will be applied, but the
181
+ `svn` proxy even though it's enabled will be skipped.
182
+
183
+
144
184
  #### Example Vagrantfile
145
185
 
146
186
  ```ruby
@@ -186,12 +226,36 @@ end
186
226
  #### Environment variables
187
227
  These also override the Vagrantfile configuration. To disable or remove the proxy use "DIRECT" or an empty value.
188
228
 
189
- For example to spin up a VM, run:
229
+ For example to spin up a VM and set the APT proxy to `http://proxy.example.com:8080, run:
190
230
 
191
231
  ```sh
192
232
  VAGRANT_APT_HTTP_PROXY="http://proxy.example.com:8080" vagrant up
193
233
  ```
194
234
 
235
+ | Provider | Environment Variable | Descrption | Precendence |
236
+ |-----------|------------------------------|-------------------------------|-------------|
237
+ | apt | `VAGRANT_APT_HTTP_PROXY` | Configures APT http proxy | Highest |
238
+ | | `VAGRANT_APT_HTTPS_PROXY` | Configures APT https proxy | Highest |
239
+ | | `VAGRANT_APT_FTP_PROXY` | Configures APT ftp proxy | Highest |
240
+ | chef | `VAGRANT_CHEF_HTTP_PROXY` | Configures CHEF http proxy | Highest |
241
+ | | `VAGRANT_CHEF_HTTPS_PROXY` | Configures CHEF https proxy | Highest |
242
+ | | `VAGRANT_CHEF_NO_PROXY` | Configures CHEF no proxy | Highest |
243
+ | docker | `VAGRANT_DOCKER_HTTP_PROXY` | Configuers DOCKER http proxy | Highest |
244
+ | | `VAGRANT_DOCKER_HTTPS_PROXY` | Configures DOCKER https proxy | Highest |
245
+ | | `VAGRANT_DOCKER_NO_PROXY` | Configures DOCKER no proxy | Highest |
246
+ | env | `VAGRANT_ENV_HTTP_PROXY` | Configures ENV http proxy | Highest |
247
+ | | `VAGRANT_ENV_HTTPS_PROXY` | Configures ENV https proxy | Highest |
248
+ | | `VAGRANT_ENV_FTP_PROXY` | Configures ENV FTP proxy | Highest |
249
+ | | `VAGRANT_ENV_NO_PROXY` | Configures ENV no proxy | Highest |
250
+ | git | `VAGRANT_GIT_HTTP_PROXY` | Configures GIT http proxy | Highest |
251
+ | | `VAGRANT_GIT_HTTPS_PROXY` | Configures GIT https proxy | Highest |
252
+ | npm | `VAGRANT_NPM_HTTP_PROXY` | Configures NPM http proxy | Highest |
253
+ | | `VAGRANT_NPM_HTTPS_PROXY` | Configures NPM https proxy | Highest |
254
+ | | `VAGRANT_NPM_NO_PROXY` | Configures NPM no proxy | Highest |
255
+ | pear | `VAGRANT_PEAR_HTTP_PROXY` | Configures PEAR http proxy | Highest |
256
+ | svn | `VAGRANT_SVN_HTTP_PROXY` | Configures SVN http proxy | Highest |
257
+ | | `VAGRANT_SVN_NO_PROXY` | Configures SVN no proxy | Highest |
258
+ | yum | `VAGRANT_YUM_HTTP_PROXY` | Configures YUM http proxy | Highest |
195
259
 
196
260
  ## Related plugins and projects
197
261
 
@@ -201,3 +265,38 @@ VAGRANT_APT_HTTP_PROXY="http://proxy.example.com:8080" vagrant up
201
265
  a Vagrant setup for [polipo](http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/) caching web proxy.
202
266
  * [vagrant-cachier](https://github.com/fgrehm/vagrant-cachier)<br/>
203
267
  An excellent Vagrant plugin that shares various cache directories among similar VM instances. Should work fine together with vagrant-proxyconf.
268
+
269
+
270
+ ## Development Known Issues
271
+
272
+
273
+ ### When running `bundle exec vagrant status` I get `Encoded files can't be read outside of the Vagrant installer.`
274
+
275
+ ```
276
+ $ bundle exec vagrant status
277
+ Vagrant failed to initialize at a very early stage:
278
+
279
+ The plugins failed to load properly. The error message given is
280
+ shown below.
281
+
282
+ Encoded files can't be read outside of the Vagrant installer.
283
+ ```
284
+
285
+ The solution is to add this to the Gemfile
286
+
287
+ ```
288
+ embedded_locations = %w(/Applications/Vagrant/embedded /opt/vagrant/embedded)
289
+
290
+ embedded_locations.each do |p|
291
+ ENV['VAGRANT_INSTALLER_EMBEDDED_DIR'] = p if File.directory?(p)
292
+ end
293
+
294
+ unless ENV.key?('VAGRANT_INSTALLER_EMBEDDED_DIR')
295
+ $stderr.puts "Couldn't find a packaged install of vagrant, and we need this"
296
+ $stderr.puts 'in order to make use of the RubyEncoder libraries.'
297
+ $stderr.puts 'I looked in:'
298
+ embedded_locations.each do |p|
299
+ $stderr.puts " #{p}"
300
+ end
301
+ end
302
+ ```
data/Rakefile CHANGED
@@ -1,9 +1,7 @@
1
1
  require 'bundler/gem_tasks'
2
- require 'cane/rake_task'
3
2
  require 'rspec/core/rake_task'
4
- require 'tailor/rake_task'
5
3
 
6
- task :default => [:test, :quality]
4
+ task :default => :test
7
5
 
8
6
  # Remove 'install' task as the gem is installed to Vagrant, not to system
9
7
  Rake::Task[:install].clear
@@ -17,30 +15,6 @@ desc "Run all tests"
17
15
  task :test => ['test:unit']
18
16
  task :spec => :test
19
17
 
20
- Tailor::RakeTask.new do |task|
21
- task.file_set('lib/**/*.rb', 'code') do |style|
22
- style.allow_unnecessary_double_quotes false, level: :off
23
- style.max_line_length 100, level: :warn
24
- style.max_line_length 140, level: :error
25
- end
26
- task.file_set('spec/**/*.rb', 'tests') do |style|
27
- style.allow_unnecessary_double_quotes false, level: :off
28
- style.max_line_length 120, level: :warn
29
- # allow vertical alignment of `let(:foo) { block }` blocks
30
- style.spaces_before_lbrace 1, level: :off
31
- style.indentation_spaces 2, level: :off
32
- end
33
- end
34
-
35
- Cane::RakeTask.new(:cane) do |task|
36
- task.abc_max = 16
37
- task.style_measure = 140
38
- task.options[:color] = true
39
- end
40
-
41
- desc 'Run all quality tasks'
42
- task :quality => [:cane, :tailor]
43
-
44
18
  desc "Update gh-pages"
45
19
  task 'gh-pages' do
46
20
  require 'tmpdir'
@@ -0,0 +1,40 @@
1
+ # https://gist.github.com/codylane/6ebee3595a02f57d35c325db4e102c55
2
+ FROM centos:7
3
+
4
+ EXPOSE 22
5
+
6
+ RUN yum clean all && \
7
+ yum makecache fast && \
8
+ yum -y install \
9
+ curl \
10
+ device-mapper-persistent-data \
11
+ git \
12
+ lvm2 \
13
+ openssh-clients \
14
+ openssh-server \
15
+ rsync \
16
+ sudo \
17
+ wget \
18
+ yum-utils && \
19
+ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
20
+ yum clean expire-cache && \
21
+ yum install -y docker-ce && \
22
+ /usr/sbin/sshd-keygen && \
23
+ getent passwd vagrant || useradd -m -d /home/vagrant -s /bin/bash vagrant && \
24
+ echo "vagrant:vagrant" | chpasswd && \
25
+ mkdir -p /etc/sudoers.d && \
26
+ echo 'Defaults:vagrant !requiretty' > /etc/sudoers.d/vagrant && \
27
+ echo 'vagrant ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers.d/vagrant && \
28
+ chmod 0440 /etc/sudoers.d/vagrant && \
29
+ visudo -cf /etc/sudoers.d/vagrant && \
30
+ mkdir -p /var/run/sshd && \
31
+ mkdir -p /home/vagrant/.ssh && \
32
+ touch /home/vagrant/.ssh/authorized_keys
33
+
34
+ RUN grep -q 'OHlnVYCzRdK8jlqm8tehUc9c9WhQ==' /home/vagrant/.ssh/authorized_keys || echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" >> /home/vagrant/.ssh/authorized_keys && \
35
+ chmod 0600 /home/vagrant/.ssh/authorized_keys && \
36
+ chown vagrant:vagrant /home/vagrant/.ssh/authorized_keys
37
+
38
+ # -e write logs to stderr
39
+ # -D run in foreground
40
+ CMD ["/usr/sbin/sshd", "-e", "-D"]
@@ -6,6 +6,8 @@
6
6
 
7
7
  2. Spin up the machine:
8
8
 
9
+ * If you don't have an external proxy set ENABLE_PROXY=false on the first run of the vm, then switch it to `true` after the VM has been built to avoid using the proxy before it is setup.
10
+
9
11
  bundle exec vagrant up
10
12
 
11
13
  3. Test, hack, edit _Vagrantfile_ and test again:
@@ -1,20 +1,167 @@
1
1
  # -*- mode: ruby -*-
2
2
  # vi: set ft=ruby :
3
+ require 'uri'
3
4
 
4
- BOX = ENV.fetch('BOX', 'ubuntu-12.04')
5
+ BOX = ENV.fetch('BOX', 'ubuntu/bionic64')
6
+ DISABLE_SHARE = true
7
+ ENABLE_PROXY = false
8
+ ENABLE_APP_SPECIFIC_PROXIES = !ENABLE_PROXY
5
9
 
6
- Vagrant.require_plugin 'vagrant-proxyconf'
10
+ APP_PROXIES = {
11
+ :apt => {
12
+ :enabled => true,
13
+ :skip => false,
14
+ },
15
+ :chef => {
16
+ :enabled => true,
17
+ :skip => false,
18
+ },
19
+ :docker => {
20
+ :enabled => true,
21
+ :skip => false
22
+ },
23
+ :env => {
24
+ :enabled => true,
25
+ :skip => false,
26
+ },
27
+ :git => {
28
+ :enabled => true,
29
+ :skip => false,
30
+ },
31
+ :npm => {
32
+ :enabled => true,
33
+ :skip => false,
34
+ },
35
+ :pear => {
36
+ :enabled => true,
37
+ :skip => false
38
+ },
39
+ :svn => {
40
+ :enabled => true,
41
+ :skip => false,
42
+ },
43
+ :yum => {
44
+ :enabled => true,
45
+ :skip => false,
46
+ },
47
+ }
48
+
49
+
50
+ DOCKER_SOCKET = "/var/run/docker.sock"
51
+ SUPPORTS_DOCKER_IN_DOCKER = File.exists?(DOCKER_SOCKET)
52
+
53
+ GLOBAL_PROXY_HOST = URI.parse(
54
+ ENV.fetch('HTTP_PROXY', '')
55
+ ).hostname
56
+
57
+ GLOBAL_PROXY_PORT = URI.parse(
58
+ ENV.fetch('HTTP_PROXY', '')
59
+ ).port
60
+
61
+ GLOBAL_NO_PROXY = ENV.fetch('NO_PROXY', '')
62
+
63
+ PROXY_HOST = GLOBAL_PROXY_HOST || '70.70.70.10'
64
+ PROXY_PORT = GLOBAL_PROXY_PORT || '8888'
65
+ NO_PROXY = GLOBAL_NO_PROXY || "localhost,*.localdomain"
7
66
 
8
67
  Vagrant.configure('2') do |config|
9
- # Apt proxy
10
- config.apt_proxy.http = '192.168.33.200'
11
- config.apt_proxy.https = 'DIRECT'
68
+ raise Exception, "Please install vagrant-proxyconf" unless Vagrant.has_plugin?('vagrant-proxyconf')
69
+
70
+ # config.proxy.enabled = true
71
+ config.proxy.http = "http://#{PROXY_HOST}:#{PROXY_PORT}"
72
+ config.proxy.https = "http://#{PROXY_HOST}:#{PROXY_PORT}"
73
+ config.proxy.no_proxy = "#{NO_PROXY}"
74
+
75
+ # APT proxy
76
+ # config.apt_proxy.http = 'http://#{PROXY_HOST}:#{PROXY_PORT}'
77
+ # config.apt_proxy.https = 'https://#{PROXY_HOST}:#{PROXY_PORT}'
78
+
79
+ # CHEF proxy
80
+ # config.chef_proxy.http = 'http://#{PROXY_HOST}:#{PROXY_PORT}'
81
+ # config.chef_proxy.https = 'https://#{PROXY_HOST}:#{PROXY_PORT}'
82
+ # config.chef_proxy.no_proxy = "#{NO_PROXY}"
83
+
84
+ # DOCKER proxy
85
+ # config.docker_proxy.http = config.proxy.http
86
+ # config.docker_proxy.https = config.proxy.https
87
+ # config.docker_proxy.no_proxy = config.proxy.no_proxy
88
+
89
+ # GIT proxy
90
+ # config.git_proxy.http = config.proxy.http
91
+ # config.git_proxy.https = config.proxy.https
92
+
93
+ # NPM proxy
94
+ # config.npm_proxy.http = config.proxy.http
95
+ # config.npm_proxy.https = config.proxy.https
96
+ # config.npm_proxy.no_proxy = config.proxy.no_proxy
97
+
98
+ # PEAR proxy
99
+ # config.pear_proxy.http = config.proxy.http
100
+
101
+ # SVN proxy
102
+ # config.svn_proxy.http = config.proxy.http
103
+ # config.svn_proxy.no_proxy = config.proxy.no_proxy
104
+
105
+ # YUM proxy
106
+ # config.yum_proxy.http = config.proxy.http
107
+
108
+ # app specific proxies
109
+ if ENABLE_APP_SPECIFIC_PROXIES
110
+ config.proxy.enabled = {}
111
+
112
+ APP_PROXIES.each do |k, v|
113
+ config.proxy.enabled[k] = v
114
+ end
115
+ else
116
+ config.proxy.enabled = ENABLE_PROXY
117
+ end
12
118
 
13
119
  # Disable the default share
14
- config.vm.synced_folder '.', '/vagrant', id: 'vagrant-root', disabled: true
120
+ config.vm.synced_folder '.', '/vagrant', id: 'vagrant-root', disabled: DISABLE_SHARE
121
+
122
+ # config.vm.provision :chef_solo do |chef|
123
+ # chef.cookbooks_path = "."
124
+ # chef.install = true
125
+ # end
126
+
127
+ # Vagrant >= 1.7 wants to replace the insecure_key with public boxes, but
128
+ # there is a bug in that implentation so we just allow the insecure_key
129
+ # anyway.
130
+ config.ssh.insert_key = false
131
+ config.vm.box_check_update = false
132
+
133
+ config.vm.define "default" do |default|
134
+ # set this to true, if you want to use a global proxy
135
+ default.proxy.enabled = false if !GLOBAL_PROXY_HOST
136
+ default.proxy.enabled = {
137
+ :apt => false
138
+ }
139
+
140
+ default.vm.box = BOX
141
+
142
+ default.vm.provision "file", source: "./tinyproxy.conf", destination: "/tmp/tinyproxy.conf"
143
+ default.vm.provision :shell, path: 'install-debian.sh'
144
+
145
+ default.vm.network "private_network", ip: "70.70.70.10"
146
+ end
147
+
148
+ config.vm.define "centos7-client" do |centos7|
149
+ centos7.proxy.enabled = config.proxy.enabled
150
+ centos7.vm.box = "centos/7"
151
+
152
+ centos7.vm.network "private_network", ip: "70.70.70.20"
153
+
154
+ centos7.vm.provision :shell, path: 'install-c7.sh'
155
+ end
156
+
157
+ config.vm.provider :virtualbox do |vb, override|
158
+ # override.proxy.enabled = ENABLE_PROXY
159
+ vb.cpus = 1
160
+ vb.memory = 1024
161
+
162
+ vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ] if config.vm.box =~ /xenial|bionic/
15
163
 
16
- config.vm.box = BOX
17
- if BOX == 'ubuntu-12.04'
18
- config.vm.box_url = 'https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_provisionerless.box'
164
+ vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
165
+ vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
19
166
  end
20
167
  end