oscar 0.2.0alpha2 → 0.2.0alpha3
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/lib/oscar/config.rb +2 -0
- data/lib/oscar/networking.rb +1 -9
- data/lib/oscar/node.rb +3 -5
- data/lib/oscar/version.rb +1 -1
- data/oscar.gemspec +5 -4
- metadata +82 -107
- data/bootstrap/base/pre/set_hostname.sh +0 -3
- data/bootstrap/base/provision/install_puppet_enterprise.sh +0 -6
- data/bootstrap/master/post/relocate_puppet.sh +0 -23
- data/lib/pe_build.rb +0 -17
- data/lib/pe_build/action.rb +0 -20
- data/lib/pe_build/action/download.rb +0 -56
- data/lib/pe_build/action/unpackage.rb +0 -70
- data/lib/pe_build/command.rb +0 -31
- data/lib/pe_build/command/download.rb +0 -8
- data/lib/pe_build/command/list.rb +0 -10
- data/lib/pe_build/config.rb +0 -30
- data/lib/pe_build/provisioners.rb +0 -9
- data/lib/pe_build/provisioners/puppet_enterprise.rb +0 -1
- data/lib/pe_build/provisioners/puppet_enterprise_bootstrap.rb +0 -137
- data/lib/pe_build/version.rb +0 -5
- data/manifests/.gitignore +0 -3
- data/modules/.gitignore +0 -2
data/lib/oscar/config.rb
CHANGED
@@ -18,6 +18,8 @@ class Oscar::Config
|
|
18
18
|
def load!(searchpath)
|
19
19
|
files = ['config.yaml', 'config'].map { |m| "#{searchpath}/#{m}" }
|
20
20
|
load_all files
|
21
|
+
|
22
|
+
raise "No configuration loaded" if @data.nil? or @data.empty?
|
21
23
|
end
|
22
24
|
|
23
25
|
# Recursively load any YAML files contained in the given paths.
|
data/lib/oscar/networking.rb
CHANGED
@@ -30,18 +30,10 @@ class Oscar::Networking
|
|
30
30
|
arr = []
|
31
31
|
|
32
32
|
arr << ['127.0.0.1', ['localhost']]
|
33
|
-
arr << ['127.0.1.1', [
|
34
|
-
|
35
|
-
arr << ['::1', %w{ip6-localhost ip6-loopback}]
|
36
|
-
|
37
|
-
arr << ['fe00::0', ['ip6-localnet']]
|
38
|
-
arr << ['ff00::0', ['ip6-mcastprefix']]
|
39
|
-
arr << ['ff02::1', ['ip6-allnodes']]
|
40
|
-
arr << ['ff02::2', ['ip6-allrouters']]
|
33
|
+
arr << ['127.0.1.1', ["#{node.name}.#{@domainname}", node.name]]
|
41
34
|
|
42
35
|
@nodes.each_pair { |address, n| arr << [address, [n.name, "#{n.name}.#{@domainname}"]] }
|
43
36
|
|
44
|
-
|
45
37
|
arr
|
46
38
|
end
|
47
39
|
end
|
data/lib/oscar/node.rb
CHANGED
@@ -29,12 +29,10 @@ class Oscar::Node
|
|
29
29
|
node.vm.boot_mode = @gui if @gui
|
30
30
|
|
31
31
|
host_entries = @networking.hosts_for(self)
|
32
|
-
#node.vm.provision :shell do |shell|
|
33
|
-
# shell.inline = %{grep "#{entry}" /etc/hosts || echo "#{entry}" >> /etc/hosts}
|
34
|
-
#end
|
35
32
|
|
36
|
-
node.vm.provision :hosts do |
|
37
|
-
host_entries.each { |(address, aliases)|
|
33
|
+
node.vm.provision :hosts do |provisioner|
|
34
|
+
host_entries.each { |(address, aliases)| provisioner.add_host address, aliases }
|
35
|
+
provisioner.add_ipv6_multicast
|
38
36
|
end
|
39
37
|
|
40
38
|
node.vm.provision :puppet_enterprise_bootstrap do |pe|
|
data/lib/oscar/version.rb
CHANGED
data/oscar.gemspec
CHANGED
@@ -17,10 +17,11 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.email = 'adrien@somethingsinistral.net'
|
18
18
|
gem.homepage = 'https://github.com/adrienthebo/oscar'
|
19
19
|
|
20
|
-
gem.add_dependency 'vagrant',
|
21
|
-
gem.add_dependency 'vagrant-hosts',
|
22
|
-
gem.add_dependency '
|
23
|
-
gem.add_dependency '
|
20
|
+
gem.add_dependency 'vagrant', '~> 1.0.0'
|
21
|
+
gem.add_dependency 'vagrant-hosts', '>= 0.0.1'
|
22
|
+
gem.add_dependency 'vagrant-pe_build', '>= 0.0.1'
|
23
|
+
gem.add_dependency 'kwalify', '~> 0.7.0'
|
24
|
+
gem.add_dependency 'ipaddress', '~> 0.8.0'
|
24
25
|
|
25
26
|
gem.files = %x{git ls-files -z}.split("\0")
|
26
27
|
gem.require_path = 'lib'
|
metadata
CHANGED
@@ -1,108 +1,110 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: oscar
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0alpha3
|
5
5
|
prerelease: 5
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
- alpha
|
11
|
-
- 2
|
12
|
-
version: 0.2.0alpha2
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Adrien Thebo
|
16
9
|
autorequire:
|
17
10
|
bindir: bin
|
18
11
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-01-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
23
15
|
name: vagrant
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
26
17
|
none: false
|
27
|
-
requirements:
|
18
|
+
requirements:
|
28
19
|
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 23
|
31
|
-
segments:
|
32
|
-
- 1
|
33
|
-
- 0
|
34
|
-
- 0
|
20
|
+
- !ruby/object:Gem::Version
|
35
21
|
version: 1.0.0
|
36
22
|
type: :runtime
|
37
|
-
|
38
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.0.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
39
31
|
name: vagrant-hosts
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.0.1
|
38
|
+
type: :runtime
|
40
39
|
prerelease: false
|
41
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.0.1
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: vagrant-pe_build
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
42
49
|
none: false
|
43
|
-
requirements:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
segments:
|
48
|
-
- 0
|
49
|
-
- 0
|
50
|
-
- 1
|
51
|
-
- rc
|
52
|
-
- 1
|
53
|
-
version: 0.0.1rc1
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.0.1
|
54
54
|
type: :runtime
|
55
|
-
version_requirements: *id002
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: kwalify
|
58
55
|
prerelease: false
|
59
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.0.1
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: kwalify
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
60
65
|
none: false
|
61
|
-
requirements:
|
66
|
+
requirements:
|
62
67
|
- - ~>
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
hash: 3
|
65
|
-
segments:
|
66
|
-
- 0
|
67
|
-
- 7
|
68
|
-
- 0
|
68
|
+
- !ruby/object:Gem::Version
|
69
69
|
version: 0.7.0
|
70
70
|
type: :runtime
|
71
|
-
version_requirements: *id003
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: ipaddress
|
74
71
|
prerelease: false
|
75
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.7.0
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: ipaddress
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
76
81
|
none: false
|
77
|
-
requirements:
|
82
|
+
requirements:
|
78
83
|
- - ~>
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
hash: 63
|
81
|
-
segments:
|
82
|
-
- 0
|
83
|
-
- 8
|
84
|
-
- 0
|
84
|
+
- !ruby/object:Gem::Version
|
85
85
|
version: 0.8.0
|
86
86
|
type: :runtime
|
87
|
-
|
88
|
-
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.8.0
|
94
|
+
description: ! " Oscar is a series of extensions to simplify building out a Puppet
|
95
|
+
Enterprise\n environment. It handles networking configuration and fetching/installing\n
|
96
|
+
\ Puppet Enterprise.\n"
|
89
97
|
email: adrien@somethingsinistral.net
|
90
98
|
executables: []
|
91
|
-
|
92
99
|
extensions: []
|
93
|
-
|
94
100
|
extra_rdoc_files: []
|
95
|
-
|
96
|
-
files:
|
101
|
+
files:
|
97
102
|
- .gitignore
|
98
103
|
- CHANGELOG
|
99
104
|
- Gemfile
|
100
105
|
- LICENSE
|
101
106
|
- README.markdown
|
102
107
|
- Vagrantfile
|
103
|
-
- bootstrap/base/pre/set_hostname.sh
|
104
|
-
- bootstrap/base/provision/install_puppet_enterprise.sh
|
105
|
-
- bootstrap/master/post/relocate_puppet.sh
|
106
108
|
- config/.gitignore
|
107
109
|
- config/roles.yaml.dist
|
108
110
|
- doc/answers/README.markdown
|
@@ -118,59 +120,32 @@ files:
|
|
118
120
|
- lib/oscar/node.rb
|
119
121
|
- lib/oscar/schema.yaml
|
120
122
|
- lib/oscar/version.rb
|
121
|
-
- lib/pe_build.rb
|
122
|
-
- lib/pe_build/action.rb
|
123
|
-
- lib/pe_build/action/download.rb
|
124
|
-
- lib/pe_build/action/unpackage.rb
|
125
|
-
- lib/pe_build/command.rb
|
126
|
-
- lib/pe_build/command/download.rb
|
127
|
-
- lib/pe_build/command/list.rb
|
128
|
-
- lib/pe_build/config.rb
|
129
|
-
- lib/pe_build/provisioners.rb
|
130
|
-
- lib/pe_build/provisioners/puppet_enterprise.rb
|
131
|
-
- lib/pe_build/provisioners/puppet_enterprise_bootstrap.rb
|
132
|
-
- lib/pe_build/version.rb
|
133
123
|
- lib/vagrant_init.rb
|
134
|
-
- manifests/.gitignore
|
135
|
-
- modules/.gitignore
|
136
124
|
- oscar.gemspec
|
137
125
|
- templates/answers/agent.txt.erb
|
138
126
|
- templates/answers/master.txt.erb
|
139
127
|
homepage: https://github.com/adrienthebo/oscar
|
140
128
|
licenses: []
|
141
|
-
|
142
129
|
post_install_message:
|
143
130
|
rdoc_options: []
|
144
|
-
|
145
|
-
require_paths:
|
131
|
+
require_paths:
|
146
132
|
- lib
|
147
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
134
|
none: false
|
149
|
-
requirements:
|
150
|
-
- -
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
|
154
|
-
- 0
|
155
|
-
version: "0"
|
156
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
157
140
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
hash: 25
|
162
|
-
segments:
|
163
|
-
- 1
|
164
|
-
- 3
|
165
|
-
- 1
|
141
|
+
requirements:
|
142
|
+
- - ! '>'
|
143
|
+
- !ruby/object:Gem::Version
|
166
144
|
version: 1.3.1
|
167
145
|
requirements: []
|
168
|
-
|
169
146
|
rubyforge_project:
|
170
|
-
rubygems_version: 1.8.
|
147
|
+
rubygems_version: 1.8.23
|
171
148
|
signing_key:
|
172
149
|
specification_version: 3
|
173
150
|
summary: Easy mode Puppet Enterprise provisioning
|
174
151
|
test_files: []
|
175
|
-
|
176
|
-
has_rdoc:
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# Update puppet.conf to add the manifestdir directive to point to the
|
2
|
-
# /manifests mount, if the directive isn't already present.
|
3
|
-
sed -i '
|
4
|
-
2 {
|
5
|
-
/manifest/ !i\
|
6
|
-
manifestdir = /manifests
|
7
|
-
}
|
8
|
-
' /etc/puppetlabs/puppet/puppet.conf
|
9
|
-
|
10
|
-
# Update puppet.conf to add the modulepath directive to point to the
|
11
|
-
# /module mount, if it hasn't already been set.
|
12
|
-
sed -i '
|
13
|
-
/modulepath/ {
|
14
|
-
/vagrant/ !s,$,:/modules,
|
15
|
-
}
|
16
|
-
' /etc/puppetlabs/puppet/puppet.conf
|
17
|
-
|
18
|
-
# Rewrite the olde site.pp config since it's not used, and warn people
|
19
|
-
# about this.
|
20
|
-
echo '# /etc/puppetlabs/puppet/manifests is not used; see /manifests.' > /etc/puppetlabs/puppet/manifests/site.pp
|
21
|
-
|
22
|
-
# Enable autosigning on the master
|
23
|
-
echo '*' > /etc/puppetlabs/puppet/autosign.conf
|
data/lib/pe_build.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
|
3
|
-
module PEBuild
|
4
|
-
def self.archive_directory
|
5
|
-
File.expand_path(File.join(ENV['HOME'], '.vagrant.d', 'pe_builds'))
|
6
|
-
end
|
7
|
-
|
8
|
-
def self.source_root
|
9
|
-
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
require 'pe_build/version'
|
14
|
-
require 'pe_build/action'
|
15
|
-
require 'pe_build/config'
|
16
|
-
require 'pe_build/command'
|
17
|
-
require 'pe_build/provisioners'
|
data/lib/pe_build/action.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
require 'vagrant/action/builder'
|
3
|
-
require 'pe_build'
|
4
|
-
|
5
|
-
module PEBuild::Action
|
6
|
-
end
|
7
|
-
|
8
|
-
require 'pe_build/action/download'
|
9
|
-
require 'pe_build/action/unpackage'
|
10
|
-
|
11
|
-
builder = Vagrant::Action::Builder.new do
|
12
|
-
use PEBuild::Action::Download
|
13
|
-
end
|
14
|
-
|
15
|
-
Vagrant.actions.register :download_pe_build, builder
|
16
|
-
|
17
|
-
Vagrant.actions.register(:prep_build, Vagrant::Action::Builder.new do
|
18
|
-
use PEBuild::Action::Download
|
19
|
-
use PEBuild::Action::Unpackage
|
20
|
-
end)
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'pe_build'
|
2
|
-
require 'pe_build/action'
|
3
|
-
require 'vagrant'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
class PEBuild::Action::Download
|
7
|
-
# Downloads a PE build to a temp directory
|
8
|
-
|
9
|
-
def initialize(app, env)
|
10
|
-
@app, @env = app, env
|
11
|
-
load_variables
|
12
|
-
end
|
13
|
-
|
14
|
-
def call(env)
|
15
|
-
@env = env
|
16
|
-
perform_download
|
17
|
-
@app.call(@env)
|
18
|
-
end
|
19
|
-
|
20
|
-
private
|
21
|
-
|
22
|
-
# Determine system state and download a PE build accordingly.
|
23
|
-
#
|
24
|
-
# If we are applying actions within the context of a single box, then we
|
25
|
-
# should try to prefer and box level configuration options first. If
|
26
|
-
# anything is unset then we should fall back to the global settings.
|
27
|
-
def load_variables
|
28
|
-
if @env[:box_name]
|
29
|
-
@root = @env[:vm].pe_build.download_root
|
30
|
-
@version = @env[:vm].pe_build.version
|
31
|
-
@filename = @env[:vm].pe_build.version
|
32
|
-
end
|
33
|
-
|
34
|
-
@root ||= @env[:global_config].pe_build.download_root
|
35
|
-
@version ||= @env[:global_config].pe_build.version
|
36
|
-
@filename ||= @env[:global_config].pe_build.filename
|
37
|
-
|
38
|
-
@archive_path = File.join(PEBuild.archive_directory, @filename)
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [String] The full URL to download, based on the config
|
42
|
-
def url
|
43
|
-
[@root, @version, @filename].join('/')
|
44
|
-
end
|
45
|
-
|
46
|
-
def perform_download
|
47
|
-
if File.exist? @archive_path
|
48
|
-
@env[:ui].info "#{@filename} cached, skipping download."
|
49
|
-
else
|
50
|
-
FileUtils.mkdir_p PEBuild.archive_directory unless File.directory? PEBuild.archive_directory
|
51
|
-
cmd = %{curl -L -A "Vagrant/PEBuild (v#{PEBuild::VERSION})" -O #{url}}
|
52
|
-
@env[:ui].info "Executing '#{cmd}'"
|
53
|
-
Dir.chdir(PEBuild.archive_directory) { %x{#{cmd}} }
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
require 'pe_build/action'
|
3
|
-
require 'fileutils'
|
4
|
-
|
5
|
-
class PEBuild::Action::Unpackage
|
6
|
-
def initialize(app, env)
|
7
|
-
@app, @env = app, env
|
8
|
-
load_variables
|
9
|
-
end
|
10
|
-
|
11
|
-
def call(env)
|
12
|
-
@env = env
|
13
|
-
@extracted_dir = File.join(@env[:unpack_directory], destination_directory)
|
14
|
-
extract_build
|
15
|
-
@app.call(@env)
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def load_variables
|
21
|
-
if @env[:box_name]
|
22
|
-
@root = @env[:vm].pe_build.download_root
|
23
|
-
@version = @env[:vm].pe_build.version
|
24
|
-
@filename = @env[:vm].pe_build.version
|
25
|
-
end
|
26
|
-
|
27
|
-
@root ||= @env[:global_config].pe_build.download_root
|
28
|
-
@version ||= @env[:global_config].pe_build.version
|
29
|
-
@filename ||= @env[:global_config].pe_build.filename
|
30
|
-
|
31
|
-
@archive_path = File.join(PEBuild.archive_directory, @filename)
|
32
|
-
end
|
33
|
-
|
34
|
-
# Sadly, shelling out is more sane than trying to use the facilities
|
35
|
-
# provided.
|
36
|
-
def extract_build
|
37
|
-
if File.directory? @extracted_dir
|
38
|
-
@env[:ui].info "#{destination_directory} already present, skipping extraction."
|
39
|
-
else
|
40
|
-
cmd = %{tar xf #{@archive_path} -C #{@env[:unpack_directory]}}
|
41
|
-
@env[:ui].info "Extracting #{@archive_path} to #{@env[:unpack_directory]}"
|
42
|
-
%x{#{cmd}}
|
43
|
-
end
|
44
|
-
rescue => e
|
45
|
-
# If anything goes wrong while extracting, nuke the extracted directory
|
46
|
-
# as it could be incomplete. If we do this, then we can ensure that if
|
47
|
-
# the extracted directory already exists then it will be in a good state.
|
48
|
-
@env[:ui].info "Removing possibly damaged installer directory '#{@extracted_dir}'"
|
49
|
-
FileUtils.rm_r @extracted_dir
|
50
|
-
end
|
51
|
-
|
52
|
-
# Determine the name of the top level directory by peeking into the tarball
|
53
|
-
def destination_directory
|
54
|
-
raise Errno::ENOENT, "No such file \"#{@archive_path}\"" unless File.file? @archive_path
|
55
|
-
|
56
|
-
firstline = nil
|
57
|
-
dir = nil
|
58
|
-
dir_regex = %r[^(.*?)/]
|
59
|
-
IO.popen(%{tar -tf #{@archive_path}}) { |out| firstline = out.gets }
|
60
|
-
|
61
|
-
if firstline.nil? or firstline.empty?
|
62
|
-
raise "Could not get a directory listing from the installer tarfile #{File.basename @archive_path}"
|
63
|
-
elsif (match = firstline.match dir_regex)
|
64
|
-
dir = match[1]
|
65
|
-
else
|
66
|
-
raise "Could not determine the base directory name from #{firstline} - doesn't match #{dir_regex.to_s}"
|
67
|
-
end
|
68
|
-
dir
|
69
|
-
end
|
70
|
-
end
|
data/lib/pe_build/command.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'pe_build'
|
2
|
-
require 'vagrant'
|
3
|
-
|
4
|
-
class PEBuild::Command < Vagrant::Command::Base
|
5
|
-
def initialize(argv, env)
|
6
|
-
@argv, @env = argv, env
|
7
|
-
|
8
|
-
@main_args, @subcommand, @sub_args = split_main_and_subcommand(argv)
|
9
|
-
|
10
|
-
# Is this even remotely sane? Are we verging on cargo cult programming?
|
11
|
-
@subcommands = Vagrant::Registry.new
|
12
|
-
|
13
|
-
@subcommands.register('download') { PEBuild::Command::Download }
|
14
|
-
@subcommands.register('list') { PEBuild::Command::List }
|
15
|
-
end
|
16
|
-
|
17
|
-
def execute
|
18
|
-
if @subcommand and (klass = @subcommands.get(@subcommand))
|
19
|
-
klass.new(@argv, @env).execute
|
20
|
-
elsif @subcommand
|
21
|
-
raise "Unrecognized subcommand #{@subcommand}"
|
22
|
-
else
|
23
|
-
PEBuild::Command::List.new(@argv, @env).execute
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
require 'pe_build/command/list'
|
29
|
-
require 'pe_build/command/download'
|
30
|
-
|
31
|
-
Vagrant.commands.register(:pe_build) { PEBuild::Command }
|
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
class PEBuild::Command::List < Vagrant::Command::Base
|
3
|
-
def execute
|
4
|
-
if File.directory? PEBuild.archive_directory and (entries = Dir["#{PEBuild.archive_directory}/*"])
|
5
|
-
puts entries.join('\n')
|
6
|
-
else
|
7
|
-
warn "No PE versions downloaded."
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
data/lib/pe_build/config.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
require 'uri'
|
3
|
-
require 'pe_build'
|
4
|
-
|
5
|
-
class PEBuild::Config < Vagrant::Config::Base
|
6
|
-
attr_writer :download_root
|
7
|
-
attr_writer :version
|
8
|
-
attr_writer :filename
|
9
|
-
|
10
|
-
def download_root
|
11
|
-
@download_root || 'https://pm.puppetlabs.com/puppet-enterprise'
|
12
|
-
end
|
13
|
-
|
14
|
-
def version
|
15
|
-
@version || '2.5.2'
|
16
|
-
end
|
17
|
-
|
18
|
-
def filename
|
19
|
-
@filename || "puppet-enterprise-#{version}-all.tar.gz"
|
20
|
-
end
|
21
|
-
|
22
|
-
def validate(env, errors)
|
23
|
-
URI.parse(download_root)
|
24
|
-
rescue
|
25
|
-
# TODO I18n
|
26
|
-
errors.add("Invalid download root '#{download_root.inspect}'")
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
Vagrant.config_keys.register(:pe_build) { PEBuild::Config }
|
@@ -1,9 +0,0 @@
|
|
1
|
-
require 'pe_build'
|
2
|
-
require 'vagrant'
|
3
|
-
|
4
|
-
module PEBuild::Provisioners; end
|
5
|
-
|
6
|
-
require 'pe_build/provisioners/puppet_enterprise_bootstrap'
|
7
|
-
#require 'pe_build/provisioners/puppet_enterprise'
|
8
|
-
|
9
|
-
Vagrant.provisioners.register(:puppet_enterprise_bootstrap) { PEBuild::Provisioners::PuppetEnterpriseBootstrap}
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'pe_build/provisioners'
|
@@ -1,137 +0,0 @@
|
|
1
|
-
require 'pe_build/provisioners'
|
2
|
-
require 'vagrant'
|
3
|
-
require 'fileutils'
|
4
|
-
require 'erb'
|
5
|
-
|
6
|
-
class PEBuild::Provisioners::PuppetEnterpriseBootstrap < Vagrant::Provisioners::Base
|
7
|
-
|
8
|
-
class Config < Vagrant::Config::Base
|
9
|
-
attr_writer :verbose, :master
|
10
|
-
|
11
|
-
def role=(rolename)
|
12
|
-
@role = (rolename.is_a?(Symbol)) ? rolename : rolename.intern
|
13
|
-
end
|
14
|
-
|
15
|
-
def role
|
16
|
-
@role || :agent
|
17
|
-
end
|
18
|
-
|
19
|
-
def verbose
|
20
|
-
@verbose || true
|
21
|
-
end
|
22
|
-
|
23
|
-
def master
|
24
|
-
@master || 'master'
|
25
|
-
end
|
26
|
-
|
27
|
-
def validate(env, errors)
|
28
|
-
errors.add("role must be one of [:master, :agent]") unless [:master, :agent].include? role
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def self.config_class
|
33
|
-
Config
|
34
|
-
end
|
35
|
-
|
36
|
-
def initialize(*args)
|
37
|
-
super
|
38
|
-
|
39
|
-
load_variables
|
40
|
-
|
41
|
-
@cache_path = File.join(@env[:root_path], '.pe_build')
|
42
|
-
@answers_dir = File.join(@cache_path, 'answers')
|
43
|
-
end
|
44
|
-
|
45
|
-
def validate(app, env)
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
def prepare
|
50
|
-
FileUtils.mkdir @cache_path unless File.directory? @cache_path
|
51
|
-
@env[:action_runner].run(:prep_build, :unpack_directory => @cache_path)
|
52
|
-
end
|
53
|
-
|
54
|
-
def provision!
|
55
|
-
# determine if bootstrapping is necessary
|
56
|
-
|
57
|
-
prepare_answers_file
|
58
|
-
configure_installer
|
59
|
-
|
60
|
-
[:pre, :provision, :post].each do |stepname|
|
61
|
-
[:base, config.role].each do |rolename|
|
62
|
-
step rolename, stepname
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
# I HATE THIS.
|
70
|
-
def load_variables
|
71
|
-
if @env[:box_name]
|
72
|
-
@root = @env[:vm].pe_build.download_root
|
73
|
-
@version = @env[:vm].pe_build.version
|
74
|
-
@filename = @env[:vm].pe_build.version
|
75
|
-
end
|
76
|
-
|
77
|
-
@root ||= @env[:global_config].pe_build.download_root
|
78
|
-
@version ||= @env[:global_config].pe_build.version
|
79
|
-
@filename ||= @env[:global_config].pe_build.filename
|
80
|
-
|
81
|
-
@archive_path = File.join(PEBuild.archive_directory, @filename)
|
82
|
-
end
|
83
|
-
|
84
|
-
def prepare_answers_file
|
85
|
-
FileUtils.mkdir_p @answers_dir unless File.directory? @answers_dir
|
86
|
-
@env[:ui].info "Creating answers file, node:#{@env[:vm].name}, role: #{config.role}"
|
87
|
-
|
88
|
-
template = File.read("#{PEBuild.source_root}/templates/answers/#{config.role}.txt.erb")
|
89
|
-
dest = "#{@answers_dir}/#{@env[:vm].name}.txt"
|
90
|
-
|
91
|
-
contents = ERB.new(template).result(binding)
|
92
|
-
|
93
|
-
@env[:ui].info "Writing answers file to #{dest}"
|
94
|
-
File.open(dest, "w") do |file|
|
95
|
-
file.write contents
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
def step(role, stepname)
|
100
|
-
script_dir = File.join(@env[:root_path], 'bootstrap', role.to_s, stepname.to_s)
|
101
|
-
script_list = Dir.glob("#{script_dir}/*")
|
102
|
-
|
103
|
-
if script_list.empty?
|
104
|
-
@env[:ui].info "No steps for #{role}/#{stepname}", :color => :cyan
|
105
|
-
end
|
106
|
-
|
107
|
-
script_list.each do |template_path|
|
108
|
-
template = File.read(template_path)
|
109
|
-
contents = ERB.new(template).result(binding)
|
110
|
-
|
111
|
-
on_remote contents
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
# Determine the proper invocation of the PE installer
|
116
|
-
#
|
117
|
-
# @todo Don't restrict this to the universal installer
|
118
|
-
def configure_installer
|
119
|
-
vm_base_dir = "/vagrant/.pe_build"
|
120
|
-
installer = "#{vm_base_dir}/puppet-enterprise-#{@version}-all/puppet-enterprise-installer"
|
121
|
-
answers = "#{vm_base_dir}/answers/#{@env[:vm].name}.txt"
|
122
|
-
log_file = "/root/puppet-enterprise-installer-#{Time.now.strftime('%s')}.log"
|
123
|
-
|
124
|
-
@installer_cmd = "#{installer} -a #{answers} -l #{log_file}"
|
125
|
-
end
|
126
|
-
|
127
|
-
def on_remote(cmd)
|
128
|
-
env[:vm].channel.sudo(cmd) do |type, data|
|
129
|
-
# This section is directly ripped off from the shell provider.
|
130
|
-
if type == :stdout and config.verbose
|
131
|
-
@env[:ui].info(data.chomp, :color => :green, :prefix => false)
|
132
|
-
elsif type == :stderr
|
133
|
-
@env[:ui].info(data.chomp, :color => :red, :prefix => false)
|
134
|
-
end
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
data/lib/pe_build/version.rb
DELETED
data/manifests/.gitignore
DELETED
data/modules/.gitignore
DELETED