pero 0.5.3 → 0.5.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8fc62fc16984c838f034444f6dc537009aaa019e460a5998bad1184411c8a5b
4
- data.tar.gz: 02233a95f14a8a58e622cfc1cb23cdc55edb81b2ede70bd015872ad642788189
3
+ metadata.gz: ecfeedf1f5589503f81308e4df7f4e8ce6735d17ea53aa146b9a6ff4749b65c6
4
+ data.tar.gz: 6ae0544b2f34d3d8f26ef8c1d10338528091215cf4ae3e7620c0d86829a6ed2d
5
5
  SHA512:
6
- metadata.gz: 88141e0b5932f838695df5fca5a558a1b9523a8486201d643bf866cbf019771f011d8dede89d363518fe70873b4d5fa86dd1746ba6bc16e2a3cafe6f4af729af
7
- data.tar.gz: cc8ad0c0c15759f70a318121dcc4cf567138c35e1321e460820563112c132c65efcc1d853bfa69ba2612617436c13e8a338851dd0a29b49eb946ba6da09de1e9
6
+ metadata.gz: fc3aad015bc517fbedcb5aa30ea824cbc08819c63054e09491d389ff2383119ab3449b895a5d8caf17450271dc7398d474159050006c590bfb6a71130f8c5d43
7
+ data.tar.gz: 06ea7ee5a816e62bb257636c53c863709e3217e7d6fe218bec9efdb51ccee4821d4ff3013c79528ce2813f693c081e090d295393c8b68fc35d504083e6d2b461
data/lib/pero/cli.rb CHANGED
@@ -57,7 +57,10 @@ module Pero
57
57
 
58
58
  prepare
59
59
  nodes = Pero::History.search(name_regexp)
60
- return unless nodes
60
+ if nodes.empty?
61
+ Pero.log.info 'No matching node found.'
62
+ return
63
+ end
61
64
  m = Mutex.new
62
65
 
63
66
  begin
@@ -117,8 +120,8 @@ module Pero
117
120
  end
118
121
 
119
122
  def prepare
120
- `bundle install` if File.exists?("Gemfile")
121
- `bundle exec librarian-puppet install` if File.exists?("Puppetfile")
123
+ `bundle install` if File.exist?("Gemfile")
124
+ `bundle exec librarian-puppet install` if File.exist?("Puppetfile")
122
125
  end
123
126
  end
124
127
  end
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,122 +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
- else
139
- ["puppet6-release-el-#{el}.noarch.rpm", "puppetserver"]
140
- 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
141
147
 
142
148
  vault_repo = if el == 6
143
- <<-EOS
144
- RUN sed -i "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo \
145
- && sed -i "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo \
146
- && sed -i "s|http://mirror\.centos\.org/|http://vault\.centos\.org/|g" /etc/yum.repos.d/CentOS-Base.repo
147
- EOS
148
- else
149
- ''
150
- end
151
-
152
- legacy_signing = if Gem::Version.new("3.0.0") > Gem::Version.new(server_version)
153
- "RUN echo 'LegacySigningMDs md5' >> /etc/pki/tls/legacy-settings"
154
- else
155
- ''
156
- end
157
-
158
- <<-EOS
159
- FROM #{from_image}
160
- #{vault_repo}
161
- #{legacy_signing}
162
- RUN curl -L -k -O https://yum.puppetlabs.com/#{release_package} && \
163
- rpm -ivh #{release_package}
164
- RUN yum install -y #{package_name}-#{server_version}
165
- ENV PATH $PATH:/opt/puppetlabs/bin
166
- 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
167
173
  EOS
168
174
  end
169
175
 
170
176
  def create_ca
171
- 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)
172
178
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
173
- 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)
174
180
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
175
181
  else
176
182
  'puppetserver ca setup --ca-name `hostname` --subject-alt-names DNS:localhost'
@@ -178,14 +184,14 @@ RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
178
184
  end
179
185
 
180
186
  def run_cmd
181
- 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)
182
188
  # /var/puppet/run is created for the first time by running `puppet master`,
183
189
  # but `puppet master` will fail because the permissions are wrong.
184
190
  # So, let the `puppet master` fail once, fix the permission of /var/puppet/run, and execute `puppet master` again.
185
191
  'puppet master --no-daemonize --verbose || (chown puppet: /var/puppet/run && puppet master --no-daemonize --verbose)'
186
- 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)
187
193
  'puppet master --no-daemonize --verbose'
188
- 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)
189
195
  'puppetserver foreground'
190
196
  else
191
197
  'puppetserver foreground'
@@ -193,7 +199,7 @@ RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
193
199
  end
194
200
 
195
201
  def el
196
- 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)
197
203
  6
198
204
  else
199
205
  7
@@ -44,8 +44,10 @@ module Pero
44
44
  ["puppetlabs-release-pc1-el-#{main_release}.noarch.rpm", "puppet"]
45
45
  elsif Gem::Version.new("6.0.0") > Gem::Version.new(version) && Gem::Version.new("5.0.0") <= Gem::Version.new(version)
46
46
  ["puppet5-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
47
- else
47
+ elsif Gem::Version.new("7.0.0") > Gem::Version.new(version) && Gem::Version.new("6.0.0") <= Gem::Version.new(version)
48
48
  ["puppet6-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
49
+ else
50
+ ["puppet7-release-el-#{main_release}.noarch.rpm", "puppet-agent"]
49
51
  end
50
52
 
51
53
  unless run_specinfra(:check_package_is_installed, package_name, version)
data/lib/pero/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pero
2
- VERSION = "0.5.3"
2
+ VERSION = '0.5.5'
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.3
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - pyama86
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-04-16 00:00:00.000000000 Z
11
+ date: 2023-12-07 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.1.4
202
+ rubygems_version: 3.4.10
203
203
  signing_key:
204
204
  specification_version: 4
205
205
  summary: tool for puppet apply from our desktop.