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 +4 -4
- data/Gemfile.lock +2 -2
- data/lib/pero/cli.rb +32 -12
- data/lib/pero/docker.rb +12 -10
- data/lib/pero/puppet.rb +9 -4
- data/lib/pero/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05cbbff3dcd2e37bc56f0b6b84c67c7f920aa7f648fdf523ec6b6ebc062c5f06
|
4
|
+
data.tar.gz: 9254adde17ef21f614ab32e84edd3e4a71d40ae534372224bffd4c6587ae8b49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e264fefbe67c4d6240125f327f8013bc2a6450770e2eef42e9d2eb62386aadca5782b0bd3f23b79f88cc8ba4348ad131e6b995ad9b6bb2779b7d64e42d74f78
|
7
|
+
data.tar.gz: b496423a88e94f2625ad18dc1abdaabbd60b9e54ef3a4949043301dabaf531589a3df85511e2cbdeb95a14a96c150708cc5feb48482dccdc9f5c4d34cb7321e7
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pero (0.1.
|
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.
|
44
|
+
specinfra (2.82.19)
|
45
45
|
net-scp
|
46
46
|
net-ssh (>= 2.7)
|
47
47
|
net-telnet (= 0.1.1)
|
data/lib/pero/cli.rb
CHANGED
@@ -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: '-
|
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
|
-
|
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
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
data/lib/pero/docker.rb
CHANGED
@@ -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
|
30
|
+
def find
|
31
31
|
::Docker::Container.all(:all => true).find do |c|
|
32
|
-
c.info["Names"].first == "/#{container_name}"
|
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 =
|
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.
|
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'
|
data/lib/pero/puppet.rb
CHANGED
@@ -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"])
|
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],
|
data/lib/pero/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2020-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|