beaker-puppet 0.10.0 → 0.11.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 +5 -13
- data/lib/beaker-puppet.rb +2 -0
- data/lib/beaker-puppet/helpers/rake_helpers.rb +21 -0
- data/lib/beaker-puppet/install_utils/foss_utils.rb +77 -0
- data/lib/beaker-puppet/version.rb +1 -1
- data/setup/aio/010_Install.rb +50 -0
- data/setup/aio/020_InstallCumulusModules.rb +12 -0
- data/setup/aio/021_InstallAristaModule.rb +20 -0
- data/setup/aio/045_EnsureMasterStarted.rb +1 -0
- data/setup/common/000-delete-puppet-when-none.rb +11 -0
- data/setup/common/025_StopFirewall.rb +16 -0
- data/setup/common/030_StopSssd.rb +9 -0
- data/setup/common/040_ValidateSignCert.rb +46 -0
- data/setup/gem/010_GemInstall.rb +40 -0
- data/setup/git/000_EnvSetup.rb +144 -0
- data/setup/git/010_TestSetup.rb +103 -0
- data/setup/git/020_PuppetUserAndGroup.rb +10 -0
- data/setup/git/030_PuppetMasterSanity.rb +18 -0
- data/setup/git/060_InstallModules.rb +76 -0
- data/setup/git/070_InstallCACerts.rb +93 -0
- data/tasks/ci.rake +233 -0
- metadata +48 -31
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
MzY0ZWZiNTEzNDk0M2YwZTdlODcxNWQyM2E3MWRiYWE5YWNkNzE4YQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 02ec1da775402ec80c54b00f614d7b18f90c0a27
|
4
|
+
data.tar.gz: eb6d32c7c507cd87055c287d99e44b8a7b69bedc
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTFlYzU5NjMwMTY3ZWZiODc4YjUxMjE0MGVkMmE0YzdkNTE2Njg0NDVhMmZm
|
11
|
-
MjEyMTliNTRhNGNmNmVhZGMxNjYzZGFhNWZhYjExOTk2MmNmZTU=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODczODMyZjcwZWNhNTgwMzg5YTljYTBiNTM4MWIzYmQ4MTkwNmVkYTE5ZGQ2
|
14
|
-
YWE0NGFhNDNiY2EwMGYwNWYyZDU0YmRhNmM2NzJjODYzNzc4MWM2OWZkMjg1
|
15
|
-
YjBlNDAxM2I0YWIwNzVhNjI1ZjNiN2MzMTBiNDFkODY2N2EyZTU=
|
6
|
+
metadata.gz: 8ae33a0aba67b868c412302688b813524b84ee72f512ae8425c884c276f7608ddadda199847b4444b7f8edc886186cd16f594e3778f11790bd1bb122fc74f758
|
7
|
+
data.tar.gz: 424bdbafc891afb87f12f95456f4c4bf9d15bb2c8233173d829baa6142f8451b8349f1d3bc02b8a700d1fc95c0b50f7eabd10ee7ae2a0a3d2e9d54f95c73655b
|
data/lib/beaker-puppet.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Beaker
|
2
|
+
module DSL
|
3
|
+
module Helpers
|
4
|
+
# Methods that help you interact with rake during ci setup
|
5
|
+
module RakeHelpers
|
6
|
+
class << self
|
7
|
+
def load_tasks(beaker_root = File.expand_path("#{__dir__}/../../.."))
|
8
|
+
task_dir = File.join(beaker_root, 'tasks')
|
9
|
+
tasks = [
|
10
|
+
'ci.rake'
|
11
|
+
]
|
12
|
+
|
13
|
+
tasks.each do |task|
|
14
|
+
load File.join(task_dir, task)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1353,6 +1353,83 @@ module Beaker
|
|
1353
1353
|
|
1354
1354
|
end
|
1355
1355
|
end
|
1356
|
+
|
1357
|
+
# Installs packages on the hosts.
|
1358
|
+
#
|
1359
|
+
# @param hosts [Array<Host>] Array of hosts to install packages to.
|
1360
|
+
# @param package_hash [Hash{Symbol=>Array<String,Array<String,String>>}]
|
1361
|
+
# Keys should be a symbol for a platform in PLATFORM_PATTERNS. Values
|
1362
|
+
# should be an array of package names to install, or of two element
|
1363
|
+
# arrays where a[0] is the command we expect to find on the platform
|
1364
|
+
# and a[1] is the package name (when they are different).
|
1365
|
+
# @param options [Hash{Symbol=>Boolean}]
|
1366
|
+
# @option options [Boolean] :check_if_exists First check to see if
|
1367
|
+
# command is present before installing package. (Default false)
|
1368
|
+
# @return true
|
1369
|
+
def install_packages_on(hosts, package_hash, options = {})
|
1370
|
+
platform_patterns = {
|
1371
|
+
:redhat => /fedora|el-|centos/,
|
1372
|
+
:debian => /debian|ubuntu|cumulus/,
|
1373
|
+
:debian_ruby18 => /debian|ubuntu-lucid|ubuntu-precise/,
|
1374
|
+
:solaris_10 => /solaris-10/,
|
1375
|
+
:solaris_11 => /solaris-11/,
|
1376
|
+
:windows => /windows/,
|
1377
|
+
:eos => /^eos-/,
|
1378
|
+
}.freeze
|
1379
|
+
|
1380
|
+
check_if_exists = options[:check_if_exists]
|
1381
|
+
Array(hosts).each do |host|
|
1382
|
+
package_hash.each do |platform_key,package_list|
|
1383
|
+
if pattern = platform_patterns[platform_key]
|
1384
|
+
if pattern.match(host['platform'])
|
1385
|
+
package_list.each do |cmd_pkg|
|
1386
|
+
if cmd_pkg.kind_of?(Array)
|
1387
|
+
command, package = cmd_pkg
|
1388
|
+
else
|
1389
|
+
command = package = cmd_pkg
|
1390
|
+
end
|
1391
|
+
if !check_if_exists || !host.check_for_package(command)
|
1392
|
+
host.logger.notify("Installing #{package}")
|
1393
|
+
additional_switches = '--allow-unauthenticated' if platform_key == :debian
|
1394
|
+
host.install_package(package, additional_switches)
|
1395
|
+
end
|
1396
|
+
end
|
1397
|
+
end
|
1398
|
+
else
|
1399
|
+
raise("Unknown platform '#{platform_key}' in package_hash")
|
1400
|
+
end
|
1401
|
+
end
|
1402
|
+
end
|
1403
|
+
return true
|
1404
|
+
end
|
1405
|
+
|
1406
|
+
def ruby_command(host)
|
1407
|
+
"env PATH=\"#{host['privatebindir']}:${PATH}\" ruby"
|
1408
|
+
end
|
1409
|
+
|
1410
|
+
def gem_command(host, type = 'aio')
|
1411
|
+
if type == 'aio'
|
1412
|
+
if host['platform'] =~ /windows/
|
1413
|
+
"env PATH=\"#{host['privatebindir']}:${PATH}\" cmd /c gem"
|
1414
|
+
else
|
1415
|
+
"env PATH=\"#{host['privatebindir']}:${PATH}\" gem"
|
1416
|
+
end
|
1417
|
+
else
|
1418
|
+
on(host, 'which gem').stdout.chomp
|
1419
|
+
end
|
1420
|
+
end
|
1421
|
+
|
1422
|
+
# Configures gem sources on hosts to use a mirror, if specified
|
1423
|
+
# This is a duplicate of the Gemfile logic.
|
1424
|
+
def configure_gem_mirror(hosts)
|
1425
|
+
gem_source = ENV['GEM_SOURCE'] || 'https://rubygems.org'
|
1426
|
+
|
1427
|
+
Array(hosts).each do |host|
|
1428
|
+
gem = gem_command(host)
|
1429
|
+
on host, "#{gem} source --clear-all"
|
1430
|
+
on host, "#{gem} source --add #{gem_source}"
|
1431
|
+
end
|
1432
|
+
end
|
1356
1433
|
end
|
1357
1434
|
end
|
1358
1435
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
extend BeakerPuppet::Install::Puppet5
|
2
|
+
extend Beaker::DSL::InstallUtils::FOSSUtils
|
3
|
+
|
4
|
+
test_name "Install Packages"
|
5
|
+
|
6
|
+
dev_builds_url = ENV['DEV_BUILDS_URL'] || 'http://builds.delivery.puppetlabs.net'
|
7
|
+
nightly_builds_url = ENV['NIGHTLY_BUILDS_URL'] || "http://ravi.puppetlabs.com"
|
8
|
+
|
9
|
+
step "Install puppet-agent..." do
|
10
|
+
sha = ENV['SHA']
|
11
|
+
install_from_build_data_url('puppet-agent', "#{dev_builds_url}/puppet-agent/#{sha}/artifacts/#{sha}.yaml", hosts)
|
12
|
+
end
|
13
|
+
|
14
|
+
step "Install puppetserver..." do
|
15
|
+
if ENV['SERVER_VERSION'].nil? || ENV['SERVER_VERSION'] == 'latest'
|
16
|
+
install_puppetlabs_dev_repo(master, 'puppetserver', 'latest', nil, :dev_builds_url => nightly_builds_url)
|
17
|
+
master.install_package('puppetserver')
|
18
|
+
else
|
19
|
+
server_version = ENV['SERVER_VERSION']
|
20
|
+
install_from_build_data_url('puppetserver', "#{dev_builds_url}/puppetserver/#{server_version}/artifacts/#{server_version}.yaml", master)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# make sure install is sane, beaker has already added puppet and ruby
|
25
|
+
# to PATH in ~/.ssh/environment
|
26
|
+
agents.each do |agent|
|
27
|
+
on agent, puppet('--version')
|
28
|
+
ruby = ruby_command(agent)
|
29
|
+
on agent, "#{ruby} --version"
|
30
|
+
end
|
31
|
+
|
32
|
+
# Get a rough estimate of clock skew among hosts
|
33
|
+
times = []
|
34
|
+
hosts.each do |host|
|
35
|
+
ruby = ruby_command(host)
|
36
|
+
on(host, "#{ruby} -e 'puts Time.now.strftime(\"%Y-%m-%d %T.%L %z\")'") do |result|
|
37
|
+
times << result.stdout.chomp
|
38
|
+
end
|
39
|
+
end
|
40
|
+
times.map! do |time|
|
41
|
+
(Time.strptime(time, "%Y-%m-%d %T.%L %z").to_f * 1000.0).to_i
|
42
|
+
end
|
43
|
+
diff = times.max - times.min
|
44
|
+
if diff < 60000
|
45
|
+
logger.info "Host times vary #{diff} ms"
|
46
|
+
else
|
47
|
+
logger.warn "Host times vary #{diff} ms, tests may fail"
|
48
|
+
end
|
49
|
+
|
50
|
+
configure_gem_mirror(hosts)
|
@@ -0,0 +1,12 @@
|
|
1
|
+
platforms = hosts.map{|val| val[:platform]}
|
2
|
+
skip_test "No cumulus hosts present" unless platforms.any? { |val| /cumulus/ =~ val }
|
3
|
+
confine :to, {}, hosts.select { |host| host[:roles].include?('master') }
|
4
|
+
|
5
|
+
step 'install Cumulus Modules on masters' do
|
6
|
+
hosts.each do |node|
|
7
|
+
on(node, puppet('module','install','cumuluslinux-cumulus_license'))
|
8
|
+
on(node, puppet('module','install','cumuluslinux-cumulus_interfaces'))
|
9
|
+
on(node, puppet('module','install','cumuluslinux-cumulus_interface_policy'))
|
10
|
+
on(node, puppet('module','install','cumuluslinux-cumulus_ports'))
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
platforms = hosts.map{|val| val[:platform]}
|
2
|
+
skip_test "No arista hosts present" unless platforms.any? { |val| /^eos-/ =~ val }
|
3
|
+
test_name 'Arista Switch Pre-suite' do
|
4
|
+
masters = select_hosts({:roles => ['master', 'compile_master']})
|
5
|
+
switchs = select_hosts({:platform => ['eos-4-i386']})
|
6
|
+
|
7
|
+
step 'install Arista Module on masters' do
|
8
|
+
masters.each do |node|
|
9
|
+
on(node, puppet('module','install','aristanetworks-netdev_stdlib_eos'))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
step 'add puppet user to switch' do
|
14
|
+
switchs.each do |switch|
|
15
|
+
on(switch, "useradd -U puppet")
|
16
|
+
on(switch, "/opt/puppetlabs/bin/puppet config --confdir /etc/puppetlabs/puppet set user root")
|
17
|
+
on(switch, "/opt/puppetlabs/bin/puppet config --confdir /etc/puppetlabs/puppet set group root")
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
on(master, puppet('resource', 'service', master['puppetservice'], "ensure=running"))
|
@@ -0,0 +1,11 @@
|
|
1
|
+
test_name "Expunge puppet bits if hypervisor is none"
|
2
|
+
|
3
|
+
# Ensure that the any previous installations of puppet
|
4
|
+
# are removed from the host if it is not managed by a
|
5
|
+
# provisioning hypervisor.
|
6
|
+
|
7
|
+
hosts.each do |host|
|
8
|
+
if host[:hypervisor] == "none"
|
9
|
+
remove_puppet_on(host)
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
test_name "Stop firewall" do
|
2
|
+
hosts.each do |host|
|
3
|
+
case host['platform']
|
4
|
+
when /debian/
|
5
|
+
on host, 'iptables -F'
|
6
|
+
when /fedora|el-7/
|
7
|
+
on host, puppet('resource', 'service', 'firewalld', 'ensure=stopped')
|
8
|
+
when /el-|centos/
|
9
|
+
on host, puppet('resource', 'service', 'iptables', 'ensure=stopped')
|
10
|
+
when /ubuntu/
|
11
|
+
on host, puppet('resource', 'service', 'ufw', 'ensure=stopped')
|
12
|
+
else
|
13
|
+
logger.notify("Not sure how to clear firewall on #{host['platform']}")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
test_name "Stop sssd" do
|
2
|
+
# The sssd service causes local users/groups to be cached,
|
3
|
+
# which can cause unexpected results when tests are trying
|
4
|
+
# to restore state. We ensure that it is not running to
|
5
|
+
# prevent such caching from occurring.
|
6
|
+
hosts.each do |host|
|
7
|
+
on(host, puppet('resource', 'service', 'sssd', 'ensure=stopped'), :accept_all_exit_codes => true)
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
test_name "Validate Sign Cert" do
|
2
|
+
hostname = on(master, 'facter hostname').stdout.strip
|
3
|
+
fqdn = on(master, 'facter fqdn').stdout.strip
|
4
|
+
|
5
|
+
if master.use_service_scripts?
|
6
|
+
step "Ensure puppet is stopped"
|
7
|
+
# Passenger, in particular, must be shutdown for the cert setup steps to work,
|
8
|
+
# but any running puppet master will interfere with webrick starting up and
|
9
|
+
# potentially ignore the puppet.conf changes.
|
10
|
+
on(master, puppet('resource', 'service', master['puppetservice'], "ensure=stopped"))
|
11
|
+
end
|
12
|
+
|
13
|
+
step "Clear SSL on all hosts"
|
14
|
+
hosts.each do |host|
|
15
|
+
ssldir = on(host, puppet('agent --configprint ssldir')).stdout.chomp
|
16
|
+
on(host, "rm -rf '#{ssldir}'")
|
17
|
+
end
|
18
|
+
|
19
|
+
step "Master: Start Puppet Master" do
|
20
|
+
master_opts = {
|
21
|
+
:main => {
|
22
|
+
:dns_alt_names => "puppet,#{hostname},#{fqdn}",
|
23
|
+
},
|
24
|
+
:__service_args__ => {
|
25
|
+
# apache2 service scripts can't restart if we've removed the ssl dir
|
26
|
+
:bypass_service_script => true,
|
27
|
+
},
|
28
|
+
}
|
29
|
+
with_puppet_running_on(master, master_opts) do
|
30
|
+
|
31
|
+
hosts.each do |host|
|
32
|
+
next if host['roles'].include? 'master'
|
33
|
+
|
34
|
+
step "Agents: Run agent --test first time to gen CSR"
|
35
|
+
on host, puppet("agent --test --server #{master}"), :acceptable_exit_codes => [1]
|
36
|
+
end
|
37
|
+
|
38
|
+
# Sign all waiting certs
|
39
|
+
step "Master: sign all certs"
|
40
|
+
on master, puppet("cert --sign --all"), :acceptable_exit_codes => [0,24]
|
41
|
+
|
42
|
+
step "Agents: Run agent --test second time to obtain signed cert"
|
43
|
+
on agents, puppet("agent --test --server #{master}"), :acceptable_exit_codes => [0,2]
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
extend Beaker::DSL::InstallUtils::FOSSUtils
|
2
|
+
|
3
|
+
test_name "Install puppet gem"
|
4
|
+
|
5
|
+
agents.each do |agent|
|
6
|
+
sha = ENV['SHA']
|
7
|
+
base_url = "http://builds.delivery.puppetlabs.net/puppet/#{sha}/artifacts"
|
8
|
+
|
9
|
+
ruby_command = ruby_command(agent)
|
10
|
+
gem_command = gem_command(agent)
|
11
|
+
|
12
|
+
# retrieve the build data, since the gem version is based on the short git
|
13
|
+
# describe, not the full git SHA
|
14
|
+
on(agent, "curl -s -o build_data.yaml #{base_url}/#{sha}.yaml")
|
15
|
+
gem_version = on(agent, "#{ruby_command} -ryaml -e 'puts YAML.load_file(\"build_data.yaml\")[:gemversion]'").stdout.chomp
|
16
|
+
|
17
|
+
if agent['platform'] =~ /windows/
|
18
|
+
# wipe existing gems first
|
19
|
+
default_dir = on(agent, "#{ruby_command} -rrbconfig -e 'puts Gem.default_dir'").stdout.chomp
|
20
|
+
on(agent, "rm -rf '#{default_dir}'")
|
21
|
+
|
22
|
+
arch = agent[:ruby_arch] || 'x86'
|
23
|
+
gem_arch = arch == 'x64' ? 'x64-mingw32' : 'x86-mingw32'
|
24
|
+
url = "#{base_url}/puppet-#{gem_version}-#{gem_arch}.gem"
|
25
|
+
else
|
26
|
+
url = "#{base_url}/puppet-#{gem_version}.gem"
|
27
|
+
end
|
28
|
+
|
29
|
+
step "Download puppet gem from #{url}"
|
30
|
+
on(agent, "curl -s -o puppet.gem #{url}")
|
31
|
+
|
32
|
+
step "Install puppet.gem"
|
33
|
+
on(agent, "#{gem_command} install puppet.gem")
|
34
|
+
|
35
|
+
step "Verify it's sane"
|
36
|
+
on(agent, puppet('--version'))
|
37
|
+
on(agent, puppet('apply', "-e \"notify { 'hello': }\"")) do |result|
|
38
|
+
assert_match(/defined 'message' as 'hello'/, result.stdout)
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
test_name "Setup environment"
|
2
|
+
|
3
|
+
step "Ensure Git and Ruby"
|
4
|
+
|
5
|
+
extend Beaker::DSL::InstallUtils
|
6
|
+
|
7
|
+
PACKAGES = {
|
8
|
+
:redhat => [
|
9
|
+
'git',
|
10
|
+
'ruby',
|
11
|
+
'rubygem-json', # invalid on RHEL6
|
12
|
+
'rubygem-io-console', # required for Fedora25 to bundle install
|
13
|
+
'rubygem-rdoc' # required for Fedora25 to install gems
|
14
|
+
],
|
15
|
+
:debian => [
|
16
|
+
['git', 'git-core'],
|
17
|
+
'ruby',
|
18
|
+
],
|
19
|
+
:debian_ruby18 => [
|
20
|
+
'libjson-ruby',
|
21
|
+
],
|
22
|
+
:solaris_11 => [
|
23
|
+
['git', 'developer/versioning/git'],
|
24
|
+
],
|
25
|
+
:solaris_10 => [
|
26
|
+
'coreutils',
|
27
|
+
'curl', # update curl to fix "CURLOPT_SSL_VERIFYHOST no longer supports 1 as value!" issue
|
28
|
+
'git',
|
29
|
+
'ruby19',
|
30
|
+
'ruby19_dev',
|
31
|
+
'gcc4core',
|
32
|
+
],
|
33
|
+
:windows => [
|
34
|
+
'git',
|
35
|
+
# there isn't a need for json on windows because it is bundled in ruby 1.9
|
36
|
+
],
|
37
|
+
}
|
38
|
+
|
39
|
+
# override incorrect FOSS (git) defaults from Beaker with AIO applicable ones
|
40
|
+
#
|
41
|
+
# Remove after PUP-4867 breaks distmoduledir and sitemoduledir into individual
|
42
|
+
# settings from modulepath and Beaker can properly introspect these settings
|
43
|
+
hosts.each do |host|
|
44
|
+
platform = host['platform'] =~ /windows/ ? 'windows' : 'unix'
|
45
|
+
|
46
|
+
host['puppetbindir'] = '/usr/bin' if platform == 'windows'
|
47
|
+
|
48
|
+
# Beakers add_aio_defaults_on helper is not appropriate here as it
|
49
|
+
# also alters puppetbindir / privatebindir to use package installed
|
50
|
+
# paths rather than git installed paths
|
51
|
+
host['distmoduledir'] = AIO_DEFAULTS[platform]['distmoduledir']
|
52
|
+
host['sitemoduledir'] = AIO_DEFAULTS[platform]['sitemoduledir']
|
53
|
+
end
|
54
|
+
|
55
|
+
hosts.each do |host|
|
56
|
+
case host['platform']
|
57
|
+
when /solaris-10/
|
58
|
+
on host, 'mkdir -p /var/lib'
|
59
|
+
on host, 'ln -sf /opt/csw/bin/pkgutil /usr/bin/pkgutil'
|
60
|
+
on host, 'ln -sf /opt/csw/bin/gem19 /usr/bin/gem'
|
61
|
+
on host, 'ln -sf /opt/csw/bin/git /usr/bin/git'
|
62
|
+
on host, 'ln -sf /opt/csw/bin/ruby19 /usr/bin/ruby'
|
63
|
+
on host, 'ln -sf /opt/csw/bin/gstat /usr/bin/stat'
|
64
|
+
on host, 'ln -sf /opt/csw/bin/greadlink /usr/bin/readlink'
|
65
|
+
when /solaris-11/
|
66
|
+
step "#{host} jump through hoops to install ruby19; switch back to runtime/ruby-19 after template upgrade to sol11.2"
|
67
|
+
create_remote_file host, "/root/shutupsolaris", <<END
|
68
|
+
mail=
|
69
|
+
# Overwrite already installed instances
|
70
|
+
instance=overwrite
|
71
|
+
# Do not bother checking for partially installed packages
|
72
|
+
partial=nocheck
|
73
|
+
# Do not bother checking the runlevel
|
74
|
+
runlevel=nocheck
|
75
|
+
# Do not bother checking package dependencies (We take care of this)
|
76
|
+
idepend=nocheck
|
77
|
+
rdepend=nocheck
|
78
|
+
# DO check for available free space and abort if there isn't enough
|
79
|
+
space=quit
|
80
|
+
# Do not check for setuid files.
|
81
|
+
setuid=nocheck
|
82
|
+
# Do not check if files conflict with other packages
|
83
|
+
conflict=nocheck
|
84
|
+
# We have no action scripts. Do not check for them.
|
85
|
+
action=nocheck
|
86
|
+
# Install to the default base directory.
|
87
|
+
basedir=default
|
88
|
+
END
|
89
|
+
on host, 'pkgadd -a /root/shutupsolaris -d http://get.opencsw.org/now all'
|
90
|
+
on host, '/opt/csw/bin/pkgutil -U all'
|
91
|
+
on host, '/opt/csw/bin/pkgutil -i -y ruby19_dev'
|
92
|
+
on host, '/opt/csw/bin/pkgutil -i -y ruby19'
|
93
|
+
on host, 'ln -sf /opt/csw/bin/gem19 /usr/bin/gem'
|
94
|
+
on host, 'ln -sf /opt/csw/bin/ruby19 /usr/bin/ruby'
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
install_packages_on(hosts, PACKAGES, :check_if_exists => true)
|
99
|
+
|
100
|
+
hosts.each do |host|
|
101
|
+
case host['platform']
|
102
|
+
when /windows/
|
103
|
+
arch = host[:ruby_arch] || 'x86'
|
104
|
+
step "#{host} Selected architecture #{arch}"
|
105
|
+
|
106
|
+
revision = if arch == 'x64'
|
107
|
+
'2.1.x-x64'
|
108
|
+
else
|
109
|
+
'2.1.x-x86'
|
110
|
+
end
|
111
|
+
|
112
|
+
step "#{host} Install ruby from git using revision #{revision}"
|
113
|
+
# TODO remove this step once we are installing puppet from msi packages
|
114
|
+
win_path = on(host, 'cygpath -m /opt/puppet-git-repos').stdout.chomp
|
115
|
+
install_from_git_on(host, win_path,
|
116
|
+
:name => 'puppet-win32-ruby',
|
117
|
+
:path => build_git_url('puppet-win32-ruby'),
|
118
|
+
:rev => revision)
|
119
|
+
on host, 'cd /opt/puppet-git-repos/puppet-win32-ruby; cp -r ruby/* /'
|
120
|
+
on host, 'cd /lib; icacls ruby /grant "Everyone:(OI)(CI)(RX)"'
|
121
|
+
on host, 'cd /lib; icacls ruby /reset /T'
|
122
|
+
on host, 'cd /; icacls bin /grant "Everyone:(OI)(CI)(RX)"'
|
123
|
+
on host, 'cd /; icacls bin /reset /T'
|
124
|
+
on host, 'ruby --version'
|
125
|
+
on host, 'cmd /c gem list'
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
# Only configure gem mirror after Ruby has been installed, but before any gems are installed.
|
130
|
+
configure_gem_mirror(hosts)
|
131
|
+
|
132
|
+
hosts.each do |host|
|
133
|
+
case host['platform']
|
134
|
+
when /solaris/
|
135
|
+
step "#{host} Install json from rubygems"
|
136
|
+
on host, 'gem install json_pure --no-ri --no-rdoc --version 1.8.3' # json_pure 2.0 requires ruby 2
|
137
|
+
on host, 'gem install bundler --no-ri --no-rdoc'
|
138
|
+
on host, "ln -sf /opt/csw/bin/bundle #{host['puppetbindir']}/bundle"
|
139
|
+
when /windows/
|
140
|
+
on host, 'cmd /c gem install bundler --no-ri --no-rdoc'
|
141
|
+
else
|
142
|
+
on host, 'gem install bundler --no-ri --no-rdoc'
|
143
|
+
end
|
144
|
+
end
|