diff --git a/lib/vagrant-proxyconf/cap/debian/docker_proxy_conf.rb b/lib/vagrant-proxyconf/cap/debian/docker_proxy_conf.rb new file mode 100644 index 0000000..035e478 --- /dev/null +++ b/lib/vagrant-proxyconf/cap/debian/docker_proxy_conf.rb @@ -0,0 +1,32 @@ +require_relative '../util' + +module VagrantPlugins + module ProxyConf + module Cap + module Debian + # Capability for docker proxy configuration + module DockerProxyConf + # @return [String, false] the path to docker or `false` if not found + def self.docker_proxy_conf(machine) + return false unless Util.which(machine, 'docker') + + machine.communicate.tap do |comm| + src_file = '/lib/systemd/system/docker.service' + dst_file = '/etc/systemd/system/docker.service' + tmp_file = '/tmp/docker.service' + env_file = 'EnvironmentFile=-\/etc\/default\/docker' + comm.sudo("sed -e 's/\\[Service\\]/[Service]\\n#{env_file}/g' #{src_file} > #{tmp_file}") + unless comm.test("diff #{tmp_file} #{dst_file}") + # update config and restart docker when config changed + comm.sudo("mv -f #{tmp_file} #{dst_file}") + comm.sudo('systemctl daemon-reload') + end + comm.sudo("rm -f #{tmp_file}") + end + '/etc/default/docker' + end + end + end + end + end +end diff --git a/lib/vagrant-proxyconf/capability.rb b/lib/vagrant-proxyconf/capability.rb index 4b9d8ec..67b271b 100644 --- a/lib/vagrant-proxyconf/capability.rb +++ b/lib/vagrant-proxyconf/capability.rb @@ -18,6 +18,11 @@ class Plugin < Vagrant.plugin('2') Cap::CoreOS::DockerProxyConf end + guest_capability 'debian', 'docker_proxy_conf' do + require_relative 'cap/debian/docker_proxy_conf' + Cap::Debian::DockerProxyConf + end + guest_capability 'linux', 'env_proxy_conf' do require_relative 'cap/linux/env_proxy_conf' Cap::Linux::EnvProxyConf