beaker-puppet_install_helper 0.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 +15 -0
- data/.gitignore +3 -0
- data/Gemfile +48 -0
- data/beaker-puppet_install_helper.gemspec +22 -0
- data/lib/beaker/puppet_install_helper.rb +68 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/beaker/puppet_install_helper_spec.rb +87 -0
- metadata +81 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MTE3YjkzOTlhZjAwYjAyYzI5NmJmY2U4ZjNhYzBjNmRmODA1NThlNA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MTdlYjcxZTJkZTc4YTg4YzlkYzAwYjBiNGUyYTZiZDljMmU2NDA1ZQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZjYxZTAyNmM5ZjViMjQ4MTRmMDQxMjBhYjYxZWEyOWM3YjhmMzgyODYwMzU5
|
10
|
+
NzBkZWQxMTY4YjMxY2VjYzMzNmIyMGIyZjc3OTYxOTNiOGFiMzk2ZjdhMjRi
|
11
|
+
YmVkYTczNDJmYmRhZmMzOTJiMzU4MDY5Nzc2YTkwMjdhNWJmMGM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NmU3MDRiZWYwZDFhYTliYmUxY2FmZDA0MTUyOGRjYTA2MDg4OWI0YjY5ZGY3
|
14
|
+
MTUwMGZlZTNlMTYwZjUwYWU4YTIyMGUxNWE1OWM0OGQ1ZDIxZWMwMzAyNjVm
|
15
|
+
NDY0Y2Q1NjkyOTZiY2IwMzE4ZmRmZTJkYzU1NzVkM2ZlOWQyMGM=
|
data/.gitignore
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
source ENV['GEM_SOURCE'] || "https://rubygems.org"
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
#def location_for(place, fake_version = nil)
|
5
|
+
# if place =~ /^(git:[^#]*)#(.*)/
|
6
|
+
# [fake_version, { :git => $1, :branch => $2, :require => false }].compact
|
7
|
+
# elsif place =~ /^file:\/\/(.*)/
|
8
|
+
# ['>= 0', { :path => File.expand_path($1), :require => false }]
|
9
|
+
# else
|
10
|
+
# [place, { :require => false }]
|
11
|
+
# end
|
12
|
+
#end
|
13
|
+
#
|
14
|
+
#group :development, :unit_tests do
|
15
|
+
# gem 'rspec-core', '3.1.7', :require => false
|
16
|
+
# gem 'puppetlabs_spec_helper', :require => false
|
17
|
+
# gem 'simplecov', :require => false
|
18
|
+
# gem 'puppet_facts', :require => false
|
19
|
+
# gem 'json', :require => false
|
20
|
+
#end
|
21
|
+
#
|
22
|
+
#group :system_tests do
|
23
|
+
# if beaker_version = ENV['BEAKER_VERSION']
|
24
|
+
# gem 'beaker', *location_for(beaker_version)
|
25
|
+
# end
|
26
|
+
# if beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION']
|
27
|
+
# gem 'beaker-rspec', *location_for(beaker_rspec_version)
|
28
|
+
# else
|
29
|
+
# gem 'beaker-rspec', :require => false
|
30
|
+
# end
|
31
|
+
# gem 'serverspec', :require => false
|
32
|
+
#end
|
33
|
+
#
|
34
|
+
#
|
35
|
+
#
|
36
|
+
#if facterversion = ENV['FACTER_GEM_VERSION']
|
37
|
+
# gem 'facter', facterversion, :require => false
|
38
|
+
#else
|
39
|
+
# gem 'facter', :require => false
|
40
|
+
#end
|
41
|
+
#
|
42
|
+
#if puppetversion = ENV['PUPPET_GEM_VERSION']
|
43
|
+
# gem 'puppet', puppetversion, :require => false
|
44
|
+
#else
|
45
|
+
# gem 'puppet', :require => false
|
46
|
+
#end
|
47
|
+
#
|
48
|
+
## vim:ft=ruby
|
@@ -0,0 +1,22 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = "beaker-puppet_install_helper"
|
3
|
+
s.version = '0.1.0'
|
4
|
+
s.authors = ["Puppetlabs"]
|
5
|
+
s.email = ["hunter@puppetlabs.com"]
|
6
|
+
s.homepage = "https://github.com/puppetlabs/beaker-puppet_install_helper"
|
7
|
+
s.summary = %q{Puppet install helper for Beaker}
|
8
|
+
s.description = %q{Puppet install helper for Beaker, see https://github.com/puppetlabs/beaker}
|
9
|
+
s.license = 'Apache-2'
|
10
|
+
|
11
|
+
|
12
|
+
s.files = `git ls-files`.split("\n")
|
13
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
|
17
|
+
## Testing dependencies
|
18
|
+
s.add_development_dependency 'rspec'
|
19
|
+
|
20
|
+
# Run time dependencies
|
21
|
+
s.add_runtime_dependency 'beaker', '~> 2.0'
|
22
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'beaker'
|
2
|
+
|
3
|
+
module Beaker::PuppetInstallHelper
|
4
|
+
def run_puppet_install_helper(type_arg=find_install_type,version=ENV["PUPPET_VERSION"])
|
5
|
+
run_puppet_install_helper_on(hosts,type_arg,version)
|
6
|
+
end
|
7
|
+
|
8
|
+
# Takes a host(s) object, install type string, and install version string.
|
9
|
+
# - Type defaults to PE for PE nodes, and foss otherwise.
|
10
|
+
# - Version will default to the latest 3x foss/pe package, depending on type
|
11
|
+
def run_puppet_install_helper_on(hosts,type_arg=find_install_type,version=ENV["PUPPET_VERSION"])
|
12
|
+
# Short circuit based on rspec-system and beaker variables
|
13
|
+
return if ENV["RS_PROVISION"] == "no" or ENV["BEAKER_provision"] == "no"
|
14
|
+
|
15
|
+
type = type_arg || find_install_type
|
16
|
+
|
17
|
+
# Example environment variables to be read:
|
18
|
+
# PUPPET_VERSION=3.8.1 <-- for foss/pe/gem
|
19
|
+
# PUPPET_VERSION=4.1.0 <-- for agent/gem
|
20
|
+
# PUPPET_VERSION=1.0.1 <-- for agent
|
21
|
+
#
|
22
|
+
# PUPPET_INSTALL_TYPE=pe
|
23
|
+
# PUPPET_INSTALL_TYPE=foss
|
24
|
+
# PUPPET_INSTALL_TYPE=agent
|
25
|
+
|
26
|
+
case type
|
27
|
+
when "pe"
|
28
|
+
# This will skip hosts that are not supported
|
29
|
+
install_pe_on(hosts,{"pe_ver" => version})
|
30
|
+
when "foss"
|
31
|
+
foss_opts = {
|
32
|
+
:version => version,
|
33
|
+
:default_action => "gem_install",
|
34
|
+
}
|
35
|
+
|
36
|
+
install_puppet_on(hosts, foss_opts)
|
37
|
+
Array(hosts).each do |host|
|
38
|
+
if fact_on(host,"osfamily") != "windows"
|
39
|
+
on host, "mkdir -p #{host["distmoduledir"]}"
|
40
|
+
on host, "touch #{host["hieraconf"]}"
|
41
|
+
end
|
42
|
+
if fact_on(host, "operatingsystem") == "Debian"
|
43
|
+
on host, "echo 'export PATH=/var/lib/gems/1.8/bin/:${PATH}' >> ~/.bashrc"
|
44
|
+
end
|
45
|
+
if fact_on(host, "operatingsystem") == "Solaris"
|
46
|
+
on host, "echo 'export PATH=/opt/puppet/bin:/var/ruby/1.8/gem_home/bin:${PATH}' >> ~/.bashrc"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
when "agent"
|
50
|
+
# This will fail on hosts that are not supported; use foss and specify a 4.x version instead
|
51
|
+
install_puppet_agent_on(hosts, {:version => version})
|
52
|
+
else
|
53
|
+
raise ArgumentError, "Type must be pe, foss, or agent; got #{type.inspect}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def find_install_type
|
58
|
+
if type = ENV["PUPPET_INSTALL_TYPE"]
|
59
|
+
type
|
60
|
+
elsif default.is_pe?
|
61
|
+
"pe"
|
62
|
+
else
|
63
|
+
"foss"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
include Beaker::PuppetInstallHelper
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'beaker/puppet_install_helper'
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'beaker::puppet_install_helper' do
|
4
|
+
let :subject do
|
5
|
+
Class.new { include Beaker::PuppetInstallHelper }
|
6
|
+
end
|
7
|
+
let :hosts do
|
8
|
+
host = { "distmoduledir" => "/dne", "hieraconf" => "/dne" }
|
9
|
+
[ host, host, host, ]
|
10
|
+
end
|
11
|
+
before :each do
|
12
|
+
allow(subject).to receive(:on)
|
13
|
+
allow(subject).to receive(:fact_on)
|
14
|
+
end
|
15
|
+
after :each do
|
16
|
+
ENV.delete("PUPPET_VERSION")
|
17
|
+
ENV.delete("PUPPET_INSTALL_TYPE")
|
18
|
+
end
|
19
|
+
describe '#run_puppet_install_helper' do
|
20
|
+
before :each do
|
21
|
+
expect(subject).to receive(:default).and_return(double(:is_pe? => false))
|
22
|
+
expect(subject).to receive(:hosts).and_return(hosts)
|
23
|
+
end
|
24
|
+
it 'calls run_puppet_install_helper_on on each host' do
|
25
|
+
expect(subject).to receive(:run_puppet_install_helper_on).with(hosts,"foss",nil)
|
26
|
+
subject.run_puppet_install_helper
|
27
|
+
end
|
28
|
+
it 'calls run_puppet_install_helper_on on each host with a version ' do
|
29
|
+
ENV["PUPPET_VERSION"] = "4.1.0"
|
30
|
+
expect(subject).to receive(:run_puppet_install_helper_on).with(hosts,"foss","4.1.0")
|
31
|
+
subject.run_puppet_install_helper
|
32
|
+
end
|
33
|
+
end
|
34
|
+
describe '#run_puppet_install_helper_on' do
|
35
|
+
context "for default" do
|
36
|
+
it "uses foss by default for non-pe nodes" do
|
37
|
+
expect(subject).to receive(:default).and_return(double(:is_pe? => false))
|
38
|
+
expect(subject).to receive(:install_puppet_on).with(hosts,{:version => nil,:default_action => "gem_install"})
|
39
|
+
subject.run_puppet_install_helper_on(hosts)
|
40
|
+
end
|
41
|
+
it "uses PE by default for PE nodes" do
|
42
|
+
expect(subject).to receive(:default).and_return(double(:is_pe? => true))
|
43
|
+
expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => nil})
|
44
|
+
subject.run_puppet_install_helper_on(hosts)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
context "for foss" do
|
48
|
+
it "uses foss explicitly" do
|
49
|
+
ENV["PUPPET_INSTALL_TYPE"] = "foss"
|
50
|
+
expect(subject).to receive(:install_puppet_on).with(hosts,{:version => nil,:default_action => "gem_install"})
|
51
|
+
subject.run_puppet_install_helper_on(hosts)
|
52
|
+
end
|
53
|
+
it "uses foss with a version" do
|
54
|
+
ENV["PUPPET_INSTALL_TYPE"] = "foss"
|
55
|
+
ENV["PUPPET_VERSION"] = "3.8.1"
|
56
|
+
expect(subject).to receive(:install_puppet_on).with(hosts,{:version => "3.8.1",:default_action => "gem_install"})
|
57
|
+
subject.run_puppet_install_helper_on(hosts)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
context "for PE" do
|
61
|
+
it "uses PE explicitly" do
|
62
|
+
ENV["PUPPET_INSTALL_TYPE"] = "pe"
|
63
|
+
expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => nil})
|
64
|
+
subject.run_puppet_install_helper_on(hosts)
|
65
|
+
end
|
66
|
+
it "uses PE with a version" do
|
67
|
+
ENV["PUPPET_INSTALL_TYPE"] = "pe"
|
68
|
+
ENV["PUPPET_VERSION"] = "3.8.1"
|
69
|
+
expect(subject).to receive(:install_pe_on).with(hosts,{"pe_ver" => "3.8.1"})
|
70
|
+
subject.run_puppet_install_helper_on(hosts)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
context "for puppet-agent" do
|
74
|
+
it "uses agent explicitly" do
|
75
|
+
ENV["PUPPET_INSTALL_TYPE"] = "agent"
|
76
|
+
expect(subject).to receive(:install_puppet_agent_on).with(hosts,{:version => nil})
|
77
|
+
subject.run_puppet_install_helper_on(hosts)
|
78
|
+
end
|
79
|
+
it "uses foss with a version" do
|
80
|
+
ENV["PUPPET_INSTALL_TYPE"] = "agent"
|
81
|
+
ENV["PUPPET_VERSION"] = "1.1.0"
|
82
|
+
expect(subject).to receive(:install_puppet_agent_on).with(hosts,{:version => "1.1.0"})
|
83
|
+
subject.run_puppet_install_helper_on(hosts)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
metadata
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: beaker-puppet_install_helper
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Puppetlabs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ! '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: beaker
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
description: Puppet install helper for Beaker, see https://github.com/puppetlabs/beaker
|
42
|
+
email:
|
43
|
+
- hunter@puppetlabs.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- .gitignore
|
49
|
+
- Gemfile
|
50
|
+
- beaker-puppet_install_helper.gemspec
|
51
|
+
- lib/beaker/puppet_install_helper.rb
|
52
|
+
- spec/spec_helper.rb
|
53
|
+
- spec/unit/beaker/puppet_install_helper_spec.rb
|
54
|
+
homepage: https://github.com/puppetlabs/beaker-puppet_install_helper
|
55
|
+
licenses:
|
56
|
+
- Apache-2
|
57
|
+
metadata: {}
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
require_paths:
|
61
|
+
- lib
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 2.4.5
|
75
|
+
signing_key:
|
76
|
+
specification_version: 4
|
77
|
+
summary: Puppet install helper for Beaker
|
78
|
+
test_files:
|
79
|
+
- spec/spec_helper.rb
|
80
|
+
- spec/unit/beaker/puppet_install_helper_spec.rb
|
81
|
+
has_rdoc:
|