pero 0.3.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17794a1ffa026b662d06b36840a883a434823c791db1839ef1efba8306238a63
4
- data.tar.gz: af2d15aa1377be5af99b1769c6690adeddba106b51e62eaf20e778566df6a96b
3
+ metadata.gz: 6238513daaacabe0c8bc4135177332a2ba7257e9be3f181608af6a00ab89768d
4
+ data.tar.gz: 90aa39e93dacd99c74cf3cfc544314cca3b997e29a37eabcdc87e7aaf8cae192
5
5
  SHA512:
6
- metadata.gz: 372e94f0f02059e076ebbbf7976ecc188b9f22a983c6fe0cd788e899f3536c0c99a1728d33df080458b7e21bd7207f5df9d547a373837d19da25da6544d43388
7
- data.tar.gz: 7a4baefe02de81bc4551777fcc785ad1332bf2ee7ede50fd5c1d682dfcb1f5479a32221ccec31c9bae6085964da96d93dafac11c5fce716cd509b4115f4641e1
6
+ metadata.gz: 64fadc47b0c14d8b6e598c57cc90e099ede671e11e200017c70dbd59571b4fd010949af9e5b89acf706f382dc7ae9f1e55084f695fe5137f06e3429711212305
7
+ data.tar.gz: 300cc0852f9dd71b5e46c6d370a3eb1bfb7c38b078eb86974ec80e6d406cd8518dfc03f7d79129e7abe4512013e6b18215aaf96e46536dc9aa848cd7ceb2a94f
data/lib/pero/cli.rb CHANGED
@@ -55,23 +55,29 @@ module Pero
55
55
  return
56
56
  end
57
57
 
58
+ prepare
59
+ nodes = Pero::History.search(name_regexp)
60
+ return unless nodes
58
61
  begin
59
- prepare
60
- nodes = Pero::History.search(name_regexp)
61
- return unless nodes
62
62
  Parallel.each(nodes, in_process: options["concurrent"]) do |n|
63
- opt = n["last_options"].merge(options)
64
- opt["environment"] = "production" if opt["environment"].empty?
65
- if options["image-name"]
66
- opt.delete("server-version")
67
- else
68
- opt.delete("image-name")
69
- end
63
+ opt = merge_options(n, options)
70
64
  puppet = Pero::Puppet.new(opt["host"], opt)
71
65
  puppet.apply
72
66
  end
73
67
  rescue => e
68
+ Pero.log.error e.backtrace.join("\n")
74
69
  Pero.log.error e.inspect
70
+
71
+ ensure
72
+ if options["one-shot"]
73
+ Pero.log.info "stop puppet master container"
74
+ Parallel.each(nodes, in_process: options["concurrent"]) do |n|
75
+ opt = merge_options(n, options)
76
+ Pero::Puppet.new(opt["host"], opt).stop_server
77
+ end
78
+ else
79
+ Pero.log.info "puppet master container keep running"
80
+ end
75
81
  end
76
82
  end
77
83
 
@@ -81,7 +87,7 @@ module Pero
81
87
  option "node-name", aliases: '-N', default: "", type: :string, desc: "json node name(default hostname)"
82
88
  def bootstrap(*hosts)
83
89
  begin
84
- options["environment"] = "production" if options["environment"].empty?
90
+ options["environment"] = "production" if options["environment"].nil? || options["environment"].empty?
85
91
  Parallel.each(hosts, in_process: options["concurrent"]) do |host|
86
92
  raise "unknown option #{host}" if host =~ /^-/
87
93
  puppet = Pero::Puppet.new(host, options)
@@ -90,11 +96,23 @@ module Pero
90
96
  puppet.install
91
97
  end
92
98
  rescue => e
99
+ Pero.log.error e.backtrace.join("\n")
93
100
  Pero.log.error e.inspect
94
101
  end
95
102
  end
96
103
 
97
104
  no_commands do
105
+ def merge_options(node, options)
106
+ opt = node["last_options"].merge(options)
107
+ opt["environment"] = "production" if opt["environment"].nil? || opt["environment"].empty?
108
+ if options["image-name"]
109
+ opt.delete("server-version")
110
+ else
111
+ opt.delete("image-name")
112
+ end
113
+ opt
114
+ end
115
+
98
116
  def prepare
99
117
  `bundle install` if File.exists?("Gemfile")
100
118
  `bundle exec librarian-puppet install` if File.exists?("Puppetfile")
data/lib/pero/docker.rb CHANGED
@@ -14,6 +14,7 @@ module Pero
14
14
 
15
15
  def build
16
16
  Pero.log.info "start build container"
17
+ ::Docker.options[:read_timeout] = 300
17
18
  begin
18
19
  image = if image_name
19
20
  ::Docker::Image.create('fromImage' => image_name)
@@ -138,8 +139,19 @@ EOS
138
139
  ["puppet6-release-el-#{el}.noarch.rpm", "puppetserver"]
139
140
  end
140
141
 
142
+ 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
+
141
152
  <<-EOS
142
153
  FROM #{from_image}
154
+ #{vault_repo}
143
155
  RUN curl -L -k -O https://yum.puppetlabs.com/#{release_package} && \
144
156
  rpm -ivh #{release_package}
145
157
  RUN yum install -y #{package_name}-#{server_version}
data/lib/pero/history.rb CHANGED
@@ -21,13 +21,14 @@ module Pero
21
21
  class History
22
22
  class Attribute
23
23
  def initialize(specinfra, options)
24
- name = if options["node-name"].empty?
24
+ name = if options["node-name"].nil? || options["node-name"].empty?
25
25
  specinfra.run_command("hostname").stdout.chomp
26
26
  else
27
27
  options["node-name"]
28
28
  end
29
29
  options.delete("noop")
30
30
  options.delete("tags")
31
+ options.delete("user")
31
32
  @h = {
32
33
  name: name,
33
34
  last_options: options
data/lib/pero/puppet.rb CHANGED
@@ -90,6 +90,10 @@ module Pero
90
90
  Pero::History::Attribute.new(specinfra, @options).save
91
91
  end
92
92
 
93
+ def stop_master
94
+ run_container.kill if docker.alerady_run?
95
+ end
96
+
93
97
  def serve_master
94
98
  container = run_container
95
99
  begin
@@ -97,18 +101,14 @@ module Pero
97
101
  rescue => e
98
102
  Pero.log.error e.inspect
99
103
  raise e
100
- ensure
101
- if @options["one-shot"]
102
- Pero.log.info "stop puppet master container"
103
- container.kill
104
- else
105
- Pero.log.info "puppet master container keep running"
106
- end
107
104
  end
108
105
  end
109
106
 
107
+ def docker
108
+ Pero::Docker.new(@options["server-version"], @options["image-name"], @options["environment"], @options["volumes"])
109
+ end
110
+
110
111
  def run_container
111
- docker = Pero::Docker.new(@options["server-version"], @options["image-name"], @options["environment"], @options["volumes"])
112
112
  docker.alerady_run? || docker.run
113
113
  end
114
114
 
@@ -172,6 +172,7 @@ module Pero
172
172
  ret << " --#{n}" if options[n]
173
173
  end
174
174
  ret << " --tags #{options["tags"].join(",")}" if options["tags"]
175
+ ret << " --environment #{options["environment"]}" if options["environment"]
175
176
  ret
176
177
  end
177
178
 
data/lib/pero/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pero
2
- VERSION = "0.3.0"
2
+ VERSION = "0.5.0"
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.3.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pyama86
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-22 00:00:00.000000000 Z
11
+ date: 2021-04-13 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.2
202
+ rubygems_version: 3.1.4
203
203
  signing_key:
204
204
  specification_version: 4
205
205
  summary: tool for puppet apply from our desktop.