vagrant-puppet-install 2.0.1 → 2.1.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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/lib/vagrant-puppet-install.rb +10 -4
- data/lib/vagrant-puppet-install/action/install_puppet.rb +8 -5
- data/lib/vagrant-puppet-install/config.rb +30 -21
- data/lib/vagrant-puppet-install/plugin.rb +16 -41
- data/lib/vagrant-puppet-install/version.rb +1 -1
- data/locales/en.yml +8 -0
- metadata +3 -5
- data/lib/vagrant-puppet-install/action.rb +0 -45
- data/lib/vagrant-puppet-install/action/is_running_or_active.rb +0 -47
- data/lib/vagrant-puppet-install/action/read_puppet_version.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 961d7f1b5bfba02b4b6772c70386a62296fb8b92
|
4
|
+
data.tar.gz: bd66512f848d2c01eee2662dcc77f3857ef6bfc1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 275de845b16817fe0b5728dd07ad1146d5742c5191f763a1c54a11caaf89cfb7b13cf4f7b06a0b7ef48a0e98c0da3e6e8c731947f8e25e943cd2cb18183342c3
|
7
|
+
data.tar.gz: 9b89e687f0be7a89001d79c35e2c4600aa5f741639f626aad7c3209d3d677cae2b0c4636986f5aaaa0cb46acf3cfc3c0085d6241693cd4ab5db36feefae1717e
|
data/Gemfile
CHANGED
@@ -6,7 +6,7 @@ group :development do
|
|
6
6
|
# We depend on Vagrant for development, but we don't add it as a
|
7
7
|
# gem dependency because we expect to be installed within the
|
8
8
|
# Vagrant environment itself using `vagrant plugin`.
|
9
|
-
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.3
|
9
|
+
gem "vagrant", :git => "git://github.com/mitchellh/vagrant.git", :tag => "v1.4.3"
|
10
10
|
end
|
11
11
|
|
12
12
|
group :acceptance do
|
@@ -14,12 +14,18 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require
|
18
|
-
require
|
17
|
+
require 'vagrant'
|
18
|
+
require 'vagrant-puppet-install/plugin'
|
19
|
+
require 'vagrant-puppet-install/config'
|
19
20
|
|
20
21
|
module VagrantPlugins
|
22
|
+
#
|
21
23
|
module PuppetInstall
|
22
|
-
|
23
|
-
|
24
|
+
def self.source_root
|
25
|
+
@source_root ||= Pathname.new(File.expand_path('../../', __FILE__))
|
26
|
+
end
|
27
|
+
|
28
|
+
I18n.load_path << File.expand_path('locales/en.yml', source_root)
|
29
|
+
I18n.reload!
|
24
30
|
end
|
25
31
|
end
|
@@ -42,8 +42,7 @@ module VagrantPlugins
|
|
42
42
|
return unless @machine.communicate.ready? && provision_enabled?(env)
|
43
43
|
|
44
44
|
desired_version = @machine.config.puppet_install.puppet_version
|
45
|
-
|
46
|
-
unless desired_version.nil?
|
45
|
+
unless desired_version.nil?
|
47
46
|
if installed_version == desired_version
|
48
47
|
env[:ui].info I18n.t(
|
49
48
|
'vagrant-puppet_install.action.installed',
|
@@ -59,8 +58,6 @@ module VagrantPlugins
|
|
59
58
|
recover(env)
|
60
59
|
end
|
61
60
|
end
|
62
|
-
|
63
|
-
@app.call(env)
|
64
61
|
end
|
65
62
|
|
66
63
|
private
|
@@ -69,13 +66,19 @@ module VagrantPlugins
|
|
69
66
|
def find_install_script
|
70
67
|
if !ENV['PUPPET_INSTALL_URL'].nil?
|
71
68
|
ENV['PUPPET_INSTALL_URL']
|
69
|
+
elsif windows_guest?
|
70
|
+
#
|
72
71
|
else
|
73
72
|
'https://raw2.github.com/petems/puppet-install-shell/master/install_puppet.sh'
|
74
73
|
end
|
75
74
|
end
|
76
75
|
|
77
76
|
def install_script_name
|
78
|
-
|
77
|
+
if windows_guest?
|
78
|
+
#
|
79
|
+
else
|
80
|
+
'install.sh'
|
81
|
+
end
|
79
82
|
end
|
80
83
|
|
81
84
|
def windows_guest?
|
@@ -19,16 +19,17 @@ require 'rubygems/dependency_installer'
|
|
19
19
|
require 'vagrant'
|
20
20
|
|
21
21
|
module VagrantPlugins
|
22
|
+
#
|
22
23
|
module PuppetInstall
|
23
24
|
# @author Seth Chisamore <schisamo@opscode.com>
|
24
|
-
class Config < Vagrant.plugin(
|
25
|
-
|
25
|
+
class Config < Vagrant.plugin('2', :config)
|
26
26
|
# @return [String]
|
27
27
|
# The version of Puppet to install.
|
28
28
|
attr_accessor :puppet_version
|
29
29
|
|
30
30
|
def initialize
|
31
31
|
@puppet_version = UNSET_VALUE
|
32
|
+
@logger = Log4r::Logger.new('vagrantplugins::puppet_install::config')
|
32
33
|
end
|
33
34
|
|
34
35
|
def finalize!
|
@@ -44,31 +45,36 @@ module VagrantPlugins
|
|
44
45
|
errors = []
|
45
46
|
|
46
47
|
unless valid_puppet_version?(puppet_version)
|
47
|
-
msg =
|
48
|
-
|
48
|
+
msg = <<-EOH
|
49
|
+
'#{ puppet_version }' is not a valid version of Puppet.
|
50
|
+
|
51
|
+
A list of valid versions can be found at: http://docs.puppetlabs.com/release_notes/
|
52
|
+
EOH
|
49
53
|
errors << msg
|
50
54
|
end
|
51
55
|
|
52
|
-
{
|
56
|
+
{ 'Puppet Install Plugin' => errors }
|
53
57
|
end
|
54
58
|
|
55
59
|
private
|
56
60
|
|
57
61
|
# Query RubyGems.org's Ruby API and retrive the latest version of Puppet.
|
58
62
|
def retrieve_latest_puppet_version
|
59
|
-
available_gems =
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
63
|
+
available_gems =
|
64
|
+
dependency_installer.find_gems_with_sources(puppet_gem_dependency)
|
65
|
+
spec, _source =
|
66
|
+
if available_gems.respond_to?(:last)
|
67
|
+
# DependencyInstaller sorts the results such that the last one is
|
68
|
+
# always the one it considers best.
|
69
|
+
spec_with_source = available_gems.last
|
70
|
+
spec_with_source
|
71
|
+
else
|
72
|
+
# Rubygems 2.0 returns a Gem::Available set, which is a
|
73
|
+
# collection of AvailableSet::Tuple structs
|
74
|
+
available_gems.pick_best!
|
75
|
+
best_gem = available_gems.set.first
|
76
|
+
best_gem && [best_gem.spec, best_gem.source]
|
77
|
+
end
|
72
78
|
|
73
79
|
spec && spec.version.to_s
|
74
80
|
end
|
@@ -78,9 +84,12 @@ module VagrantPlugins
|
|
78
84
|
def valid_puppet_version?(version)
|
79
85
|
is_valid = false
|
80
86
|
begin
|
81
|
-
available = dependency_installer.find_gems_with_sources(
|
87
|
+
available = dependency_installer.find_gems_with_sources(
|
88
|
+
puppet_gem_dependency(version)
|
89
|
+
)
|
82
90
|
is_valid = true unless available.empty?
|
83
|
-
rescue
|
91
|
+
rescue ArgumentError => e
|
92
|
+
@logger.debug("#{version} is not a valid Puppet version: #{e}")
|
84
93
|
end
|
85
94
|
is_valid
|
86
95
|
end
|
@@ -89,7 +98,7 @@ module VagrantPlugins
|
|
89
98
|
@dependency_installer ||= Gem::DependencyInstaller.new
|
90
99
|
end
|
91
100
|
|
92
|
-
def puppet_gem_dependency(version=nil)
|
101
|
+
def puppet_gem_dependency(version = nil)
|
93
102
|
Gem::Dependency.new('puppet', version)
|
94
103
|
end
|
95
104
|
end
|
@@ -14,65 +14,40 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
begin
|
18
|
-
require "vagrant"
|
19
|
-
rescue LoadError
|
20
|
-
raise "The vagrant-puppet-install plugin must be run within Vagrant."
|
21
|
-
end
|
22
|
-
|
23
17
|
# This is a sanity check to make sure no one is attempting to install
|
24
18
|
# this into an early Vagrant version.
|
25
|
-
if Vagrant::VERSION <
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
if Vagrant::VERSION < "1.3.5"
|
30
|
-
raise "The vagrant-puppet-install plugin is only compatible with Vagrant 1.3.5 <= right now.\n See https://github.com/patcon/vagrant-puppet-install/issues/5 for details"
|
19
|
+
if Vagrant::VERSION < '1.1.0'
|
20
|
+
fail 'The Vagrant Puppet Install plugin is only compatible with Vagrant 1.1+'
|
31
21
|
end
|
32
22
|
|
33
23
|
module VagrantPlugins
|
24
|
+
#
|
34
25
|
module PuppetInstall
|
35
26
|
# @author Seth Chisamore <schisamo@opscode.com>
|
36
|
-
class Plugin < Vagrant.plugin(
|
37
|
-
name
|
27
|
+
class Plugin < Vagrant.plugin('2')
|
28
|
+
name 'vagrant-puppet-install'
|
38
29
|
description <<-DESC
|
39
30
|
This plugin ensures the desired version of Puppet is installed
|
40
31
|
via the Puppet Labs package repos.
|
41
32
|
DESC
|
42
33
|
|
43
|
-
|
44
|
-
|
45
|
-
hook.after(Vagrant::Action::Builtin::Provision, Action
|
34
|
+
action_hook(:install_pupet, Plugin::ALL_ACTIONS) do |hook|
|
35
|
+
require_relative 'action/install_puppet'
|
36
|
+
hook.after(Vagrant::Action::Builtin::Provision, Action::InstallPuppet)
|
46
37
|
|
47
|
-
#
|
38
|
+
# The AWS provider < v0.4.0 uses a non-standard Provision action
|
39
|
+
# on initial creation:
|
48
40
|
#
|
49
|
-
#
|
50
|
-
#
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
hook.after(VagrantPlugins::ProviderVirtualBox::Action::Boot, Action.install_puppet)
|
55
|
-
|
56
|
-
if VagrantPlugins.const_defined?("AWS")
|
57
|
-
hook.after(VagrantPlugins::AWS::Action::RunInstance, Action.install_puppet)
|
58
|
-
end
|
59
|
-
|
60
|
-
if VagrantPlugins.const_defined?("Rackspace")
|
61
|
-
# The `VagrantPlugins::Rackspace` module is missing the autoload for
|
62
|
-
# `VagrantPlugins::Rackspace::Action` so we need to ensure it is
|
63
|
-
# loaded before accessing the module in the after hook below.
|
64
|
-
require 'vagrant-rackspace/action'
|
65
|
-
hook.after(VagrantPlugins::Rackspace::Action::CreateServer, Action.install_puppet)
|
41
|
+
# mitchellh/vagrant-aws/blob/v0.3.0/lib/vagrant-aws/action.rb#L105
|
42
|
+
#
|
43
|
+
if defined? VagrantPlugins::AWS::Action::TimedProvision
|
44
|
+
hook.after(VagrantPlugins::AWS::Action::TimedProvision,
|
45
|
+
Action::InstallPuppet)
|
66
46
|
end
|
67
|
-
|
68
|
-
# END workaround
|
69
47
|
end
|
70
48
|
|
71
|
-
action_hook(:install_puppet, :machine_action_up, &method(:provision))
|
72
|
-
action_hook(:install_puppet, :machine_action_provision, &method(:provision))
|
73
|
-
|
74
49
|
config(:puppet_install) do
|
75
|
-
require_relative
|
50
|
+
require_relative 'config'
|
76
51
|
Config
|
77
52
|
end
|
78
53
|
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
en:
|
2
|
+
vagrant-puppet-install:
|
3
|
+
action:
|
4
|
+
installed: "Puppet %{version} package is already installed."
|
5
|
+
installing: "Installing Puppet %{version} package..."
|
6
|
+
download:
|
7
|
+
downloading: "Downloading or copying install.sh..."
|
8
|
+
interrupted: "Install.sh download was interrupted. Exiting."
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-puppet-install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Chisamore
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-02-
|
13
|
+
date: 2014-02-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bundler
|
@@ -89,13 +89,11 @@ files:
|
|
89
89
|
- README.md
|
90
90
|
- Rakefile
|
91
91
|
- lib/vagrant-puppet-install.rb
|
92
|
-
- lib/vagrant-puppet-install/action.rb
|
93
92
|
- lib/vagrant-puppet-install/action/install_puppet.rb
|
94
|
-
- lib/vagrant-puppet-install/action/is_running_or_active.rb
|
95
|
-
- lib/vagrant-puppet-install/action/read_puppet_version.rb
|
96
93
|
- lib/vagrant-puppet-install/config.rb
|
97
94
|
- lib/vagrant-puppet-install/plugin.rb
|
98
95
|
- lib/vagrant-puppet-install/version.rb
|
96
|
+
- locales/en.yml
|
99
97
|
- test/acceptance/aws/Vagrantfile
|
100
98
|
- test/acceptance/digital_ocean/Vagrantfile
|
101
99
|
- test/acceptance/rackspace/Vagrantfile
|
@@ -1,45 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2013, Seth Chisamore
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
17
|
-
require "vagrant/action/builder"
|
18
|
-
|
19
|
-
module VagrantPlugins
|
20
|
-
module PuppetInstall
|
21
|
-
module Action
|
22
|
-
autoload :InstallPuppet, File.expand_path("../action/install_puppet", __FILE__)
|
23
|
-
autoload :IsRunningOrActive, File.expand_path("../action/is_running_or_active", __FILE__)
|
24
|
-
autoload :ReadPuppetVersion, File.expand_path("../action/read_puppet_version", __FILE__)
|
25
|
-
|
26
|
-
# Include the built-in modules so that we can use them as top-level
|
27
|
-
# things.
|
28
|
-
include Vagrant::Action::Builtin
|
29
|
-
|
30
|
-
# @return [::Vagrant::Action::Builder]
|
31
|
-
def self.install_puppet
|
32
|
-
@install_puppet ||= ::Vagrant::Action::Builder.new.tap do |b|
|
33
|
-
b.use ConfigValidate
|
34
|
-
b.use Call, IsRunningOrActive do |env1, b2|
|
35
|
-
if env1[:result]
|
36
|
-
b2.use ReadPuppetVersion
|
37
|
-
b2.use InstallPuppet
|
38
|
-
b2.use SSHRun
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,47 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2013, Seth Chisamore
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
17
|
-
module VagrantPlugins
|
18
|
-
module PuppetInstall
|
19
|
-
module Action
|
20
|
-
# @author Seth Chisamore <schisamo@opscode.com>
|
21
|
-
#
|
22
|
-
# This action checks if the machine is running (virtualbox) or active
|
23
|
-
# (aws, rackspace).
|
24
|
-
#
|
25
|
-
class IsRunningOrActive
|
26
|
-
def initialize(app, env)
|
27
|
-
@app = app
|
28
|
-
end
|
29
|
-
|
30
|
-
def call(env)
|
31
|
-
# Set the result to be true if the machine is :running or :active.
|
32
|
-
if (env[:machine].state.id == :running) ||
|
33
|
-
(env[:machine].state.id == :active)
|
34
|
-
|
35
|
-
env[:result] = true
|
36
|
-
else
|
37
|
-
env[:result] = false
|
38
|
-
end
|
39
|
-
|
40
|
-
# Call the next if we have one (but we shouldn't, since this
|
41
|
-
# middleware is built to run with the Call-type middlewares)
|
42
|
-
@app.call(env)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2013, Seth Chisamore
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
17
|
-
module VagrantPlugins
|
18
|
-
module PuppetInstall
|
19
|
-
module Action
|
20
|
-
# @author Seth Chisamore <schisamo@opscode.com>
|
21
|
-
#
|
22
|
-
# This action will extract the installed version of Puppet installed on the
|
23
|
-
# guest. The resulting version will exist in the `:installed_puppet_version`
|
24
|
-
# key in the environment.
|
25
|
-
class ReadPuppetVersion
|
26
|
-
def initialize(app, env)
|
27
|
-
@app = app
|
28
|
-
end
|
29
|
-
|
30
|
-
def call(env)
|
31
|
-
env[:installed_puppet_version] = nil
|
32
|
-
env[:machine].communicate.tap do |comm|
|
33
|
-
# Execute it with sudo
|
34
|
-
comm.sudo(puppet_version_command) do |type, data|
|
35
|
-
if [:stderr, :stdout].include?(type)
|
36
|
-
env[:installed_puppet_version] = data.chomp
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
@app.call(env)
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def puppet_version_command
|
46
|
-
<<-PUPPET_VERSION
|
47
|
-
echo $(puppet --version || "")
|
48
|
-
PUPPET_VERSION
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|