pero 0.1.2 → 0.1.7

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