pero 0.1.3 → 0.1.8

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: 8fa74a079e1c3d2cc0c3aa0d6b0a005ea292a74df1097dd6460527f8a8c65d14
4
- data.tar.gz: 1c1f4b7d993890c52755a4c1170765ff721e603ad62cf478efd88f0e5ccf3903
3
+ metadata.gz: ead39fbc282e03a7035b106c0e00c0fd763a9753dbc8726fdf60c4f135632947
4
+ data.tar.gz: 4acf8ddf945f939da41e9be7b0f0a4e1ea4f941d28824e8674771a5c1bf2af2c
5
5
  SHA512:
6
- metadata.gz: 17fe04aa86b65181f667caf38f1afe17df2646a95bfbc2780bf3873159a44893200937f41ddcf8644fa697149d267f86368dd95e6780c7a4eed56c98dd845afb
7
- data.tar.gz: 6648d3f545ef9ab8f2e2028221a1189151dd1baa339af9d608522af8bfaf836fdc05a6b662f728d358f8a0ee4071e968df6a6eabcecc8bac119dcbf37a590f80
6
+ metadata.gz: 260feaad123a26da33a14abfa8869e693ae0dafc0fa85e6286468c43ffd3c93b79608e5e0792f7048bf5dd05aea88ca4cc160e6827b71699284c62d0fb4cc158
7
+ data.tar.gz: 397a20a1d09cdaea967183770876fc2538c2c50729b98b7b2e4f1b4e8c254f294eafaaf75841408fe2121a6f41ac52cb521ea664fb830f1cb101cdcfb14dbc92
@@ -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)
@@ -30,7 +30,11 @@ module Pero
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}",
@@ -53,15 +59,10 @@ module Pero
53
59
  'PortBindings' => {
54
60
  '8140/tcp' => [{ 'HostPort' => "0" }],
55
61
  },
56
- "AutoRemove" => true,
57
62
  )
58
63
 
59
- container = ::Docker::Container.all(:all => true).find do |c|
60
- c.info["Names"].first == "/#{container_name}"
61
- end
62
-
64
+ container = find
63
65
  raise "can't start container" unless container
64
-
65
66
  begin
66
67
  Retryable.retryable(tries: 20, sleep: 5) do
67
68
  https = Net::HTTP.new('localhost', container.info["Ports"].first["PublicPort"])
@@ -77,10 +78,11 @@ module Pero
77
78
  raise e
78
79
  end
79
80
  rescue
80
- container.kill
81
+ Pero.log.error "can't start container.please check [ docker logs #{container.info["id"]} ]"
82
+ container = find
83
+ container.kill if container && container.info["State"] != "exited"
81
84
  raise "can't start puppet server"
82
85
  end
83
-
84
86
  container
85
87
  end
86
88
 
@@ -125,7 +127,6 @@ CMD bash -c "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"
125
127
 
126
128
  def create_ca
127
129
  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
130
  'puppet cert generate `hostname` --dns_alt_names localhost,127.0.0.1'
130
131
  elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)
131
132
  '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.3"
2
+ VERSION = "0.1.8"
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.3
4
+ version: 0.1.8
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