vagrant-guest-omnios 0.0.1 → 0.3.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.
data/README.md CHANGED
@@ -1,9 +1,11 @@
1
1
  vagrant-guest-omnios
2
2
  ========================
3
3
 
4
- A Vagrant 1.2.x plugin to provide support for the OmniOS operating system.
4
+ A Vagrant 1.7+ plugin to provide support for the OmniOS operating system.
5
5
 
6
- This code is an unaltered fork of the omnios plugin by mitchellh at
7
- https://github.com/mitchellh/vagrant/blob/master/plugins/guests/omnios/plugin.rb on June 24, 2013 at 4d26f01b7bc586ee2f558c8c32b9c1e4fe65713b .
6
+ This code is a modified fork of the omnios plugin by mitchellh at https://github.com/mitchellh/vagrant/tree/1.7.2/plugins/guests/omnios/plugin.rb.
7
+
8
+ * It adds the support for the chef_install and chef_installed guest capabilities submitted in PR #5179. Once that PR is merged, there is no need to use this plugin.
9
+ * It adds support for the insert_public_key and remove_public_key guest capabilities submitted in PR #5182. Once that PR is merged, there is no need to use this plugin.
8
10
 
9
11
  See LICENSE.
@@ -0,0 +1,19 @@
1
+ # require_relative "../../omnibus"
2
+ require Vagrant.source_root.to_s + '/plugins/provisioners/chef/omnibus'
3
+
4
+ module VagrantPlugins
5
+ module GuestOmniOS
6
+ module Cap
7
+ module ChefInstall
8
+ def self.chef_install(machine, version, prerelease, download_path)
9
+ su_cmd = machine.config.solaris.suexec_cmd
10
+
11
+ machine.communicate.execute("#{su_cmd} pkg list --no-refresh web/curl > /dev/null 2>&1 || pkg install -q --accept web/curl")
12
+
13
+ command = VagrantPlugins::Chef::Omnibus.build_command(version, prerelease, download_path)
14
+ machine.communicate.execute(su_cmd + ' ' + command)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module VagrantPlugins
2
+ module GuestOmniOS
3
+ module Cap
4
+ module ChefInstalled
5
+ # Check if Chef is installed at the given version.
6
+ # @return [true, false]
7
+ def self.chef_installed(machine, version)
8
+ knife = "/opt/chef/bin/knife"
9
+ command = "test -x #{knife}"
10
+
11
+ if version != :latest
12
+ command << "&& #{knife} --version | grep 'Chef: #{version}'"
13
+ end
14
+
15
+ machine.communicate.test(command, sudo: true)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require "vagrant/util/shell_quote"
2
+
3
+ module VagrantPlugins
4
+ module GuestOmniOS
5
+ module Cap
6
+ class InsertPublicKey
7
+ def self.insert_public_key(machine, contents)
8
+ contents = contents.chomp
9
+ contents = Vagrant::Util::ShellQuote.escape(contents, "'")
10
+
11
+ machine.communicate.tap do |comm|
12
+ comm.execute("mkdir -p ~/.ssh")
13
+ comm.execute("chmod 0700 ~/.ssh")
14
+ comm.execute("printf '#{contents}\\n' >> ~/.ssh/authorized_keys")
15
+ comm.execute("chmod 0600 ~/.ssh/authorized_keys")
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ module VagrantPlugins
2
+ module GuestOmniOS
3
+ module Cap
4
+ class MountNFSFolder
5
+ def self.mount_nfs_folder(machine, ip, folders)
6
+ su_cmd = machine.config.solaris.suexec_cmd
7
+ folders.each do |name, opts|
8
+ machine.communicate.execute("#{su_cmd} mkdir -p #{opts[:guestpath]}")
9
+ machine.communicate.execute("#{su_cmd} /sbin/mount '#{ip}:#{opts[:hostpath]}' '#{opts[:guestpath]}'")
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ require "vagrant/util/shell_quote"
2
+
3
+ module VagrantPlugins
4
+ module GuestOmniOS
5
+ module Cap
6
+ class RemovePublicKey
7
+ def self.remove_public_key(machine, contents)
8
+ contents = contents.chomp
9
+ contents = Vagrant::Util::ShellQuote.escape(contents, "'")
10
+
11
+ machine.communicate.tap do |comm|
12
+ if comm.test("test -f ~/.ssh/authorized_keys")
13
+ comm.execute(
14
+ "sed -i '/^.*#{contents}.*$/d' ~/.ssh/authorized_keys")
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -15,6 +15,32 @@ module VagrantPlugins
15
15
  require_relative "cap/change_host_name"
16
16
  Cap::ChangeHostName
17
17
  end
18
+
19
+ guest_capability("omnios", "mount_nfs_folder") do
20
+ require_relative "cap/mount_nfs_folder"
21
+ Cap::MountNFSFolder
22
+ end
23
+
24
+ guest_capability(:omnios, :chef_installed) do
25
+ require_relative "cap/chef_installed"
26
+ Cap::ChefInstalled
27
+ end
28
+
29
+ guest_capability(:omnios, :chef_install) do
30
+ require_relative "cap/chef_install"
31
+ Cap::ChefInstall
32
+ end
33
+
34
+ guest_capability(:omnios, :insert_public_key) do
35
+ require_relative "cap/insert_public_key"
36
+ Cap::InsertPublicKey
37
+ end
38
+
39
+ guest_capability(:omnios, :remove_public_key) do
40
+ require_relative "cap/remove_public_key"
41
+ Cap::RemovePublicKey
42
+ end
43
+
18
44
  end
19
45
  end
20
46
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-guest-omnios
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Mitchell Hashimoto
8
+ - Mitchell Hashimoto, Mark Harrison, Clinton Wolfe
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-24 00:00:00.000000000 Z
12
+ date: 2015-01-14 00:00:00.000000000 Z
13
13
  dependencies: []
14
- description: Vagrant 1.2x plugin to provide guest support for omnios (interim prior
14
+ description: Vagrant 1.7+ plugin to provide guest support for omnios (interim prior
15
15
  to core support), yep.
16
16
  email: info@hashicorp.com
17
17
  executables: []
@@ -19,10 +19,15 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - README.md
22
- - lib/vagrant-guest-omnios.rb
23
22
  - lib/vagrant-guest-omnios/guest.rb
24
- - lib/vagrant-guest-omnios/cap/change_host_name.rb
25
23
  - lib/vagrant-guest-omnios/plugin.rb
24
+ - lib/vagrant-guest-omnios/cap/mount_nfs_folder.rb
25
+ - lib/vagrant-guest-omnios/cap/remove_public_key.rb
26
+ - lib/vagrant-guest-omnios/cap/change_host_name.rb
27
+ - lib/vagrant-guest-omnios/cap/chef_install.rb
28
+ - lib/vagrant-guest-omnios/cap/insert_public_key.rb
29
+ - lib/vagrant-guest-omnios/cap/chef_installed.rb
30
+ - lib/vagrant-guest-omnios.rb
26
31
  homepage: http://github.com/clintoncwolfe/vagrant-guest-omnios
27
32
  licenses: []
28
33
  post_install_message:
@@ -43,9 +48,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
43
48
  version: '0'
44
49
  requirements: []
45
50
  rubyforge_project: vagrant-guest-omnios
46
- rubygems_version: 1.8.24
51
+ rubygems_version: 1.8.23
47
52
  signing_key:
48
53
  specification_version: 3
49
- summary: Vagrant 1.2x plugin to provide guest support for omnios (interim prior to
54
+ summary: Vagrant 1.7+ plugin to provide guest support for omnios (interim prior to
50
55
  core support)
51
56
  test_files: []