beaker 1.10.0 → 1.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 +8 -8
- data/.travis.yml +2 -2
- data/Rakefile +14 -1
- data/beaker.gemspec +2 -1
- data/lib/beaker/answers/version20.rb +7 -7
- data/lib/beaker/answers/version28.rb +7 -7
- data/lib/beaker/answers/version30.rb +10 -9
- data/lib/beaker/dsl/helpers.rb +137 -6
- data/lib/beaker/dsl/install_utils.rb +60 -45
- data/lib/beaker/host/unix/pkg.rb +7 -7
- data/lib/beaker/host/windows.rb +4 -0
- data/lib/beaker/host_prebuilt_steps.rb +9 -2
- data/lib/beaker/hypervisor.rb +3 -1
- data/lib/beaker/hypervisor/docker.rb +154 -0
- data/lib/beaker/hypervisor/ec2_helper.rb +1 -1
- data/lib/beaker/hypervisor/google_compute_helper.rb +1 -1
- data/lib/beaker/options/parser.rb +7 -0
- data/lib/beaker/options/presets.rb +72 -52
- data/lib/beaker/test_case.rb +1 -14
- data/lib/beaker/version.rb +1 -1
- data/spec/beaker/answers_spec.rb +40 -27
- data/spec/beaker/dsl/helpers_spec.rb +114 -7
- data/spec/beaker/dsl/install_utils_spec.rb +17 -15
- data/spec/beaker/hypervisor/docker_spec.rb +212 -0
- data/spec/beaker/hypervisor/vagrant_spec.rb +2 -1
- data/spec/beaker/options/parser_spec.rb +2 -3
- data/spec/helpers.rb +1 -1
- metadata +21 -4
data/lib/beaker/host/unix/pkg.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Unix::Pkg
|
2
2
|
include Beaker::CommandFactory
|
3
3
|
|
4
|
-
# This method overrides {Host
|
4
|
+
# This method overrides {Beaker::Host#pkg_initialize} to provide
|
5
5
|
# unix-specific package management setup
|
6
6
|
def pkg_initialize
|
7
7
|
@apt_needs_update = true
|
@@ -111,7 +111,7 @@ module Unix::Pkg
|
|
111
111
|
# DEBIAN_PLATFORM_CODENAMES map must be kept up-to-date as
|
112
112
|
# support for new versions is added.
|
113
113
|
#
|
114
|
-
# @note See {Beaker::DSL::Helpers
|
114
|
+
# @note See {Beaker::DSL::Helpers#deploy_package_repo} for info on
|
115
115
|
# params
|
116
116
|
def deploy_apt_repo(path, name, version)
|
117
117
|
codename = DEBIAN_PLATFORM_CODENAMES[self['platform']]
|
@@ -127,7 +127,7 @@ module Unix::Pkg
|
|
127
127
|
|
128
128
|
# Deploy yum configuration generated by the packaging tooling
|
129
129
|
#
|
130
|
-
# @note See {Beaker::DSL::Helpers
|
130
|
+
# @note See {Beaker::DSL::Helpers#deploy_package_repo} for info on
|
131
131
|
# params
|
132
132
|
def deploy_yum_repo(path, name, version)
|
133
133
|
repo_file = "#{path}/rpm/pl-#{name}-#{version}-repos-pe-#{self['platform']}.repo"
|
@@ -136,7 +136,7 @@ module Unix::Pkg
|
|
136
136
|
|
137
137
|
# Deploy zypper repo configuration generated by the packaging tooling
|
138
138
|
#
|
139
|
-
# @note See {Beaker::DSL::Helpers
|
139
|
+
# @note See {Beaker::DSL::Helpers#deploy_package_repo} for info on
|
140
140
|
# params
|
141
141
|
def deploy_zyp_repo(path, name, version)
|
142
142
|
repo_file = "#{path}/rpm/pl-#{name}-#{version}-repos-pe-#{self['platform']}.repo"
|
@@ -148,10 +148,10 @@ module Unix::Pkg
|
|
148
148
|
|
149
149
|
# Deploy configuration generated by the packaging tooling to this host.
|
150
150
|
#
|
151
|
-
# This method calls one of
|
152
|
-
#
|
151
|
+
# This method calls one of #deploy_apt_repo, #deploy_yum_repo, or
|
152
|
+
# #deploy_zyp_repo depending on the platform of this Host.
|
153
153
|
#
|
154
|
-
# @note See {Beaker::DSL::Helpers
|
154
|
+
# @note See {Beaker::DSL::Helpers#deploy_package_repo} for info on
|
155
155
|
# params
|
156
156
|
def deploy_package_repo(path, name, version)
|
157
157
|
if not File.exists? path
|
data/lib/beaker/host/windows.rb
CHANGED
@@ -26,6 +26,8 @@ module Windows
|
|
26
26
|
'puppetservice' => 'pe-httpd',
|
27
27
|
'puppetpath' => '`cygpath -smF 35`/PuppetLabs/puppet/etc',
|
28
28
|
'puppetvardir' => '`cygpath -smF 35`/PuppetLabs/puppet/var',
|
29
|
+
'distmoduledir' => '`cygpath -smF 35`/PuppetLabs/puppet/etc/modules',
|
30
|
+
'sitemoduledir' => 'C:/usr/share/puppet/modules',
|
29
31
|
#if an x86 Program Files dir exists then use it, default to just Program Files
|
30
32
|
'puppetbindir' => '$( [ -d "/cygdrive/c/Program Files (x86)" ] && echo "/cygdrive/c/Program Files (x86)" || echo "/cygdrive/c/Program Files" )/Puppet Labs/Puppet Enterprise/bin',
|
31
33
|
'pathseparator' => ';',
|
@@ -39,6 +41,8 @@ module Windows
|
|
39
41
|
'group' => 'Administrators',
|
40
42
|
'puppetpath' => '`cygpath -smF 35`/PuppetLabs/puppet/etc',
|
41
43
|
'puppetvardir' => '`cygpath -smF 35`/PuppetLabs/puppet/var',
|
44
|
+
'distmoduledir' => '`cygpath -smF 35`/PuppetLabs/puppet/etc/modules',
|
45
|
+
'sitemoduledir' => 'C:/usr/share/puppet/modules',
|
42
46
|
'hieralibdir' => '`cygpath -w /opt/puppet-git-repos/hiera/lib`',
|
43
47
|
'hierapuppetlibdir' => '`cygpath -w /opt/puppet-git-repos/hiera-puppet/lib`',
|
44
48
|
# PATH related variables need to be Unix, which cygwin converts
|
@@ -107,13 +107,19 @@ module Beaker
|
|
107
107
|
end
|
108
108
|
|
109
109
|
#Update /etc/hosts on the master node to include a rule for lookup of the master by name/ip.
|
110
|
-
# @param [Host, Array<Host>, String, Symbol]
|
110
|
+
# @param [Host, Array<Host>, String, Symbol] hosts One or more hosts to act upon
|
111
111
|
# @param [Hash{Symbol=>String}] opts Options to alter execution.
|
112
112
|
# @option opts [Beaker::Logger] :logger A {Beaker::Logger} object
|
113
113
|
def add_master_entry hosts, opts
|
114
114
|
logger = opts[:logger]
|
115
115
|
master = only_host_with_role(hosts, :master)
|
116
116
|
logger.notify "Add Master entry to /etc/hosts on #{master.name}"
|
117
|
+
if master["hypervisor"] and master["hypervisor"] =~ /docker/
|
118
|
+
# skip on docker because as of 0.8.1 /etc/hosts isn't modifiable
|
119
|
+
# https://github.com/dotcloud/docker/issues/2267
|
120
|
+
logger.debug "Don't update master entry on docker masters"
|
121
|
+
return
|
122
|
+
end
|
117
123
|
if master["hypervisor"] and master["hypervisor"] =~ /vagrant/
|
118
124
|
logger.debug "Don't update master entry on vagrant masters"
|
119
125
|
return
|
@@ -325,7 +331,8 @@ module Beaker
|
|
325
331
|
else
|
326
332
|
logger.debug "Give root a copy of current user's keys, on #{host.name}"
|
327
333
|
if host['platform'] =~ /windows/
|
328
|
-
host.exec(Command.new('
|
334
|
+
host.exec(Command.new('cp -r .ssh /cygdrive/c/Users/Administrator/.'))
|
335
|
+
host.exec(Command.new('chown -R Administrator /cygdrive/c/Users/Administrator/.ssh'))
|
329
336
|
else
|
330
337
|
host.exec(Command.new('sudo su -c "cp -r .ssh /root/."'), {:pty => true})
|
331
338
|
end
|
data/lib/beaker/hypervisor.rb
CHANGED
@@ -46,6 +46,8 @@ module Beaker
|
|
46
46
|
Beaker::Vagrant
|
47
47
|
when /google/
|
48
48
|
Beaker::GoogleCompute
|
49
|
+
when /docker/
|
50
|
+
Beaker::Docker
|
49
51
|
when /none/
|
50
52
|
Beaker::Hypervisor
|
51
53
|
else
|
@@ -104,7 +106,7 @@ module Beaker
|
|
104
106
|
end
|
105
107
|
end
|
106
108
|
|
107
|
-
%w( vsphere_helper vagrant fusion blimper aws_sdk vsphere vcloud vcloud_pooled aixer solaris google_compute_helper google_compute).each do |lib|
|
109
|
+
%w( vsphere_helper vagrant fusion blimper aws_sdk vsphere vcloud vcloud_pooled aixer solaris docker google_compute_helper google_compute).each do |lib|
|
108
110
|
begin
|
109
111
|
require "hypervisor/#{lib}"
|
110
112
|
rescue LoadError
|
@@ -0,0 +1,154 @@
|
|
1
|
+
module Beaker
|
2
|
+
class Docker < Beaker::Hypervisor
|
3
|
+
|
4
|
+
def initialize(hosts, options)
|
5
|
+
require 'docker'
|
6
|
+
@options = options
|
7
|
+
@logger = options[:logger]
|
8
|
+
@hosts = hosts
|
9
|
+
|
10
|
+
# increase the http timeouts as provisioning images can be slow
|
11
|
+
::Docker.options = { :write_timeout => 300, :read_timeout => 300 }
|
12
|
+
# assert that the docker-api gem can talk to your docker
|
13
|
+
# enpoint. Will raise if there is a version mismatch
|
14
|
+
::Docker.validate_version!
|
15
|
+
# Pass on all the logging from docker-api to the beaker logger instance
|
16
|
+
::Docker.logger = @logger
|
17
|
+
end
|
18
|
+
|
19
|
+
def provision
|
20
|
+
@logger.notify "Provisioning docker"
|
21
|
+
|
22
|
+
@hosts.each do |host|
|
23
|
+
@logger.notify "provisioning #{host.name}"
|
24
|
+
|
25
|
+
@logger.debug("Creating image")
|
26
|
+
image = ::Docker::Image.build(dockerfile_for(host), { :rm => true })
|
27
|
+
@logger.debug("Tagging image #{image.id} as #{host.name}")
|
28
|
+
image.tag({
|
29
|
+
:repo => host.name,
|
30
|
+
:force => true,
|
31
|
+
})
|
32
|
+
|
33
|
+
@logger.debug("Creating container from image")
|
34
|
+
container = ::Docker::Container.create({
|
35
|
+
'Image' => host.name,
|
36
|
+
'Hostname' => host.name,
|
37
|
+
})
|
38
|
+
|
39
|
+
@logger.debug("Starting container #{container.id}")
|
40
|
+
container.start({"PublishAllPorts" => true})
|
41
|
+
|
42
|
+
# Find out where the ssh port is from the container
|
43
|
+
ip = container.json["NetworkSettings"]["Ports"]["22/tcp"][0]["HostIp"]
|
44
|
+
port = container.json["NetworkSettings"]["Ports"]["22/tcp"][0]["HostPort"]
|
45
|
+
|
46
|
+
# Update host metadata
|
47
|
+
host['ip'] = ip
|
48
|
+
host['port'] = port
|
49
|
+
host['ssh'] = {
|
50
|
+
:password => root_password,
|
51
|
+
:port => port,
|
52
|
+
}
|
53
|
+
|
54
|
+
@logger.debug("node available as ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@#{ip} -p #{port}")
|
55
|
+
host['docker_container'] = container
|
56
|
+
host['docker_image'] = image
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def cleanup
|
61
|
+
@logger.notify "Cleaning up docker"
|
62
|
+
@hosts.each do |host|
|
63
|
+
if container = host['docker_container']
|
64
|
+
@logger.debug("stop container #{container.id}")
|
65
|
+
begin
|
66
|
+
container.stop
|
67
|
+
rescue Excon::Errors::ClientError => e
|
68
|
+
@logger.warn("stop of container #{container.id} failed: #{e.response.body}")
|
69
|
+
end
|
70
|
+
@logger.debug("delete container #{container.id}")
|
71
|
+
begin
|
72
|
+
container.delete
|
73
|
+
rescue Excon::Errors::ClientError => e
|
74
|
+
@logger.warn("deletion of container #{container.id} failed: #{e.response.body}")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
if image = host['docker_image']
|
79
|
+
@logger.debug("delete image #{image.id}")
|
80
|
+
begin
|
81
|
+
image.delete
|
82
|
+
rescue Excon::Errors::ClientError => e
|
83
|
+
@logger.warn("deletion of image #{image.id} failed: #{e.response.body}")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def root_password
|
92
|
+
'root'
|
93
|
+
end
|
94
|
+
|
95
|
+
def dockerfile_for(host)
|
96
|
+
# specify base image
|
97
|
+
dockerfile = <<-EOF
|
98
|
+
FROM #{host['image']}
|
99
|
+
EOF
|
100
|
+
|
101
|
+
# additional options to specify to the sshd
|
102
|
+
# may vary by platform
|
103
|
+
sshd_options = ''
|
104
|
+
|
105
|
+
# add platform-specific actions
|
106
|
+
case host['platform']
|
107
|
+
when /ubuntu/, /debian/
|
108
|
+
dockerfile += <<-EOF
|
109
|
+
RUN apt-get update
|
110
|
+
RUN apt-get install -y openssh-server openssh-client
|
111
|
+
EOF
|
112
|
+
when /^el-/, /centos/, /fedora/, /redhat/
|
113
|
+
dockerfile += <<-EOF
|
114
|
+
RUN yum clean all
|
115
|
+
RUN yum install -y sudo openssh-server openssh-clients
|
116
|
+
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
|
117
|
+
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
|
118
|
+
EOF
|
119
|
+
when /opensuse/, /sles/
|
120
|
+
sshd_options = '-o "PermitRootLogin yes" -o "PasswordAuthentication yes" -o "UsePAM no"'
|
121
|
+
dockerfile += <<-EOF
|
122
|
+
RUN zypper -n in openssh
|
123
|
+
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
|
124
|
+
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
|
125
|
+
EOF
|
126
|
+
else
|
127
|
+
# TODO add more platform steps here
|
128
|
+
raise "platform #{host['platform']} not yet supported on docker"
|
129
|
+
end
|
130
|
+
|
131
|
+
# Make sshd directory, set root password
|
132
|
+
dockerfile += <<-EOF
|
133
|
+
RUN mkdir -p /var/run/sshd
|
134
|
+
RUN echo root:#{root_password} | chpasswd
|
135
|
+
EOF
|
136
|
+
|
137
|
+
# Any extra commands specified for the host
|
138
|
+
dockerfile += (host['docker_image_commands'] || []).map { |command|
|
139
|
+
"RUN #{command}\n"
|
140
|
+
}.join('')
|
141
|
+
|
142
|
+
# How to start a sshd on port 22. May be an init for more supervision
|
143
|
+
cmd = host['docker_cmd'] || "/usr/sbin/sshd -D #{sshd_options}"
|
144
|
+
dockerfile += <<-EOF
|
145
|
+
EXPOSE 22
|
146
|
+
CMD #{cmd}
|
147
|
+
EOF
|
148
|
+
|
149
|
+
@logger.debug("Dockerfile is #{dockerfile}")
|
150
|
+
return dockerfile
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
end
|
@@ -3,7 +3,7 @@ module Beaker
|
|
3
3
|
# Return a list of open ports for testing based on a hosts role
|
4
4
|
#
|
5
5
|
# @todo horribly hard-coded
|
6
|
-
# @param [Array<String>]
|
6
|
+
# @param [Array<String>] roles An array of roles
|
7
7
|
# @return [Array<Number>] array of port numbers
|
8
8
|
# @api private
|
9
9
|
def self.amiports(roles)
|
@@ -513,7 +513,7 @@ module Beaker
|
|
513
513
|
end
|
514
514
|
|
515
515
|
#Set tags on a Google Compute instance
|
516
|
-
#@param [Array<String>]
|
516
|
+
#@param [Array<String>] data An array of tags to be added to an instance
|
517
517
|
#@return [Hash] A correctly formatted Google Compute request hash
|
518
518
|
def instance_setMetadata_req(name, fingerprint, data)
|
519
519
|
{ :api_method => @compute.instances.set_metadata,
|
@@ -195,6 +195,7 @@ module Beaker
|
|
195
195
|
# - --fail-mode is one of 'fast', 'stop' or nil
|
196
196
|
# - if using blimpy hypervisor an EC2 YAML file exists
|
197
197
|
# - if using the aix, solaris, or vcloud hypervisors a .fog file exists
|
198
|
+
# - if using docker hypervisor are using RUBY 1.9+
|
198
199
|
# - that one and only one master is defined per set of hosts
|
199
200
|
# - that solaris/windows/aix hosts are agent only for PE tests OR
|
200
201
|
# - that windows/aix host are agent only if type is not 'pe'
|
@@ -260,6 +261,12 @@ module Beaker
|
|
260
261
|
check_yaml_file(@options[:dot_fog], "required by #{visor}")
|
261
262
|
end
|
262
263
|
end
|
264
|
+
#if using docker need ruby 1.9+
|
265
|
+
if hypervisors.include?('docker')
|
266
|
+
if RUBY_VERSION < '1.9'
|
267
|
+
parser_error "Cannot use the 'docker' hypervisor on Ruby < 1.9 (using #{RUBY_VERSION})"
|
268
|
+
end
|
269
|
+
end
|
263
270
|
|
264
271
|
#check that roles of hosts make sense
|
265
272
|
# - must be one and only one master
|
@@ -5,73 +5,93 @@ module Beaker
|
|
5
5
|
module Presets
|
6
6
|
|
7
7
|
# Generates an OptionsHash of the environment variables of interest to Beaker
|
8
|
-
#
|
9
|
-
# Currently supports:
|
10
|
-
#
|
11
|
-
# consoleport, IS_PE, pe_dist_dir, pe_version_file, pe_version_file_win, pe_ver
|
12
8
|
#
|
13
9
|
# @return [OptionsHash] The supported environment variables in an OptionsHash,
|
14
10
|
# empty or nil environment variables are removed from the OptionsHash
|
15
11
|
def self.env_vars
|
16
12
|
h = Beaker::Options::OptionsHash.new
|
13
|
+
consoleport = ENV['BEAKER_CONSOLEPORT'] || ENV['consoleport']
|
17
14
|
h.merge({
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
24
|
-
:
|
25
|
-
:
|
26
|
-
:
|
15
|
+
:home => ENV['HOME'],
|
16
|
+
:project => ENV['BEAKER_PROJECT'] || ENV['BEAKER_project'],
|
17
|
+
:department => ENV['BEAKER_DEPARTMENT'] || ENV['BEAKER_department'],
|
18
|
+
:jenkins_build_url => ENV['BEAKER_BUILD_URL'] || ENV['BUILD_URL'],
|
19
|
+
:consoleport => consoleport ? consoleport.to_i : nil,
|
20
|
+
:type => (ENV['BEAKER_IS_PE'] || ENV['IS_PE']) ? 'pe' : nil,
|
21
|
+
:pe_dir => ENV['BEAKER_PE_DIR'] || ENV['pe_dist_dir'],
|
22
|
+
:pe_version_file => ENV['BEAKER_PE_VERSION_FILE'] || ENV['pe_version_file'],
|
23
|
+
:pe_version_file_win => ENV['BEAKER_PE_VERSION_FILE'] || ENV['pe_version_file'],
|
24
|
+
:pe_ver => ENV['BEAKER_PE_VER'] || ENV['pe_ver'],
|
25
|
+
:forge_host => ENV['BEAKER_FORGE_HOST'] || ENV['forge_host'],
|
26
|
+
:answers => {
|
27
|
+
:q_puppet_enterpriseconsole_auth_user_email =>
|
28
|
+
ENV['q_puppet_enterpriseconsole_auth_user_email'] || 'admin@example.com',
|
29
|
+
:q_puppet_enterpriseconsole_auth_password =>
|
30
|
+
ENV['q_puppet_enterpriseconsole_auth_password'] || '~!@#$%^*-/ aZ',
|
31
|
+
:q_puppet_enterpriseconsole_smtp_host =>
|
32
|
+
ENV['q_puppet_enterpriseconsole_smtp_host'],
|
33
|
+
:q_puppet_enterpriseconsole_smtp_port =>
|
34
|
+
ENV['q_puppet_enterpriseconsole_smtp_port'] || 25,
|
35
|
+
:q_puppet_enterpriseconsole_smtp_username =>
|
36
|
+
ENV['q_puppet_enterpriseconsole_smtp_username'],
|
37
|
+
:q_puppet_enterpriseconsole_smtp_password =>
|
38
|
+
ENV['q_puppet_enterpriseconsole_smtp_password'],
|
39
|
+
:q_puppet_enterpriseconsole_smtp_use_tls =>
|
40
|
+
ENV['q_puppet_enterpriseconsole_smtp_use_tls'] || 'n',
|
41
|
+
:q_verify_packages =>
|
42
|
+
ENV['q_verify_packages'] || 'y',
|
43
|
+
:q_puppetdb_password =>
|
44
|
+
ENV['q_puppetdb_password'] || '~!@#$%^*-/ aZ',
|
45
|
+
}
|
27
46
|
}.delete_if {|key, value| value.nil? or value.empty? })
|
28
47
|
end
|
29
48
|
|
30
49
|
# Generates an OptionsHash of preset values for arguments supported by Beaker
|
31
|
-
#
|
50
|
+
#
|
32
51
|
# @return [OptionsHash] The supported arguments in an OptionsHash
|
33
52
|
def self.presets
|
34
53
|
h = Beaker::Options::OptionsHash.new
|
35
54
|
h.merge({
|
36
|
-
:project
|
37
|
-
:department
|
38
|
-
:validate
|
39
|
-
:jenkins_build_url
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
43
|
-
:
|
44
|
-
:
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
52
|
-
:
|
53
|
-
:
|
54
|
-
:
|
55
|
-
:
|
56
|
-
:
|
57
|
-
:
|
58
|
-
:
|
59
|
-
:
|
60
|
-
:
|
55
|
+
:project => 'Beaker',
|
56
|
+
:department => ENV['USER'] || ENV['USERNAME'] || 'unknown',
|
57
|
+
:validate => true,
|
58
|
+
:jenkins_build_url => nil,
|
59
|
+
:forge_host => 'vulcan-acceptance.delivery.puppetlabs.net',
|
60
|
+
:log_level => 'verbose',
|
61
|
+
:trace_limit => 10,
|
62
|
+
:hosts_file => 'sample.cfg',
|
63
|
+
:options_file => nil,
|
64
|
+
:type => 'pe',
|
65
|
+
:provision => true,
|
66
|
+
:preserve_hosts => 'never',
|
67
|
+
:root_keys => false,
|
68
|
+
:quiet => false,
|
69
|
+
:xml => false,
|
70
|
+
:color => true,
|
71
|
+
:dry_run => false,
|
72
|
+
:timeout => 300,
|
73
|
+
:fail_mode => 'slow',
|
74
|
+
:timesync => false,
|
75
|
+
:repo_proxy => false,
|
76
|
+
:add_el_extras => false,
|
77
|
+
:add_master_entry => false,
|
78
|
+
:consoleport => 443,
|
79
|
+
:pe_dir => '/opt/enterprise/dists',
|
80
|
+
:pe_version_file => 'LATEST',
|
61
81
|
:pe_version_file_win => 'LATEST-win',
|
62
|
-
:dot_fog
|
63
|
-
:ec2_yaml
|
64
|
-
:help
|
65
|
-
:ssh
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
82
|
+
:dot_fog => File.join(ENV['HOME'], '.fog'),
|
83
|
+
:ec2_yaml => 'config/image_templates/ec2.yaml',
|
84
|
+
:help => false,
|
85
|
+
:ssh => {
|
86
|
+
:config => false,
|
87
|
+
:paranoid => false,
|
88
|
+
:timeout => 300,
|
89
|
+
:auth_methods => ["publickey"],
|
90
|
+
:port => 22,
|
91
|
+
:forward_agent => true,
|
92
|
+
:keys => ["#{ENV['HOME']}/.ssh/id_rsa"],
|
93
|
+
:user_known_hosts_file => "#{ENV['HOME']}/.ssh/known_hosts",
|
94
|
+
}
|
75
95
|
})
|
76
96
|
end
|
77
97
|
|