pero 0.1.2 → 0.1.7

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: 208ce0604ff4e559eecfa0452a556a17a61a0ea4f2084857f9e336a10dbe16ef
4
- data.tar.gz: 5a99444148e96ff2eef5605eb699c781fc4508de74994c2ccc8f1fbb1a890b9e
3
+ metadata.gz: 05cbbff3dcd2e37bc56f0b6b84c67c7f920aa7f648fdf523ec6b6ebc062c5f06
4
+ data.tar.gz: 9254adde17ef21f614ab32e84edd3e4a71d40ae534372224bffd4c6587ae8b49
5
5
  SHA512:
6
- metadata.gz: 7fe6677270fa6df8285522185a25d3907622e932a273559e3960bc36c2e373120d144f488933203fb8c5a25a67cef0c4dafcb4b6b689c6da6d810beb24f9f90d
7
- data.tar.gz: 3b7939123640c8b468713db68ae1f1aa5f21e847bceef42f6b4daf77f23c3871ccbe68a2072542081d192acc9b53e4589be1fe40acfb7add47dc387cbb298239
6
+ metadata.gz: 4e264fefbe67c4d6240125f327f8013bc2a6450770e2eef42e9d2eb62386aadca5782b0bd3f23b79f88cc8ba4348ad131e6b995ad9b6bb2779b7d64e42d74f78
7
+ data.tar.gz: b496423a88e94f2625ad18dc1abdaabbd60b9e54ef3a4949043301dabaf531589a3df85511e2cbdeb95a14a96c150708cc5feb48482dccdc9f5c4d34cb7321e7
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pero (0.1.0)
4
+ pero (0.1.6)
5
5
  docker-api
6
6
  logger
7
7
  net-ssh
@@ -41,7 +41,7 @@ GEM
41
41
  rspec-support (~> 3.9.0)
42
42
  rspec-support (3.9.3)
43
43
  sfl (2.3)
44
- specinfra (2.82.18)
44
+ specinfra (2.82.19)
45
45
  net-scp
46
46
  net-ssh (>= 2.7)
47
47
  net-telnet (= 0.1.1)
@@ -25,12 +25,16 @@ module Pero
25
25
  option :ask_password, type: :boolean, default: false, desc: "ask ssh or sudo password"
26
26
  option :vagrant, type: :boolean, default: false, desc: "use vagrarant"
27
27
  option :sudo, type: :boolean, default: true, desc: "use sudo"
28
- option "concurrent", aliases: '-N',default: 3, type: :numeric, desc: "running concurrent"
28
+ option "concurrent", aliases: '-C',default: 3, type: :numeric, desc: "running concurrent"
29
29
  end
30
30
 
31
31
  desc "versions", "show support version"
32
32
  def versions
33
- Pero::Puppet::Redhat.show_versions
33
+ begin
34
+ Pero::Puppet::Redhat.show_versions
35
+ rescue => e
36
+ Pero.log.error e.inspect
37
+ end
34
38
  end
35
39
 
36
40
  desc "apply", "puppet apply"
@@ -41,12 +45,17 @@ module Pero
41
45
  option :tags, default: nil, type: :array
42
46
  option "one-shot", default: false, type: :boolean, desc: "stop puppet server after run"
43
47
  def apply(name_regexp)
44
- nodes = Pero::History.search(name_regexp)
45
- return unless nodes
46
- Parallel.each(nodes, in_process: options["concurrent"]) do |n|
47
- opt = n["last_options"].merge(options)
48
- puppet = Pero::Puppet.new(opt["host"], opt)
49
- puppet.apply
48
+ begin
49
+ prepare
50
+ nodes = Pero::History.search(name_regexp)
51
+ return unless nodes
52
+ Parallel.each(nodes, in_process: options["concurrent"]) do |n|
53
+ opt = n["last_options"].merge(options)
54
+ puppet = Pero::Puppet.new(opt["host"], opt)
55
+ puppet.apply
56
+ end
57
+ rescue => e
58
+ Pero.log.error e.inspect
50
59
  end
51
60
  end
52
61
 
@@ -55,10 +64,21 @@ module Pero
55
64
  option "agent-version", type: :string
56
65
  option "node-name", aliases: '-N', default: "", type: :string, desc: "json node name(default hostname)"
57
66
  def bootstrap(*hosts)
58
- Parallel.each(hosts, in_process: options["concurrent"]) do |host|
59
- next if host =~ /^-/
60
- puppet = Pero::Puppet.new(host, options)
61
- puppet.install
67
+ begin
68
+ Parallel.each(hosts, in_process: options["concurrent"]) do |host|
69
+ next if host =~ /^-/
70
+ puppet = Pero::Puppet.new(host, options)
71
+ puppet.install
72
+ end
73
+ rescue => e
74
+ Pero.log.error e.inspect
75
+ end
76
+ end
77
+
78
+ no_commands do
79
+ def prepare
80
+ `bundle insatll` if File.exists?("Gemfile")
81
+ `bundle exec librarian-puppet install` if File.exists?("Puppetfile")
62
82
  end
63
83
  end
64
84
  end
@@ -27,12 +27,17 @@ module Pero
27
27
  "pero-#{server_version}-#{Digest::MD5.hexdigest(Dir.pwd)[0..5]}-#{@environment}"
28
28
  end
29
29
 
30
- def alerady_run?
30
+ def find
31
31
  ::Docker::Container.all(:all => true).find do |c|
32
- c.info["Names"].first == "/#{container_name}" && c.info["State"] != "exited"
32
+ c.info["Names"].first == "/#{container_name}"
33
33
  end
34
34
  end
35
35
 
36
+ def alerady_run?
37
+ c = find
38
+ c && c.info["State"] != "exited" && c
39
+ end
40
+
36
41
  def run
37
42
  ::Docker::Container.all(:all => true).each do |c|
38
43
  c.delete(:force => true) if c.info["Names"].first == "/#{container_name}"
@@ -45,6 +50,7 @@ module Pero
45
50
  'ExposedPorts' => { '8140/tcp' => {} },
46
51
  })
47
52
 
53
+ Pero.log.info "start puppet master container"
48
54
  container.start(
49
55
  'Binds' => [
50
56
  "#{Dir.pwd}:/etc/puppetlabs/code/environments/#{@environment}",
@@ -56,12 +62,8 @@ module Pero
56
62
  "AutoRemove" => true,
57
63
  )
58
64
 
59
- container = ::Docker::Container.all(:all => true).find do |c|
60
- c.info["Names"].first == "/#{container_name}"
61
- end
62
-
65
+ container = find
63
66
  raise "can't start container" unless container
64
-
65
67
  begin
66
68
  Retryable.retryable(tries: 20, sleep: 5) do
67
69
  https = Net::HTTP.new('localhost', container.info["Ports"].first["PublicPort"])
@@ -77,10 +79,11 @@ module Pero
77
79
  raise e
78
80
  end
79
81
  rescue
80
- container.kill
82
+ Pero.log.error "can't start container.please check [ docker logs #{container.info["id"]} ]"
83
+ container = find
84
+ container.kill if container && container.info["State"] != "exited"
81
85
  raise "can't start puppet server"
82
86
  end
83
-
84
87
  container
85
88
  end
86
89
 
@@ -125,7 +128,6 @@ CMD bash -c "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"
125
128
 
126
129
  def create_ca
127
130
  release_package,package_name, conf_dir = if Gem::Version.new("5.0.0") > Gem::Version.new(server_version)
128
- #'(puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1 || puppet cert --allow-dns-alt-names sign `hostname`)'
129
131
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
130
132
  elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)
131
133
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
@@ -28,6 +28,11 @@ module Pero
28
28
 
29
29
  @options[:host] = host
30
30
  so = ssh_options
31
+
32
+ if !Net::SSH::VALID_OPTIONS.include?(:strict_host_key_checking)
33
+ so.delete(:strict_host_key_checking)
34
+ end
35
+
31
36
  @specinfra = Specinfra::Backend::Ssh.new(
32
37
  request_pty: true,
33
38
  host: so[:host_name],
@@ -81,12 +86,11 @@ module Pero
81
86
  else
82
87
  raise "sorry unsupport os, please pull request!!!"
83
88
  end
84
- os.install(@options["agent-version"]) unless @options["agent-version"].empty?
89
+ os.install(@options["agent-version"]) if @options["agent-version"]
85
90
  Pero::History::Attribute.new(specinfra, @options).save
86
91
  end
87
92
 
88
93
  def serve_master
89
- Pero.log.info "start puppet master container"
90
94
  container = run_container
91
95
  begin
92
96
  yield container
@@ -97,6 +101,8 @@ module Pero
97
101
  if @options["one-shot"]
98
102
  Pero.log.info "stop puppet master container"
99
103
  container.kill
104
+ else
105
+ Pero.log.info "puppet master container keep running"
100
106
  end
101
107
  end
102
108
  end
@@ -111,8 +117,6 @@ module Pero
111
117
  port = container.info["Ports"].first["PublicPort"]
112
118
  begin
113
119
  tmpdir=container.info["id"][0..5]
114
- Pero.log.info "start forwarding port:#{port}"
115
-
116
120
  in_ssh_forwarding(port) do |host, ssh|
117
121
  Pero.log.info "#{host}:puppet cmd[#{puppet_cmd}]"
118
122
  cmd = "mkdir -p /tmp/puppet/#{tmpdir} && unshare -m -- /bin/bash -c 'export PATH=$PATH:/opt/puppetlabs/bin/ && \
@@ -158,6 +162,7 @@ module Pero
158
162
  options.delete(:strict_host_key_checking)
159
163
  end
160
164
 
165
+ Pero.log.info "start forwarding #{specinfra.get_config(:host)}:8140 => localhost:#{port}"
161
166
  Net::SSH.start(
162
167
  specinfra.get_config(:host),
163
168
  options[:user],
@@ -1,3 +1,3 @@
1
1
  module Pero
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.7"
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.1.2
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - pyama86
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-25 00:00:00.000000000 Z
11
+ date: 2020-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor