pero 0.2.0 → 0.4.3

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