vagrant-pe_build 0.2.0 → 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/CHANGELOG +59 -0
- data/README.markdown +148 -5
- data/lib/pe_build.rb +5 -3
- data/lib/pe_build/action.rb +5 -0
- data/lib/pe_build/action/pe_build_dir.rb +18 -0
- data/lib/pe_build/archive.rb +39 -46
- data/lib/pe_build/cap.rb +17 -0
- data/lib/pe_build/cap/detect_installer/base.rb +15 -0
- data/lib/pe_build/cap/detect_installer/debian.rb +23 -0
- data/lib/pe_build/cap/detect_installer/posix.rb +73 -0
- data/lib/pe_build/cap/detect_installer/redhat.rb +18 -0
- data/lib/pe_build/cap/detect_installer/ubuntu.rb +23 -0
- data/lib/pe_build/cap/run_install/posix.rb +26 -0
- data/lib/pe_build/command.rb +6 -63
- data/lib/pe_build/command/base.rb +55 -0
- data/lib/pe_build/command/copy.rb +22 -23
- data/lib/pe_build/command/download.rb +4 -8
- data/lib/pe_build/command/list.rb +1 -6
- data/lib/pe_build/config/global.rb +13 -4
- data/lib/pe_build/config/pe_bootstrap.rb +4 -0
- data/lib/pe_build/idempotent.rb +1 -1
- data/lib/pe_build/on_machine.rb +10 -0
- data/lib/pe_build/plugin.rb +58 -22
- data/lib/pe_build/provisioner/pe_bootstrap.rb +123 -156
- data/lib/pe_build/provisioner/pe_bootstrap/answers_file.rb +49 -0
- data/lib/pe_build/release.rb +23 -0
- data/lib/pe_build/release/2_0.rb +25 -0
- data/lib/pe_build/release/2_5.rb +28 -0
- data/lib/pe_build/release/2_6.rb +27 -0
- data/lib/pe_build/release/2_7.rb +28 -0
- data/lib/pe_build/release/2_8.rb +35 -0
- data/lib/pe_build/release/3_0.rb +36 -0
- data/lib/pe_build/release/instance.rb +63 -0
- data/lib/pe_build/transfer.rb +25 -0
- data/lib/pe_build/transfer/file.rb +11 -9
- data/lib/pe_build/transfer/open_uri.rb +62 -0
- data/lib/pe_build/version.rb +1 -1
- data/templates/answers/{agent.txt.erb → agent-2.x.txt.erb} +1 -1
- data/templates/answers/agent-3.x.txt.erb +16 -0
- data/templates/answers/{master.txt.erb → master-2.x.txt.erb} +0 -0
- data/templates/answers/master-3.x.txt.erb +44 -0
- data/templates/locales/en.yml +16 -3
- metadata +28 -6
- data/lib/pe_build/transfer/uri.rb +0 -53
- data/templates/answers/master-existing-db.txt.erb +0 -52
@@ -0,0 +1,23 @@
|
|
1
|
+
module PEBuild
|
2
|
+
module Release
|
3
|
+
|
4
|
+
require 'pe_build/release/instance'
|
5
|
+
|
6
|
+
@releases = {}
|
7
|
+
|
8
|
+
def self.[](ver)
|
9
|
+
@releases[ver]
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.newrelease(&blk)
|
13
|
+
PEBuild::Release::Instance.new(&blk)
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'pe_build/release/2_0'
|
17
|
+
require 'pe_build/release/2_5'
|
18
|
+
require 'pe_build/release/2_6'
|
19
|
+
require 'pe_build/release/2_7'
|
20
|
+
require 'pe_build/release/2_8'
|
21
|
+
require 'pe_build/release/3_0'
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
two_oh_x = newrelease do
|
4
|
+
add_release :debian, 5
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 4
|
8
|
+
add_release :el, 5
|
9
|
+
add_release :el, 6
|
10
|
+
|
11
|
+
add_release :sles, 11
|
12
|
+
|
13
|
+
add_release :solaris, 10
|
14
|
+
|
15
|
+
add_release :ubuntu, '10.04'
|
16
|
+
|
17
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2.x.txt.erb')
|
18
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2.x.txt.erb')
|
19
|
+
end
|
20
|
+
|
21
|
+
@releases['2.0.0'] = two_oh_x
|
22
|
+
@releases['2.0.1'] = two_oh_x
|
23
|
+
@releases['2.0.2'] = two_oh_x
|
24
|
+
@releases['2.0.3'] = two_oh_x
|
25
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
two_five_x = newrelease do
|
4
|
+
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 5
|
8
|
+
add_release :el, 6
|
9
|
+
|
10
|
+
add_release :sles, 11
|
11
|
+
|
12
|
+
add_release :solaris, 10
|
13
|
+
|
14
|
+
add_release :ubuntu, '10.04'
|
15
|
+
|
16
|
+
add_release :windows, '2003'
|
17
|
+
add_release :windows, '2008R2'
|
18
|
+
add_release :windows, 7
|
19
|
+
|
20
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2.x.txt.erb')
|
21
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2.x.txt.erb')
|
22
|
+
end
|
23
|
+
|
24
|
+
@releases['2.5.0'] = two_five_x
|
25
|
+
@releases['2.5.1'] = two_five_x
|
26
|
+
@releases['2.5.2'] = two_five_x
|
27
|
+
@releases['2.5.3'] = two_five_x
|
28
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
two_six_x = newrelease do
|
4
|
+
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 5
|
8
|
+
add_release :el, 6
|
9
|
+
|
10
|
+
add_release :sles, 11
|
11
|
+
|
12
|
+
add_release :solaris, 10
|
13
|
+
|
14
|
+
add_release :ubuntu, '10.04'
|
15
|
+
add_release :ubuntu, '12.04'
|
16
|
+
|
17
|
+
add_release :windows, '2003'
|
18
|
+
add_release :windows, '2008R2'
|
19
|
+
add_release :windows, 7
|
20
|
+
|
21
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2.x.txt.erb')
|
22
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2.x.txt.erb')
|
23
|
+
end
|
24
|
+
|
25
|
+
@releases['2.6.0'] = two_six_x
|
26
|
+
@releases['2.6.1'] = two_six_x
|
27
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
two_seven_x = newrelease do
|
4
|
+
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 5
|
8
|
+
add_release :el, 6
|
9
|
+
|
10
|
+
add_release :sles, 11
|
11
|
+
|
12
|
+
add_release :solaris, 10
|
13
|
+
|
14
|
+
add_release :ubuntu, '10.04'
|
15
|
+
add_release :ubuntu, '12.04'
|
16
|
+
|
17
|
+
add_release :windows, '2003'
|
18
|
+
add_release :windows, '2008R2'
|
19
|
+
add_release :windows, 7
|
20
|
+
|
21
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2.x.txt.erb')
|
22
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2.x.txt.erb')
|
23
|
+
end
|
24
|
+
|
25
|
+
@releases['2.7.0'] = two_seven_x
|
26
|
+
@releases['2.7.1'] = two_seven_x
|
27
|
+
@releases['2.7.2'] = two_seven_x
|
28
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
two_eight_x = newrelease do
|
4
|
+
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 5
|
8
|
+
add_release :el, 6
|
9
|
+
|
10
|
+
add_release :sles, 11
|
11
|
+
|
12
|
+
add_release :solaris, 10
|
13
|
+
|
14
|
+
add_release :ubuntu, '10.04'
|
15
|
+
add_release :ubuntu, '12.04'
|
16
|
+
|
17
|
+
add_release :windows, '2003'
|
18
|
+
add_release :windows, '2008R2'
|
19
|
+
add_release :windows, 7
|
20
|
+
|
21
|
+
# PE 2.8 adds support for AIX, but as of 2013-08-12 Vagrant has nothing
|
22
|
+
# remotely resembling support for AIX WPARs or LPARs. Since it's meaningless
|
23
|
+
# to try to add support for AIX, we just leave this commented out.
|
24
|
+
#
|
25
|
+
# add_release :aix, '5.3'
|
26
|
+
# add_release :aix, '6.1'
|
27
|
+
# add_release :aix, '7.1'
|
28
|
+
|
29
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-2.x.txt.erb')
|
30
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-2.x.txt.erb')
|
31
|
+
end
|
32
|
+
|
33
|
+
@releases['2.8.1'] = two_eight_x
|
34
|
+
@releases['2.8.2'] = two_eight_x
|
35
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module PEBuild::Release
|
2
|
+
|
3
|
+
three_oh_x = newrelease do
|
4
|
+
|
5
|
+
add_release :debian, 6
|
6
|
+
|
7
|
+
add_release :el, 5
|
8
|
+
add_release :el, 6
|
9
|
+
|
10
|
+
#add_release :sles, 11
|
11
|
+
|
12
|
+
add_release :solaris, 10
|
13
|
+
|
14
|
+
add_release :ubuntu, '10.04'
|
15
|
+
add_release :ubuntu, '12.04'
|
16
|
+
|
17
|
+
add_release :windows, '2003'
|
18
|
+
add_release :windows, '2008R2'
|
19
|
+
add_release :windows, 7
|
20
|
+
add_release :windows, '2012'
|
21
|
+
|
22
|
+
# PE 2.8 adds support for AIX, but as of 2013-08-12 Vagrant has nothing
|
23
|
+
# remotely resembling support for AIX WPARs or LPARs. Since it's meaningless
|
24
|
+
# to try to add support for AIX, we just leave this commented out.
|
25
|
+
#
|
26
|
+
# add_release :aix, '5.3'
|
27
|
+
# add_release :aix, '6.1'
|
28
|
+
# add_release :aix, '7.1'
|
29
|
+
|
30
|
+
set_answer_file :master, File.join(PEBuild.template_dir, 'answers', 'master-3.x.txt.erb')
|
31
|
+
set_answer_file :agent, File.join(PEBuild.template_dir, 'answers', 'agent-3.x.txt.erb')
|
32
|
+
end
|
33
|
+
|
34
|
+
@releases['3.0.0'] = three_oh_x
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# Define a Puppet Enterprise release
|
2
|
+
#
|
3
|
+
# @api private
|
4
|
+
class PEBuild::Release::Instance
|
5
|
+
|
6
|
+
attr_reader :version
|
7
|
+
|
8
|
+
def initialize(&blk)
|
9
|
+
|
10
|
+
@supported = Hash.new { |hash, key| hash[key] = Set.new }
|
11
|
+
|
12
|
+
@answer_files = {}
|
13
|
+
|
14
|
+
instance_eval(&blk) if blk
|
15
|
+
end
|
16
|
+
|
17
|
+
# Determine if Puppet Enterprise supports the specific release
|
18
|
+
#
|
19
|
+
# @param distro [String] The distribution to check
|
20
|
+
# @param dist_version [String] The version release to check
|
21
|
+
#
|
22
|
+
# @return [true, false]
|
23
|
+
def supports?(distro, dist_release)
|
24
|
+
distro = distro.to_sym unless distro.is_a? Symbol
|
25
|
+
dist_release = dist_release.to_s unless dist_release.is_a? String
|
26
|
+
|
27
|
+
@supported[distro].include? dist_release
|
28
|
+
end
|
29
|
+
|
30
|
+
# Return the answer file template for the given role and release of PE
|
31
|
+
#
|
32
|
+
# @param role [Symbol] The role for the template
|
33
|
+
#
|
34
|
+
# @return
|
35
|
+
def answer_file(role)
|
36
|
+
@answer_files[role]
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
# Define a distribution release as supported.
|
42
|
+
#
|
43
|
+
# @param distro [String] The distribution to add
|
44
|
+
# @param dist_version [String] The version release to add
|
45
|
+
#
|
46
|
+
# @return [void]
|
47
|
+
def add_release(distro, dist_release)
|
48
|
+
distro = distro.to_sym unless distro.is_a? Symbol
|
49
|
+
dist_release = dist_release.to_s unless dist_release.is_a? String
|
50
|
+
|
51
|
+
@supported[distro].add dist_release
|
52
|
+
end
|
53
|
+
|
54
|
+
# Set the answer file template for a given role
|
55
|
+
#
|
56
|
+
# @param role [Symbol] The role for the template
|
57
|
+
# @param path [String] The path to the template
|
58
|
+
#
|
59
|
+
# @return [void]
|
60
|
+
def set_answer_file(role, path)
|
61
|
+
@answer_files[role] = path
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module PEBuild
|
2
|
+
module Transfer
|
3
|
+
require 'pe_build/transfer/open_uri'
|
4
|
+
require 'pe_build/transfer/file'
|
5
|
+
|
6
|
+
IMPLEMENTATIONS = {
|
7
|
+
'http' => PEBuild::Transfer::OpenURI,
|
8
|
+
'https' => PEBuild::Transfer::OpenURI,
|
9
|
+
'ftp' => PEBuild::Transfer::OpenURI,
|
10
|
+
'file' => PEBuild::Transfer::File,
|
11
|
+
nil => PEBuild::Transfer::File, # Assume that URIs without a scheme are files
|
12
|
+
}
|
13
|
+
|
14
|
+
def self.generate(src, dst)
|
15
|
+
scheme = src.scheme
|
16
|
+
|
17
|
+
if (klass = IMPLEMENTATIONS[scheme])
|
18
|
+
klass.new(src, dst)
|
19
|
+
else
|
20
|
+
raise "URI scheme #{scheme.inspect} cannot be handled by any file transferrers"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -1,18 +1,20 @@
|
|
1
1
|
require 'fileutils'
|
2
|
+
require 'pe_build/idempotent'
|
2
3
|
|
3
|
-
|
4
|
-
module Transfer
|
5
|
-
class File
|
4
|
+
class PEBuild::Transfer::File
|
6
5
|
|
7
|
-
# @param src [
|
6
|
+
# @param src [URI] The local file path path to the file to copy
|
8
7
|
# @param dst [String] The path to destination of the copied file
|
9
|
-
def initialize(
|
10
|
-
@src
|
8
|
+
def initialize(uri, dst)
|
9
|
+
@src = uri.path
|
10
|
+
@dst = dst
|
11
|
+
|
12
|
+
@logger = Log4r::Logger.new('vagrant::pe_build::transfer::file')
|
11
13
|
end
|
12
14
|
|
15
|
+
include PEBuild::Idempotent
|
16
|
+
|
13
17
|
def copy
|
14
|
-
FileUtils.cp @src, @dst
|
18
|
+
idempotent(@dst) { FileUtils.cp @src, @dst }
|
15
19
|
end
|
16
20
|
end
|
17
|
-
end
|
18
|
-
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'pe_build/version'
|
2
|
+
require 'pe_build/idempotent'
|
3
|
+
|
4
|
+
require 'open-uri'
|
5
|
+
require 'progressbar'
|
6
|
+
|
7
|
+
class PEBuild::Transfer::OpenURI
|
8
|
+
|
9
|
+
class DownloadFailed < Vagrant::Errors::VagrantError
|
10
|
+
error_key(:download_failed, 'pebuild.transfer.open_uri')
|
11
|
+
end
|
12
|
+
|
13
|
+
# @param uri [URI] The http(s) URI to the file to copy
|
14
|
+
# @param dst [String] The path to destination of the copied file
|
15
|
+
def initialize(uri, dst)
|
16
|
+
@uri, @dst = uri, dst
|
17
|
+
|
18
|
+
@logger = Log4r::Logger.new('vagrant::pe_build::transfer::open_uri')
|
19
|
+
end
|
20
|
+
|
21
|
+
include PEBuild::Idempotent
|
22
|
+
|
23
|
+
def copy
|
24
|
+
idempotent(@dst) do
|
25
|
+
tmpfile = download_file
|
26
|
+
FileUtils.mv(tmpfile, @dst)
|
27
|
+
end
|
28
|
+
rescue ::OpenURI::HTTPError => e
|
29
|
+
raise DownloadFailed, :uri => @uri, :msg => e.message
|
30
|
+
end
|
31
|
+
|
32
|
+
HEADERS = {'User-Agent' => "Vagrant/PEBuild (v#{PEBuild::VERSION})"}
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# Open a open-uri file handle for the given URL
|
37
|
+
#
|
38
|
+
# @return [IO]
|
39
|
+
def download_file
|
40
|
+
progress = nil
|
41
|
+
|
42
|
+
content_length_proc = lambda do |length|
|
43
|
+
if length and length > 0
|
44
|
+
progress = ProgressBar.new('Fetching file', length)
|
45
|
+
progress.file_transfer_mode
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
progress_proc = lambda do |size|
|
50
|
+
progress.set(size) if progress
|
51
|
+
end
|
52
|
+
|
53
|
+
options = HEADERS.merge({
|
54
|
+
:content_length_proc => content_length_proc,
|
55
|
+
:progress_proc => progress_proc,
|
56
|
+
})
|
57
|
+
|
58
|
+
@logger.info "Fetching file from #{@uri}"
|
59
|
+
|
60
|
+
@uri.open(options)
|
61
|
+
end
|
62
|
+
end
|
data/lib/pe_build/version.rb
CHANGED
@@ -4,7 +4,7 @@ q_puppet_enterpriseconsole_install=n
|
|
4
4
|
q_puppet_symlinks_install=y
|
5
5
|
q_puppetagent_certname=<%= @machine.name %>
|
6
6
|
q_puppetagent_install=y
|
7
|
-
q_puppetagent_server=<%= config.master %>
|
7
|
+
q_puppetagent_server=<%= @config.master %>
|
8
8
|
q_puppetmaster_install=n
|
9
9
|
q_vendor_packages_install=y
|
10
10
|
q_continue_or_reenter_master_hostname=c
|
@@ -0,0 +1,16 @@
|
|
1
|
+
q_fail_on_unsuccessful_master_lookup=y
|
2
|
+
q_install=y
|
3
|
+
q_puppet_cloud_install=n
|
4
|
+
q_puppet_enterpriseconsole_install=n
|
5
|
+
q_puppet_symlinks_install=y
|
6
|
+
q_puppetagent_certname=<%= @machine.name %>
|
7
|
+
q_puppetagent_install=y
|
8
|
+
q_puppetagent_server=<%= @config.master %>
|
9
|
+
q_puppetca_install=n
|
10
|
+
q_puppetdb_hostname=
|
11
|
+
q_puppetdb_install=n
|
12
|
+
q_puppetdb_port=
|
13
|
+
q_puppetmaster_install=n
|
14
|
+
q_vendor_packages_install=y
|
15
|
+
q_continue_or_reenter_master_hostname=c
|
16
|
+
q_verify_packages=y
|
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
q_all_in_one_install=y
|
2
|
+
q_database_host=localhost
|
3
|
+
q_database_install=y
|
4
|
+
q_database_port=5432
|
5
|
+
q_database_root_password=wcAdzLoHz6Vpzp6TJPLT
|
6
|
+
q_database_root_user=pe-postgres
|
7
|
+
q_install=y
|
8
|
+
q_pe_database=y
|
9
|
+
q_puppet_cloud_install=y
|
10
|
+
q_puppet_enterpriseconsole_auth_database_name=console_auth
|
11
|
+
q_puppet_enterpriseconsole_auth_database_password=y33blQzfW9ZiCSpSztlN
|
12
|
+
q_puppet_enterpriseconsole_auth_database_user=console_auth
|
13
|
+
q_puppet_enterpriseconsole_auth_password=puppetlabs
|
14
|
+
q_puppet_enterpriseconsole_auth_user_email=admin@puppetlabs.com
|
15
|
+
q_puppet_enterpriseconsole_database_name=console
|
16
|
+
q_puppet_enterpriseconsole_database_password=aX5nCiKbkjKEBVzW0tCx
|
17
|
+
q_puppet_enterpriseconsole_database_user=console
|
18
|
+
q_puppet_enterpriseconsole_httpd_port=443
|
19
|
+
q_puppet_enterpriseconsole_install=y
|
20
|
+
q_puppet_enterpriseconsole_master_hostname=master
|
21
|
+
q_puppet_enterpriseconsole_smtp_host=localhost
|
22
|
+
q_puppet_enterpriseconsole_smtp_password=
|
23
|
+
q_puppet_enterpriseconsole_smtp_port=25
|
24
|
+
q_puppet_enterpriseconsole_smtp_use_tls=n
|
25
|
+
q_puppet_enterpriseconsole_smtp_user_auth=n
|
26
|
+
q_puppet_enterpriseconsole_smtp_username=
|
27
|
+
q_puppet_symlinks_install=y
|
28
|
+
q_puppetagent_certname=<%= @machine.name %>
|
29
|
+
q_puppetagent_install=y
|
30
|
+
q_puppetagent_server=<%= @machine.name %>
|
31
|
+
q_puppetdb_database_name=pe-puppetdb
|
32
|
+
q_puppetdb_database_password=MCPaKB0ERo0FlAN60sny
|
33
|
+
q_puppetdb_database_user=pe-puppetdb
|
34
|
+
q_puppetdb_hostname=<%= @machine.name %>
|
35
|
+
q_puppetdb_install=y
|
36
|
+
q_puppetdb_port=8081
|
37
|
+
q_puppetmaster_certname=<%= @machine.name %>
|
38
|
+
q_puppetmaster_dnsaltnames=<%= @machine.name %>,puppet
|
39
|
+
q_puppetmaster_enterpriseconsole_hostname=localhost
|
40
|
+
q_puppetmaster_enterpriseconsole_port=443
|
41
|
+
q_puppetmaster_install=y
|
42
|
+
q_run_updtvpkg=n
|
43
|
+
q_vendor_packages_install=y
|
44
|
+
q_verify_packages=y
|