summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2015-01-27 00:52:07 +0100
committerMichael Adam <obnox@samba.org>2015-01-27 00:52:07 +0100
commit4f6b80e6bd1eedfd29ad28937f1e3f90357be50a (patch)
tree9e499585b83223875d4742fe66280df8af208a64
parentf65a67ce5f393491819c85ff2a1665f3850ddb21 (diff)
downloadfedora-vagrant-lxc-4f6b80e6bd1eedfd29ad28937f1e3f90357be50a.tar.gz
fedora-vagrant-lxc-4f6b80e6bd1eedfd29ad28937f1e3f90357be50a.tar.xz
fedora-vagrant-lxc-4f6b80e6bd1eedfd29ad28937f1e3f90357be50a.zip
Ship precreated sudo-wrapper and sudoers file.
-rw-r--r--create_wrapper.rb63
-rw-r--r--vagrant-lxc.spec18
2 files changed, 79 insertions, 2 deletions
diff --git a/create_wrapper.rb b/create_wrapper.rb
new file mode 100644
index 0000000..5709762
--- /dev/null
+++ b/create_wrapper.rb
@@ -0,0 +1,63 @@
+#!/usr/bin/env ruby
+
+# Create the vagrant-lxc sudo-wrapper from the template.
+# Roughly taken from lib/vagrant-lxc/command/sudoers.rb
+#
+# Michael Adam <obnox@samba.org>
+
+require 'tempfile'
+
+require "vagrant/util/template_renderer"
+
+
+class CreateWrapper
+ class << self
+ def run!(argv)
+ raise "Argument missing" unless(argv)
+
+ template_root = argv.shift
+ wrapper_dst = "./vagrant-lxc-wrapper"
+
+ wrapper_tmp = create_wrapper!(template_root)
+
+ system "cp #{wrapper_tmp} #{wrapper_dst}"
+ puts "#{wrapper_dst} created"
+ end
+
+ private
+
+ # This requires vagrant 1.5.2+
+ # https://github.com/mitchellh/vagrant/commit/3371c3716278071680af9b526ba19235c79c64cb
+ def create_wrapper!(template_root)
+ wrapper = Tempfile.new('lxc-wrapper').tap do |file|
+ template = Vagrant::Util::TemplateRenderer.new(
+ 'sudoers.rb',
+ #:template_root => Vagrant::LXC.source_root.join('templates').to_s,
+ #:template_root => "/usr/share/vagrant/gems/gems/vagrant-lxc-1.1.0/templates",
+ :template_root => template_root,
+ :cmd_paths => build_cmd_paths_hash,
+ #:pipework_regex => "#{ENV['HOME']}/\.vagrant\.d/gems/gems/vagrant-lxc.+/scripts/pipework"
+ :pipework_regex => "/usr/share/vagrant/gems/gems/vagrant-lxc.+/scripts/pipework"
+ )
+ file.puts template.render
+ end
+ wrapper.close
+ wrapper.path
+ end
+
+ # for fedora, we know that all these commands
+ # are found in /usr/bin ...
+ def build_cmd_paths_hash
+ {}.tap do |hash|
+ %w( which cat mkdir cp chown chmod rm tar chown ip ifconfig brctl ).each do |cmd|
+ #hash[cmd] = `which #{cmd}`.strip
+ hash[cmd] = "/usr/bin/#{cmd}"
+ end
+ #hash['lxc_bin'] = Pathname(`which lxc-create`.strip).parent.to_s
+ hash['lxc_bin'] = "/usr/bin"
+ end
+ end
+ end
+end
+
+CreateWrapper.run!(ARGV)
diff --git a/vagrant-lxc.spec b/vagrant-lxc.spec
index ad66a47..aa451a8 100644
--- a/vagrant-lxc.spec
+++ b/vagrant-lxc.spec
@@ -2,13 +2,17 @@
Name: %{vagrant_plugin_name}
Version: 1.1.0
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: LXC provider for vagrant
Group: Development/Languages
License: MIT
URL: https://github.com/fgrehm/vagrant-lxc
Source0: https://rubygems.org/gems/%{vagrant_plugin_name}-%{version}.gem
+# script needed to generate the vagrant-lxc sudo wrapper script from template.
+# part of this srpm
+Source1: create_wrapper.rb
+
Patch1: vagrant-lxc-sudo-wrapper.patch
Requires(pre): shadow-utils
@@ -60,7 +64,13 @@ mkdir -p %{buildroot}%{vagrant_plugin_dir}
cp -a .%{vagrant_plugin_dir}/* \
%{buildroot}%{vagrant_plugin_dir}/
-PATH=/usr/bin:$PATH vagrant lxc sudoers
+ruby -I /usr/share/vagrant/lib %{SOURCE1} %{buildroot}%{vagrant_plugin_instdir}/templates
+install -m 0555 ./vagrant-lxc-wrapper %{buildroot}%{vagrant_plugin_instdir}/scripts/vagrant-lxc-wrapper
+
+echo "%vagrant ALL=(root) NOPASSWD: %{vagrant_plugin_instdir}/scripts/vagrant-lxc-wrapper" > ./sudoers_file
+mkdir -p %{buildroot}%{_sysconfdir}/sudoers.d
+install -m 0440 ./sudoers_file %{buildroot}%{_sysconfdir}/sudoers.d/vagrant-lxc
+
# polkit rule for vagrant group.
#mkdir -p %{buildroot}%{_datadir}/polkit-1/rules.d
@@ -82,6 +92,7 @@ getent group vagrant >/dev/null || groupadd -r vagrant
%posttrans
%vagrant_plugin_register %{vagrant_plugin_name}
+
%preun
%vagrant_plugin_unregister %{vagrant_plugin_name}
@@ -120,6 +131,9 @@ getent group vagrant >/dev/null || groupadd -r vagrant
%{vagrant_plugin_instdir}/vagrant-spec.config.rb
%changelog
+* Mon Jan 26 2015 Michael Adam <madam@redhat.com> - 1.1.0-4
+- Ship precreated sudo-wrapper and sudoers file.
+
* Mon Jan 26 2015 Michael Adam <madam@redhat.com> - 1.1.0-3
- Capitalize summary and description.
- Fix sudo wrapper and "vagrant lxc sudoers" mechansim from upstream.