pero 0.2.0 → 0.4.3

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: d2cd510f50571a49f36a9d83b33b6ec102c2ec31dce18ee08223b96d9767a867
4
- data.tar.gz: a576229ec962f9359956f787591b3c14b7d6a779fae2224d06181f4508adb573
3
+ metadata.gz: 737697d0a5921b343940b1e0f08084dc7ead61b069a86eacbb95b52f2908e153
4
+ data.tar.gz: 8002bc8bfbe3074ab408fa53eff5104ab4891cef95e1ea809c858f22d1a304e9
5
5
  SHA512:
6
- metadata.gz: de370da8d84760e9c441630e123ecce5af27fb52af670b9edc16ba62b14b4bdc4b156b343c0ba8f764dc3203cfa3eb5b6ffc9a0d6b17efaa5982e31f68e42e22
7
- data.tar.gz: 743fc365959f454d404d11faf1dda6d4c89242e2e4b054d137c5887befc7fb027c5c56345f6bfc164db4c19e8081d27563e8b19bdcd117d6e1a0ea070940da88
6
+ metadata.gz: a07dc588f775fcfae4847c23e0e94ac1705a5ce7e3f9f1ab180681d22bf47aa83238cb975d76df471ac966ef511b011a142619a3c52d0f951e2e68e5865bc43d
7
+ data.tar.gz: 82281d963905f6ed8c0bc551e14a08ba990619253b4c22b713cb57a653e1e41d83faf4320a4d6e0d5bf5b8b18072376fd55ead84a2eb2b1bee2ee8ece8908dfa
data/.gitignore CHANGED
@@ -6,3 +6,4 @@ run
6
6
  yaml
7
7
  log
8
8
  pkg
9
+ Gemfile.lock
data/lib/pero/cli.rb CHANGED
@@ -22,7 +22,7 @@ module Pero
22
22
  option :port, type: :numeric, aliases: ['-p'], desc: "ssh port"
23
23
  option "timeout", default: 10, type: :numeric, desc: "ssh connect timeout"
24
24
  option :ssh_config, type: :string, desc: "ssh config path"
25
- option :environment, type: :string, desc: "puppet environment", default: "production"
25
+ option :environment, type: :string, desc: "puppet environment"
26
26
  option :ask_password, type: :boolean, default: false, desc: "ask ssh or sudo password"
27
27
  option :vagrant, type: :boolean, default: false, desc: "use vagrarant"
28
28
  option :sudo, type: :boolean, default: true, desc: "use sudo"
@@ -61,6 +61,7 @@ module Pero
61
61
  return unless nodes
62
62
  Parallel.each(nodes, in_process: options["concurrent"]) do |n|
63
63
  opt = n["last_options"].merge(options)
64
+ opt["environment"] = "production" if opt["environment"].nil? || opt["environment"].empty?
64
65
  if options["image-name"]
65
66
  opt.delete("server-version")
66
67
  else
@@ -70,6 +71,7 @@ module Pero
70
71
  puppet.apply
71
72
  end
72
73
  rescue => e
74
+ Pero.log.error e.backtrace.join("\n")
73
75
  Pero.log.error e.inspect
74
76
  end
75
77
  end
@@ -80,6 +82,7 @@ module Pero
80
82
  option "node-name", aliases: '-N', default: "", type: :string, desc: "json node name(default hostname)"
81
83
  def bootstrap(*hosts)
82
84
  begin
85
+ options["environment"] = "production" if options["environment"].nil? || options["environment"].empty?
83
86
  Parallel.each(hosts, in_process: options["concurrent"]) do |host|
84
87
  raise "unknown option #{host}" if host =~ /^-/
85
88
  puppet = Pero::Puppet.new(host, options)
@@ -88,13 +91,14 @@ module Pero
88
91
  puppet.install
89
92
  end
90
93
  rescue => e
94
+ Pero.log.error e.backtrace.join("\n")
91
95
  Pero.log.error e.inspect
92
96
  end
93
97
  end
94
98
 
95
99
  no_commands do
96
100
  def prepare
97
- `bundle insatll` if File.exists?("Gemfile")
101
+ `bundle install` if File.exists?("Gemfile")
98
102
  `bundle exec librarian-puppet install` if File.exists?("Puppetfile")
99
103
  end
100
104
  end
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)
@@ -41,7 +42,7 @@ module Pero
41
42
 
42
43
  def alerady_run?
43
44
  c = find
44
- c && c.info["State"] != "exited" && c
45
+ c && c.info["State"] == "running" && c
45
46
  end
46
47
 
47
48
  def run
@@ -49,23 +50,26 @@ module Pero
49
50
  c.delete(:force => true) if c.info["Names"].first == "/#{container_name}"
50
51
  end
51
52
 
53
+ vols = volumes || []
54
+ vols << "#{Dir.pwd}:/etc/puppetlabs/code/environments/#{@environment}"
55
+ vols << "#{Dir.pwd}/keys:/etc/puppetlabs/puppet/eyaml/"
56
+
52
57
  container = ::Docker::Container.create({
53
58
  'name' => container_name,
54
59
  'Hostname' => 'puppet',
55
60
  'Image' => build.id,
56
61
  'ExposedPorts' => { '8140/tcp' => {} },
62
+ 'HostConfig' => {
63
+ 'Binds' => vols,
64
+ 'PortBindings' => {
65
+ '8140/tcp' => [{ 'HostPort' => "0" }],
66
+ },
67
+ },
68
+ 'Cmd' => ["bash", "-c", "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"]
57
69
  })
58
70
 
59
71
  Pero.log.info "start puppet master container"
60
- vols = volumes || []
61
- vols << "#{Dir.pwd}:/etc/puppetlabs/code/environments/#{@environment}"
62
- vols << "#{Dir.pwd}/keys:/etc/puppetlabs/puppet/eyaml/"
63
- container.start(
64
- 'Binds' => vols,
65
- 'PortBindings' => {
66
- '8140/tcp' => [{ 'HostPort' => "0" }],
67
- },
68
- )
72
+ container.start
69
73
 
70
74
  container = find
71
75
  raise "can't start container" unless container
@@ -111,15 +115,28 @@ EOS
111
115
 
112
116
 
113
117
  end
118
+
119
+ def conf_dir
120
+ if Gem::Version.new("4.0.0") > Gem::Version.new(server_version)
121
+ "/etc/puppet"
122
+ elsif Gem::Version.new("5.0.0") > Gem::Version.new(server_version) && Gem::Version.new("4.0.0") <= Gem::Version.new(server_version)
123
+ "/etc/puppetlabs/puppet/"
124
+ elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)&& Gem::Version.new("5.0.0") <= Gem::Version.new(server_version)
125
+ "/etc/puppetlabs/puppet/"
126
+ else
127
+ "/etc/puppetlabs/puppet/"
128
+ end
129
+ end
130
+
114
131
  def docker_file
115
- release_package,package_name, conf_dir = if Gem::Version.new("4.0.0") > Gem::Version.new(server_version)
116
- ["puppetlabs-release-el-#{el}.noarch.rpm", "puppet-server", "/etc/puppet"]
132
+ release_package,package_name = if Gem::Version.new("4.0.0") > Gem::Version.new(server_version)
133
+ ["puppetlabs-release-el-#{el}.noarch.rpm", "puppet-server"]
117
134
  elsif Gem::Version.new("5.0.0") > Gem::Version.new(server_version) && Gem::Version.new("4.0.0") <= Gem::Version.new(server_version)
118
- ["puppetlabs-release-pc1-el-#{el}.noarch.rpm", "puppetserver", "/etc/puppetlabs/puppet/"]
135
+ ["puppetlabs-release-pc1-el-#{el}.noarch.rpm", "puppetserver"]
119
136
  elsif Gem::Version.new("6.0.0") > Gem::Version.new(server_version)&& Gem::Version.new("5.0.0") <= Gem::Version.new(server_version)
120
- ["puppet5-release-el-#{el}.noarch.rpm", "puppetserver", "/etc/puppetlabs/puppet/"]
137
+ ["puppet5-release-el-#{el}.noarch.rpm", "puppetserver"]
121
138
  else
122
- ["puppet6-release-el-#{el}.noarch.rpm", "puppetserver", "/etc/puppetlabs/puppet/"]
139
+ ["puppet6-release-el-#{el}.noarch.rpm", "puppetserver"]
123
140
  end
124
141
 
125
142
  <<-EOS
@@ -129,7 +146,6 @@ rpm -ivh #{release_package}
129
146
  RUN yum install -y #{package_name}-#{server_version}
130
147
  ENV PATH $PATH:/opt/puppetlabs/bin
131
148
  RUN echo -e "#{puppet_config.split(/\n/).join("\\n")}" > #{conf_dir}/puppet.conf
132
- CMD bash -c "rm -rf #{conf_dir}/ssl/* && #{create_ca} && #{run_cmd}"
133
149
  EOS
134
150
  end
135
151
 
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/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pero
2
- VERSION = "0.2.0"
2
+ VERSION = "0.4.3"
3
3
  end
data/pero.gemspec CHANGED
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency 'retryable'
31
31
  spec.add_dependency 'specinfra'
32
32
  spec.add_dependency 'parallel'
33
- spec.add_development_dependency "bundler", "~> 1.17"
34
- spec.add_development_dependency "rake", "~> 10.0"
33
+ spec.add_development_dependency "bundler"
34
+ spec.add_development_dependency "rake"
35
35
  spec.add_development_dependency "rspec", "~> 3.0"
36
36
  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.2.0
4
+ version: 0.4.3
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-27 00:00:00.000000000 Z
11
+ date: 2021-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -112,30 +112,30 @@ dependencies:
112
112
  name: bundler
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: '1.17'
117
+ version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
- version: '1.17'
124
+ version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rake
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: '10.0'
131
+ version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: '10.0'
138
+ version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rspec
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -160,7 +160,6 @@ extra_rdoc_files: []
160
160
  files:
161
161
  - ".gitignore"
162
162
  - Gemfile
163
- - Gemfile.lock
164
163
  - LICENSE.txt
165
164
  - README.md
166
165
  - Rakefile
@@ -200,7 +199,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
199
  - !ruby/object:Gem::Version
201
200
  version: '0'
202
201
  requirements: []
203
- rubygems_version: 3.0.6
202
+ rubygems_version: 3.1.4
204
203
  signing_key:
205
204
  specification_version: 4
206
205
  summary: tool for puppet apply from our desktop.
data/Gemfile.lock DELETED
@@ -1,61 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- pero (0.1.9)
5
- docker-api
6
- logger
7
- net-ssh
8
- parallel
9
- retryable
10
- specinfra
11
- thor
12
-
13
- GEM
14
- remote: https://rubygems.org/
15
- specs:
16
- diff-lcs (1.4.4)
17
- docker-api (1.34.2)
18
- excon (>= 0.47.0)
19
- multi_json
20
- excon (0.76.0)
21
- logger (1.4.2)
22
- multi_json (1.15.0)
23
- net-scp (3.0.0)
24
- net-ssh (>= 2.6.5, < 7.0.0)
25
- net-ssh (6.1.0)
26
- net-telnet (0.1.1)
27
- parallel (1.19.2)
28
- rake (10.5.0)
29
- retryable (3.0.5)
30
- rspec (3.9.0)
31
- rspec-core (~> 3.9.0)
32
- rspec-expectations (~> 3.9.0)
33
- rspec-mocks (~> 3.9.0)
34
- rspec-core (3.9.2)
35
- rspec-support (~> 3.9.3)
36
- rspec-expectations (3.9.2)
37
- diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.9.0)
39
- rspec-mocks (3.9.1)
40
- diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.9.0)
42
- rspec-support (3.9.3)
43
- sfl (2.3)
44
- specinfra (2.82.19)
45
- net-scp
46
- net-ssh (>= 2.7)
47
- net-telnet (= 0.1.1)
48
- sfl
49
- thor (1.0.1)
50
-
51
- PLATFORMS
52
- ruby
53
-
54
- DEPENDENCIES
55
- bundler (~> 1.17)
56
- pero!
57
- rake (~> 10.0)
58
- rspec (~> 3.0)
59
-
60
- BUNDLED WITH
61
- 1.17.3