pero 0.5.4 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5c70b7eacb6c850afd1cdd014f357204cf34face7354aeb5056cf3869172794e
4
- data.tar.gz: 83d9dd8fedd249340337914d5635725b9f2cd189fac0d8bc189c7e9a3a74874f
3
+ metadata.gz: 987ee0dddd45d8f05e4a1ca60cfe2df83a31542e2793931ddfda01446f3bbe1b
4
+ data.tar.gz: 791d656dc30d9530316a10fa5b7dc08c69e7089d24a5b040f884435a44f4f038
5
5
  SHA512:
6
- metadata.gz: bb72ebfec2140ef2bde35127614ed05240e73b41ebd7442d9cf8ab8bcc9b2bbed3c98198c6caef0932481066477246661332741b7a44d3fcfeb7667509709741
7
- data.tar.gz: 4a9288d537cc01061b725552f9dd01ce71f48112cf9f49a5b180bba9cb5274521d95b7d673e3f9121d518158ae3596cba1e100e4a1f6c62d8acdcf2509fd1862
6
+ metadata.gz: 1745f07c1634fc170bd6b34c5f2332627a86d2352645045919cdd26e5cf57a3b6bb32e69606b2be4f7dbc6272153905f36095699062a89d047c2e1e54dacd330
7
+ data.tar.gz: e866274608d76736a53f74f0d9e2b0503c55e200548b1df204059743daca66c7cb208ff387cd9ffcd9bbe170fbd6cc7beb433822ffd55b4c4809104982b537a4
data/lib/pero/docker.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  require 'docker'
2
2
  require 'digest/md5'
3
- require "retryable"
3
+ require 'retryable'
4
4
  require 'net/https'
5
5
  module Pero
6
6
  class Docker
7
7
  attr_reader :server_version, :image_name, :volumes
8
+
8
9
  def initialize(version, image_name, environment, volumes)
9
10
  @server_version = version
10
11
  @image_name = image_name
@@ -13,20 +14,25 @@ module Pero
13
14
  end
14
15
 
15
16
  def build
16
- Pero.log.info "start build container"
17
+ Pero.log.info 'start build container'
17
18
  ::Docker.options[:read_timeout] = 300
18
19
  begin
19
20
  image = if image_name
20
21
  ::Docker::Image.create('fromImage' => image_name)
21
22
  else
22
- ::Docker::Image.build(docker_file)
23
+ ::Docker::Image.build(
24
+ docker_file,
25
+ {
26
+ 'platform' => ENV['DOCKER_DEFAULT_PLATFORM'] || 'linux/amd64'
27
+ }
28
+ )
23
29
  end
24
- rescue => e
30
+ rescue StandardError => e
25
31
  Pero.log.debug docker_file
26
32
  Pero.log.error "failed build container #{e.inspect}"
27
33
  raise e
28
34
  end
29
- Pero.log.info "success build container"
35
+ Pero.log.info 'success build container'
30
36
  image
31
37
  end
32
38
 
@@ -35,19 +41,19 @@ module Pero
35
41
  end
36
42
 
37
43
  def find
38
- ::Docker::Container.all(:all => true).find do |c|
39
- c.info["Names"].first == "/#{container_name}"
44
+ ::Docker::Container.all(all: true).find do |c|
45
+ c.info['Names'].first == "/#{container_name}"
40
46
  end
41
47
  end
42
48
 
43
49
  def alerady_run?
44
50
  c = find
45
- c && c.info["State"] == "running" && c
51
+ c && c.info['State'] == 'running' && c
46
52
  end
47
53
 
48
54
  def run
49
- ::Docker::Container.all(:all => true).each do |c|
50
- c.delete(:force => true) if c.info["Names"].first == "/#{container_name}"
55
+ ::Docker::Container.all(all: true).each do |c|
56
+ c.delete(force: true) if c.info['Names'].first == "/#{container_name}"
51
57
  end
52
58
 
53
59
  vols = volumes || []
@@ -55,124 +61,122 @@ module Pero
55
61
  vols << "#{Dir.pwd}/keys:/etc/puppetlabs/puppet/eyaml/"
56
62
 
57
63
  container = ::Docker::Container.create({
58
- 'name' => container_name,
59
- 'Hostname' => 'puppet',
60
- 'Image' => build.id,
61
- 'ExposedPorts' => { '8140/tcp' => {} },
62
- 'HostConfig' => {
63
- 'Binds' => vols,
64
- 'PortBindings' => {
65
- '8140/tcp' => [{ 'HostPort' => "0" }],
66
- },
67
- },
68
- 'Cmd' => ["bash", "-c", "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"]
69
- })
70
-
71
- Pero.log.info "start puppet master container"
64
+ 'name' => container_name,
65
+ 'Hostname' => 'puppet',
66
+ 'Image' => build.id,
67
+ 'ExposedPorts' => { '8140/tcp' => {} },
68
+ 'HostConfig' => {
69
+ 'Binds' => vols,
70
+ 'PortBindings' => {
71
+ '8140/tcp' => [{ 'HostPort' => '0' }]
72
+ }
73
+ },
74
+ 'platform' => ENV['DOCKER_DEFAULT_PLATFORM'] || 'linux/amd64',
75
+ 'Cmd' => ['bash', '-c', "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"]
76
+ })
77
+
78
+ Pero.log.info 'start puppet master container'
72
79
  container.start
73
80
 
74
81
  container = find
75
82
  raise "can't start container" unless container
83
+
76
84
  begin
77
85
  Retryable.retryable(tries: 20, sleep: 5) do
78
- begin
79
- https = Net::HTTP.new('localhost', container.info["Ports"].first["PublicPort"])
80
- https.use_ssl = true
81
- https.verify_mode = OpenSSL::SSL::VERIFY_NONE
82
- Pero.log.debug "start server health check"
83
- https.start {
84
- response = https.get('/')
85
- Pero.log.debug "puppet http response #{response}"
86
- }
87
- rescue => e
88
- Pero.log.debug e.inspect
89
- raise e
86
+ https = Net::HTTP.new('localhost', container.info['Ports'].first['PublicPort'])
87
+ https.use_ssl = true
88
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
89
+ Pero.log.debug 'start server health check'
90
+ https.start do
91
+ response = https.get('/')
92
+ Pero.log.debug "puppet http response #{response}"
90
93
  end
94
+ rescue StandardError => e
95
+ Pero.log.debug e.inspect
96
+ raise e
91
97
  end
92
- rescue
93
- Pero.log.error "can't start container.please check [ docker logs #{container.info["id"]} ]"
98
+ rescue StandardError
99
+ Pero.log.error "can't start container.please check [ docker logs #{container.info['id']} ]"
94
100
  container = find
95
- container.kill if container && container.info["State"] != "exited"
101
+ container.kill if container && container.info['State'] != 'exited'
96
102
  raise "can't start puppet server"
97
103
  end
98
104
  container
99
105
  end
100
106
 
101
107
  def puppet_config
102
- <<-EOS
103
- [master]
104
- vardir = /var/puppet
105
- certname = puppet
106
- dns_alt_names = puppet,localhost
107
- autosign = true
108
- environment_timeout = unlimited
109
- codedir = /etc/puppetlabs/code
110
-
111
- [main]
112
- server = puppet
113
- #{@environment && @environment != "" ? "environment = #{@environment}" : nil}
114
- EOS
115
-
116
-
108
+ <<~EOS
109
+ [master]
110
+ vardir = /var/puppet
111
+ certname = puppet
112
+ dns_alt_names = puppet,localhost
113
+ autosign = true
114
+ environment_timeout = unlimited
115
+ codedir = /etc/puppetlabs/code
116
+
117
+ [main]
118
+ server = puppet
119
+ #{@environment && @environment != '' ? "environment = #{@environment}" : nil}
120
+ EOS
117
121
  end
118
122
 
119
123
  def conf_dir
120
- if Gem::Version.new("4.0.0") > Gem::Version.new(server_version)
121
- "/etc/puppet"
122
- elsif Gem::Version.new("5.0.0") > Gem::Version.new(server_version) && Gem::Version.new("4.0.0") <= Gem::Version.new(server_version)
123
- "/etc/puppetlabs/puppet/"
124
- elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)&& Gem::Version.new("5.0.0") <= Gem::Version.new(server_version)
125
- "/etc/puppetlabs/puppet/"
124
+ if Gem::Version.new('4.0.0') > Gem::Version.new(server_version)
125
+ '/etc/puppet'
126
+ elsif Gem::Version.new('5.0.0') > Gem::Version.new(server_version) && Gem::Version.new('4.0.0') <= Gem::Version.new(server_version)
127
+ '/etc/puppetlabs/puppet/'
128
+ elsif Gem::Version.new('6.0.0') > Gem::Version.new(server_version) && Gem::Version.new('5.0.0') <= Gem::Version.new(server_version)
129
+ '/etc/puppetlabs/puppet/'
126
130
  else
127
- "/etc/puppetlabs/puppet/"
131
+ '/etc/puppetlabs/puppet/'
128
132
  end
129
133
  end
130
134
 
131
135
  def docker_file
132
- release_package,package_name = if Gem::Version.new("4.0.0") > Gem::Version.new(server_version)
133
- ["puppetlabs-release-el-#{el}.noarch.rpm", "puppet-server"]
134
- elsif Gem::Version.new("5.0.0") > Gem::Version.new(server_version) && Gem::Version.new("4.0.0") <= Gem::Version.new(server_version)
135
- ["puppetlabs-release-pc1-el-#{el}.noarch.rpm", "puppetserver"]
136
- elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)&& Gem::Version.new("5.0.0") <= Gem::Version.new(server_version)
137
- ["puppet5-release-el-#{el}.noarch.rpm", "puppetserver"]
138
- elsif Gem::Version.new("7.0.0") > Gem::Version.new(server_version)&& Gem::Version.new("6.0.0") <= Gem::Version.new(server_version)
139
- ["puppet6-release-el-#{el}.noarch.rpm", "puppetserver"]
140
- else
141
- ["puppet7-release-el-#{el}.noarch.rpm", "puppetserver"]
142
- end
136
+ release_package, package_name = if Gem::Version.new('4.0.0') > Gem::Version.new(server_version)
137
+ ["puppetlabs-release-el-#{el}.noarch.rpm", 'puppet-server']
138
+ elsif Gem::Version.new('5.0.0') > Gem::Version.new(server_version) && Gem::Version.new('4.0.0') <= Gem::Version.new(server_version)
139
+ ["puppetlabs-release-pc1-el-#{el}.noarch.rpm", 'puppetserver']
140
+ elsif Gem::Version.new('6.0.0') > Gem::Version.new(server_version) && Gem::Version.new('5.0.0') <= Gem::Version.new(server_version)
141
+ ["puppet5-release-el-#{el}.noarch.rpm", 'puppetserver']
142
+ elsif Gem::Version.new('7.0.0') > Gem::Version.new(server_version) && Gem::Version.new('6.0.0') <= Gem::Version.new(server_version)
143
+ ["puppet6-release-el-#{el}.noarch.rpm", 'puppetserver']
144
+ else
145
+ ["puppet7-release-el-#{el}.noarch.rpm", 'puppetserver']
146
+ end
143
147
 
144
148
  vault_repo = if el == 6
145
- <<-EOS
146
- RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo \
147
- && sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo \
148
- && sed -i "s|http://mirror\.centos\.org/|http://vault\.centos\.org/|g" /etc/yum.repos.d/CentOS-Base.repo
149
- EOS
150
- else
151
- ''
152
- end
153
-
154
- legacy_signing = if Gem::Version.new("3.0.0") > Gem::Version.new(server_version)
155
- "RUN echo 'LegacySigningMDs md5' >> /etc/pki/tls/legacy-settings"
156
- else
157
- ''
158
- end
159
-
160
- <<-EOS
161
- FROM #{from_image}
162
- #{vault_repo}
163
- #{legacy_signing}
164
- RUN curl -L -k -O https://yum.puppetlabs.com/#{release_package} && \
165
- rpm -ivh #{release_package}
166
- RUN yum install -y #{package_name}-#{server_version}
167
- ENV PATH $PATH:/opt/puppetlabs/bin
168
- RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
149
+ <<~EOS
150
+ RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo \
151
+ && sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo \
152
+ && sed -i "s|http://mirror\.centos\.org/|http://vault\.centos\.org/|g" /etc/yum.repos.d/CentOS-Base.repo
153
+ EOS
154
+ else
155
+ ''
156
+ end
157
+
158
+ legacy_signing = if Gem::Version.new('3.0.0') > Gem::Version.new(server_version)
159
+ "RUN echo 'LegacySigningMDs md5' >> /etc/pki/tls/legacy-settings"
160
+ else
161
+ ''
162
+ end
163
+
164
+ <<~EOS
165
+ FROM #{from_image}
166
+ #{vault_repo}
167
+ #{legacy_signing}
168
+ RUN curl -L -k -O https://yum.puppetlabs.com/#{release_package} && \
169
+ rpm -ivh #{release_package}
170
+ RUN yum install -y #{package_name}-#{server_version}
171
+ ENV PATH $PATH:/opt/puppetlabs/bin
172
+ RUN echo -e "#{puppet_config.split(/\n/).join('\\n')}" > #{conf_dir}/puppet.conf
169
173
  EOS
170
174
  end
171
175
 
172
176
  def create_ca
173
- if Gem::Version.new("5.0.0") > Gem::Version.new(server_version)
177
+ if Gem::Version.new('5.0.0') > Gem::Version.new(server_version)
174
178
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
175
- elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)
179
+ elsif Gem::Version.new('6.0.0') > Gem::Version.new(server_version)
176
180
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
177
181
  else
178
182
  'puppetserver ca setup --ca-name `hostname` --subject-alt-names DNS:localhost'
@@ -180,14 +184,14 @@ RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
180
184
  end
181
185
 
182
186
  def run_cmd
183
- if Gem::Version.new("3.0.0") > Gem::Version.new(server_version)
187
+ if Gem::Version.new('3.0.0') > Gem::Version.new(server_version)
184
188
  # /var/puppet/run is created for the first time by running `puppet master`,
185
189
  # but `puppet master` will fail because the permissions are wrong.
186
190
  # So, let the `puppet master` fail once, fix the permission of /var/puppet/run, and execute `puppet master` again.
187
191
  'puppet master --no-daemonize --verbose || (chown puppet: /var/puppet/run && puppet master --no-daemonize --verbose)'
188
- elsif Gem::Version.new("5.0.0") > Gem::Version.new(server_version)
192
+ elsif Gem::Version.new('5.0.0') > Gem::Version.new(server_version)
189
193
  'puppet master --no-daemonize --verbose'
190
- elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)
194
+ elsif Gem::Version.new('6.0.0') > Gem::Version.new(server_version)
191
195
  'puppetserver foreground'
192
196
  else
193
197
  'puppetserver foreground'
@@ -195,7 +199,7 @@ RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
195
199
  end
196
200
 
197
201
  def el
198
- if Gem::Version.new("3.5.1") > Gem::Version.new(server_version)
202
+ if Gem::Version.new('3.5.1') > Gem::Version.new(server_version)
199
203
  6
200
204
  else
201
205
  7
data/lib/pero/puppet.rb CHANGED
@@ -9,9 +9,9 @@ module Specinfra
9
9
  return @sudo_password if defined?(@sudo_password)
10
10
 
11
11
  # TODO: Fix this dirty hack
12
- return nil unless caller.any? {|call| call.include?('channel_data') }
12
+ return nil unless caller.any? { |call| call.include?('channel_data') }
13
13
 
14
- print "sudo password: "
14
+ print 'sudo password: '
15
15
  @sudo_password = STDIN.noecho(&:gets).strip
16
16
  print "\n"
17
17
  @sudo_password
@@ -23,6 +23,7 @@ module Pero
23
23
  class Puppet
24
24
  extend Pero::SshExecutable
25
25
  attr_reader :specinfra
26
+
26
27
  def initialize(host, options, mutex)
27
28
  @options = options.dup
28
29
  @mutex = mutex
@@ -30,15 +31,13 @@ module Pero
30
31
  @options[:host] = host
31
32
  so = ssh_options
32
33
 
33
- if !Net::SSH::VALID_OPTIONS.include?(:strict_host_key_checking)
34
- so.delete(:strict_host_key_checking)
35
- end
34
+ so.delete(:strict_host_key_checking) unless Net::SSH::VALID_OPTIONS.include?(:strict_host_key_checking)
36
35
 
37
36
  @specinfra = Specinfra::Backend::Ssh.new(
38
37
  request_pty: true,
39
38
  host: so[:host_name],
40
39
  ssh_options: so,
41
- disable_sudo: false,
40
+ disable_sudo: false
42
41
  )
43
42
  end
44
43
 
@@ -48,15 +47,15 @@ module Pero
48
47
  opts[:host_name] = @options[:host]
49
48
 
50
49
  # from ssh-config
51
- ssh_config_files = @options["ssh_config"] ? [@options["ssh_config"]] : Net::SSH::Config.default_files
52
- opts.merge!(Net::SSH::Config.for(@options["host"], ssh_config_files))
53
- opts[:user] = @options["user"] || opts[:user] || Etc.getlogin
54
- opts[:password] = @options["password"] if @options["password"]
55
- opts[:keys] = [@options["key"]] if @options["key"]
56
- opts[:port] = @options["port"] if @options["port"]
57
- opts[:timeout] = @options["timeout"] if @options["timeout"]
58
-
59
- if @options["vagrant"]
50
+ ssh_config_files = @options['ssh_config'] ? [@options['ssh_config']] : Net::SSH::Config.default_files
51
+ opts.merge!(Net::SSH::Config.for(@options['host'], ssh_config_files))
52
+ opts[:user] = @options['user'] || opts[:user] || Etc.getlogin
53
+ opts[:password] = @options['password'] if @options['password']
54
+ opts[:keys] = [@options['key']] if @options['key']
55
+ opts[:port] = @options['port'] if @options['port']
56
+ opts[:timeout] = @options['timeout'] if @options['timeout']
57
+
58
+ if @options['vagrant']
60
59
  config = Tempfile.new('', Dir.tmpdir)
61
60
  hostname = opts[:host_name] || 'default'
62
61
  vagrant_cmd = "vagrant ssh-config #{hostname} > #{config.path}"
@@ -70,8 +69,8 @@ module Pero
70
69
  opts.merge!(Net::SSH::Config.for(hostname, [config.path]))
71
70
  end
72
71
 
73
- if @options["ask_password"]
74
- print "password: "
72
+ if @options['ask_password']
73
+ print 'password: '
75
74
  password = STDIN.noecho(&:gets).strip
76
75
  print "\n"
77
76
  opts.merge!(password: password)
@@ -82,47 +81,55 @@ module Pero
82
81
  def install
83
82
  osi = specinfra.os_info
84
83
  os = case osi[:family]
85
- when "redhat"
86
- Redhat.new(specinfra, osi)
87
- else
88
- raise "sorry unsupport os, please pull request!!!"
89
- end
90
- os.install(@options["agent-version"]) if @options["agent-version"]
84
+ when 'redhat'
85
+ Redhat.new(specinfra, osi)
86
+ else
87
+ raise 'sorry unsupport os, please pull request!!!'
88
+ end
89
+ os.install(@options['agent-version']) if @options['agent-version']
91
90
  Pero::History::Attribute.new(specinfra, @options).save
92
91
  end
93
92
 
94
93
  def stop_master
94
+ @mutex.lock
95
95
  run_container.kill if docker.alerady_run?
96
+ ensure
97
+ @mutex.unlock
96
98
  end
97
99
 
98
100
  def serve_master
99
- container = run_container
100
- begin
101
- yield container
102
- rescue => e
103
- Pero.log.error e.inspect
104
- raise e
105
- end
101
+ container = run_container
102
+ begin
103
+ yield container
104
+ rescue StandardError => e
105
+ Pero.log.error e.inspect
106
+ raise e
107
+ end
106
108
  end
107
109
 
108
110
  def docker
109
- Pero::Docker.new(@options["server-version"], @options["image-name"], @options["environment"], @options["volumes"])
111
+ Pero::Docker.new(@options['server-version'], @options['image-name'], @options['environment'], @options['volumes'])
110
112
  end
111
113
 
112
114
  def run_container
113
- begin
114
- @mutex.lock
115
- docker.alerady_run? || docker.run
116
- ensure
117
- @mutex.unlock
118
- end
115
+ @mutex.lock
116
+ docker.alerady_run? || docker.run
117
+ ensure
118
+ @mutex.unlock
119
119
  end
120
120
 
121
121
  def apply
122
122
  serve_master do |container|
123
- port = container.info["Ports"].first["PublicPort"]
123
+ port = container.info['Ports'].first['PublicPort']
124
+ https = Net::HTTP.new('localhost', port)
125
+ https.use_ssl = true
126
+ https.verify_mode = OpenSSL::SSL::VERIFY_NONE
127
+ https.start do
128
+ https.delete('/puppet-admin-api/v1/environment-cache')
129
+ end
130
+
124
131
  begin
125
- tmpdir=container.info["id"][0..5]
132
+ tmpdir = container.info['id'][0..5]
126
133
  in_ssh_forwarding(port) do |host, ssh|
127
134
  Pero.log.info "#{host}:puppet cmd[#{puppet_cmd}]"
128
135
  cmd = "mkdir -p /tmp/puppet/#{tmpdir} && unshare -m -- /bin/bash -c 'export PATH=$PATH:/opt/puppetlabs/bin/ && \
@@ -131,14 +138,14 @@ module Pero
131
138
  Pero.log.debug "run cmd:#{cmd}"
132
139
  ssh_exec(ssh, host, cmd)
133
140
 
134
- if @options["one-shot"]
141
+ if @options['one-shot']
135
142
  cmd = "/bin/rm -rf /tmp/puppet/#{tmpdir}"
136
143
  ssh_exec(ssh, host, cmd)
137
144
  end
138
145
 
139
- ssh.loop {true} if ENV['PERO_DEBUG']
146
+ ssh.loop { true } if ENV['PERO_DEBUG']
140
147
  end
141
- rescue => e
148
+ rescue StandardError => e
142
149
  Pero.log.error "puppet apply error:#{e.inspect}"
143
150
  end
144
151
  end
@@ -149,15 +156,15 @@ module Pero
149
156
  def ssh_exec(ssh, host, cmd)
150
157
  ssh.open_channel do |ch|
151
158
  ch.request_pty
152
- ch.on_data do |ch,data|
159
+ ch.on_data do |_ch, data|
153
160
  Pero.log.info "#{host}:#{data.chomp}"
154
161
  end
155
162
 
156
- ch.on_extended_data do |c,type,data|
163
+ ch.on_extended_data do |_c, _type, data|
157
164
  Pero.log.error "#{host}:#{data.chomp}"
158
165
  end
159
166
 
160
- ch.exec specinfra.build_command(cmd) do |ch, success|
167
+ ch.exec specinfra.build_command(cmd) do |_ch, success|
161
168
  raise "could not execute #{cmd}" unless success
162
169
  end
163
170
  end
@@ -165,29 +172,27 @@ module Pero
165
172
  end
166
173
 
167
174
  def puppet_cmd
168
- if Gem::Version.new("5.0.0") > Gem::Version.new(@options["agent-version"])
169
- "puppet agent --no-daemonize --onetime #{parse_puppet_option(@options)} --ca_port 8140 --ca_server localhost --masterport 8140 --server localhost"
170
- else
171
- "/opt/puppetlabs/bin/puppet agent --no-daemonize --onetime #{parse_puppet_option(@options)} --ca_server localhost --masterport 8140 --server localhost"
172
- end
175
+ if Gem::Version.new('5.0.0') > Gem::Version.new(@options['agent-version'])
176
+ "puppet agent --no-daemonize --onetime #{parse_puppet_option(@options)} --ca_port 8140 --ca_server localhost --masterport 8140 --server localhost"
177
+ else
178
+ "/opt/puppetlabs/bin/puppet agent --no-daemonize --onetime #{parse_puppet_option(@options)} --ca_server localhost --masterport 8140 --server localhost"
179
+ end
173
180
  end
174
181
 
175
182
  def parse_puppet_option(options)
176
- ret = ""
177
- %w(noop verbose test).each do |n|
183
+ ret = ''
184
+ %w[noop verbose test].each do |n|
178
185
  ret << " --#{n}" if options[n]
179
186
  end
180
- ret << " --tags #{options["tags"].join(",")}" if options["tags"]
181
- ret << " --environment #{options["environment"]}" if options["environment"]
187
+ ret << " --tags #{options['tags'].join(',')}" if options['tags']
188
+ ret << " --environment #{options['environment']}" if options['environment']
182
189
  ret
183
190
  end
184
191
 
185
192
  def in_ssh_forwarding(port)
186
193
  options = specinfra.get_config(:ssh_options)
187
194
 
188
- if !Net::SSH::VALID_OPTIONS.include?(:strict_host_key_checking)
189
- options.delete(:strict_host_key_checking)
190
- end
195
+ options.delete(:strict_host_key_checking) unless Net::SSH::VALID_OPTIONS.include?(:strict_host_key_checking)
191
196
 
192
197
  Pero.log.info "start forwarding #{specinfra.get_config(:host)}:8140 => localhost:#{port}"
193
198
  Net::SSH.start(
data/lib/pero/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pero
2
- VERSION = "0.5.4"
2
+ VERSION = '0.5.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pero
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - pyama86
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-03-31 00:00:00.000000000 Z
11
+ date: 2024-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -199,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
199
  - !ruby/object:Gem::Version
200
200
  version: '0'
201
201
  requirements: []
202
- rubygems_version: 3.3.26
202
+ rubygems_version: 3.4.19
203
203
  signing_key:
204
204
  specification_version: 4
205
205
  summary: tool for puppet apply from our desktop.