pero 0.3.0 → 0.5.0

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: 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.