pupistry 1.5.0 → 2.0.0

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
  SHA1:
3
- metadata.gz: 3592a1a26670a659f59808e3cee82a64852e43bf
4
- data.tar.gz: 2c38660daaa902a4f82353405ef3cc06be17297a
3
+ metadata.gz: 92a533360e87db209954b0c212aa56862914db90
4
+ data.tar.gz: 5d5ff68604cc1d47e2715544e7510612f57e5a39
5
5
  SHA512:
6
- metadata.gz: 696c60d351a9aa13e736301286fdc4f8d7411fe079b73944ebb4a8ed8519716ada4031b9efa3ebb18159160743e6e70fb4277e35e652f7aca34338fe77f28cb3
7
- data.tar.gz: 375d678d998288c046c3fe8fbc429a8ffc11a649a5000bc1ba2246382b011e6c292e773434e467bc7d3027840bf7b2aea06bccb74aefbd40f77edc9b857e4b80
6
+ metadata.gz: 191e49701551cd306abd2068c2a4f38c7932bcaff25a16b11a2428ead11d8748153a5d2e84ea813af73569bd17c2108f2da7223a2d1cb9fff0674a30dd1ef5f2
7
+ data.tar.gz: e9128168c9e4cb2b677bff3c5a8506aaca43471b63313732061f28fdf2d449ba892007ab9f218a08fe8cf8b3ee2105ac2f302624c7a44150c1a521a111e95ad9
data/README.md CHANGED
@@ -127,7 +127,7 @@ nice easy life, Pupistry can generate you a bootstrap script for your platform.
127
127
  gpg_disable: true
128
128
  gpg_signing_key: XYZXYZ
129
129
  agent:
130
- puppetcode: /etc/puppet/environents/
130
+ puppetcode: /etc/puppet/environments/
131
131
  access_key_id:
132
132
  secret_access_key:
133
133
  region: ap-southeast-2
@@ -142,7 +142,7 @@ module Pupistry
142
142
  puppet_cmd += " --environmentpath #{$config['agent']['puppetcode']}"
143
143
  puppet_cmd += " --modulepath #{build_modulepath(environment)}"
144
144
  puppet_cmd += " --hiera_config #{$config['agent']['puppetcode']}/#{environment}/hiera.yaml"
145
- puppet_cmd += " #{$config['agent']['puppetcode']}/#{environment}/manifests/site.pp"
145
+ puppet_cmd += " #{$config['agent']['puppetcode']}/#{environment}/manifests/"
146
146
 
147
147
  $logger.info 'Executing Puppet...'
148
148
  $logger.debug "With: #{puppet_cmd}"
@@ -52,7 +52,7 @@ module Pupistry
52
52
  unless is_enabled?
53
53
  return false
54
54
  end
55
-
55
+
56
56
  $logger.info "Encrypting Hieradata (HieraCrypt Feature)..."
57
57
 
58
58
 
@@ -64,7 +64,7 @@ module Pupistry
64
64
  #
65
65
  puppetcode = $config['general']['app_cache'] + '/puppetcode'
66
66
 
67
-
67
+
68
68
  # Run through each environment.
69
69
  for env in Dir.glob(puppetcode +'/*')
70
70
  env = File.basename(env)
@@ -99,7 +99,7 @@ module Pupistry
99
99
  $logger.warn "No hieracrypt/nodes directory could be found for branch #{env}, no encryption can take place there."
100
100
  break
101
101
  end
102
-
102
+
103
103
  unless Dir.exists?('hieracrypt/encrypted')
104
104
  # We place the encrypted data files in here.
105
105
  Dir.mkdir('hieracrypt/encrypted')
@@ -108,6 +108,10 @@ module Pupistry
108
108
  nodes = Dir.glob('hieracrypt/nodes/*')
109
109
 
110
110
  if nodes
111
+ # Track if we end up with facts referenced in hiera.yaml that are
112
+ # not in the Hieracrypt data for nodes.
113
+ missing_facts = 0
114
+
111
115
  for node in nodes
112
116
  node = File.basename(node)
113
117
 
@@ -157,7 +161,6 @@ module Pupistry
157
161
  puppet_facts['environment'] = env
158
162
  end
159
163
  end
160
-
161
164
 
162
165
  # Apply the Hiera rules to the directory and get back a list of
163
166
  # files that would be matched by Hiera. The way we do this, is
@@ -176,9 +179,10 @@ module Pupistry
176
179
  # Match syntax of %{::some_kinda_fact}
177
180
  line.scan(/%{::([[:word:]]*)}/) do |match|
178
181
  # Replace fact variable with actual value
179
- unless defined? puppet_facts[match[0]]
180
- $logger.warn "hiera.yaml references fact #{match[0]} but this fact doesn't exist in #{node}'s hieracrypt/node/#{node} JSON."
181
- $logger.warn "Possibly out of date data, re-run `pupistry hieracrypt --generate` on the node"
182
+ unless puppet_facts.key?(match[0])
183
+ missing_facts += 1
184
+ $logger.debug "hiera.yaml references fact #{match[0]} but this fact doesn't exist in #{node}'s hieracrypt/node/#{node} JSON."
185
+ $logger.debug "Possibly out of date data, re-run `pupistry hieracrypt --generate` on the node"
182
186
  else
183
187
  line = line.sub("%{::#{match[0]}}", puppet_facts[match[0]])
184
188
  end
@@ -241,6 +245,11 @@ module Pupistry
241
245
  FileUtils.rm_r "hieracrypt.#{node}.tar.gz"
242
246
  FileUtils.rm_r "hieracrypt.#{node}"
243
247
  end
248
+
249
+ # Alert if we found missing facts
250
+ if missing_facts > 0
251
+ $logger.warn "Not all the values in hiera.yaml exist in the Hieracrypt data for #{missing_facts} node(s). Run with --verbose for more info"
252
+ end
244
253
  else
245
254
  $logger.warn "No nodes could be found for branch #{env}, no encryption can take place there."
246
255
  break
@@ -266,7 +275,7 @@ module Pupistry
266
275
  #
267
276
  def self.decrypt_hieradata puppetcode
268
277
  $logger.debug "Decrypting Hieracrypt..."
269
-
278
+
270
279
  hostname = get_hostname # Facter hostname value
271
280
  ssh_host_rsa_key = get_ssh_rsa_private_key # We generate the SSL cert using the SSH RSA Host key
272
281
 
@@ -364,7 +373,7 @@ module Pupistry
364
373
 
365
374
  def self.facts_for_hiera(path)
366
375
  $logger.debug "Searching for facts specified in Hiera rules..."
367
-
376
+
368
377
  puppet_facts = []
369
378
 
370
379
  for env in Dir.entries(path)
@@ -1,3 +1,3 @@
1
1
  module Pupistry
2
- VERSION = '1.5.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -12,7 +12,14 @@ exec 1> >(logger -s -t user-data) 2>&1
12
12
  export PATH=$PATH:/usr/local/bin
13
13
 
14
14
  yum update --assumeyes
15
- yum install --assumeyes puppet3 ruby-devel rubygems gcc zlib-devel libxml2-devel patch gnupg2
15
+
16
+ # Need to install a modern Ruby as the default to support current generation of
17
+ # Pupistry and other common dependencies.
18
+ yum install -y ruby24 ruby24-devel rubygems24
19
+ alternatives --set ruby /usr/bin/ruby2.4
20
+ alternatives --set gem /usr/bin/gem2.4
21
+
22
+ yum install --assumeyes puppet3 gcc zlib-devel libxml2-devel patch gnupg2
16
23
 
17
24
  # Not sure why this doesn't get pulled down properly, maybe it's core and
18
25
  # Amazon didn't package it properly? Need it for Thor which is used by Pupistry
@@ -14,7 +14,10 @@ rpm -ivh https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
14
14
  yum update --assumeyes
15
15
  yum install --assumeyes puppet ruby-devel rubygems gcc zlib-devel libxml2-devel patch gnupg2
16
16
 
17
- gem install pupistry --no-ri --no-rdoc
17
+ # Pinned to old (and possibly insecure?) versions due to old version of Ruby being shipped
18
+ gem install nokogiri --version 1.6.8.1
19
+ gem install pupistry --no-ri --no-rdoc --version 1.5.0
20
+
18
21
  mkdir -p /etc/pupistry
19
22
  mkdir -p <%= puppetcode %>
20
23
  cat > /etc/pupistry/settings.yaml << "EOF"
@@ -1,13 +1,9 @@
1
1
  #!/bin/bash -x
2
- # Bootstrap for Debian 7 stable (Wheezy)
3
- # It will *probably* work with other Debian versions supported by Puppetlabs.
4
- # It *might* work with other Debian or Ubuntu derived systems.
2
+ # Bootstrap for Debian 9 stable (stretch)
3
+ # Uses distribution-supplied Puppet version (4.8.x)
5
4
  (
6
5
  exec 1> >(logger -s -t user-data) 2>&1
7
6
 
8
- wget -O /tmp/puppetlabs-release.deb https://apt.puppetlabs.com/puppetlabs-release-`lsb_release -sc`.deb
9
- dpkg -i /tmp/puppetlabs-release.deb
10
-
11
7
  export DEBIAN_FRONTEND=noninteractive
12
8
 
13
9
  apt-get update
@@ -15,7 +15,11 @@ apt-get -y upgrade
15
15
 
16
16
  apt-get install -y puppet ruby ruby-dev zlib1g-dev libxml2-dev gcc make patch gnupg2
17
17
 
18
- gem install pupistry --no-ri --no-rdoc
18
+ # Pinned to old (and possibly insecure?) versions due to old version of Ruby being shipped
19
+ gem install nokogiri --version 1.6.8.1
20
+ gem install pupistry --no-ri --no-rdoc --version 1.5.0
21
+
22
+
19
23
  mkdir -p /etc/pupistry
20
24
  mkdir -p <%= puppetcode %>
21
25
  cat > /etc/pupistry/settings.yaml << "EOF"
metadata CHANGED
@@ -1,181 +1,181 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pupistry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jethro Carr
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-18 00:00:00.000000000 Z
11
+ date: 2018-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '5.6'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.6'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: simplecov
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.10'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.10'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: aws-sdk-v1
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: thor
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: whichr
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - '>='
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - '>='
122
+ - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: erubis
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - '>='
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
131
  version: '0'
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - '>='
136
+ - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: safe_yaml
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - '>='
143
+ - - ">="
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  type: :runtime
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - '>='
150
+ - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: rufus-scheduler
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ~>
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
159
  version: '3'
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ~>
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '3'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: r10k
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - '>='
171
+ - - ">="
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - '>='
178
+ - - ">="
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  description: Provides security, reliability and consistency to Puppet masterless environments
@@ -185,7 +185,9 @@ executables:
185
185
  extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
+ - README.md
188
189
  - exe/pupistry
190
+ - lib/pupistry.rb
189
191
  - lib/pupistry/agent.rb
190
192
  - lib/pupistry/artifact.rb
191
193
  - lib/pupistry/bootstrap.rb
@@ -195,25 +197,23 @@ files:
195
197
  - lib/pupistry/packer.rb
196
198
  - lib/pupistry/storage_aws.rb
197
199
  - lib/pupistry/version.rb
198
- - lib/pupistry.rb
199
- - resources/aws/cfn_pupistry_bucket_and_iam.template
200
200
  - resources/aws/README_AWS.md
201
- - resources/bootstrap/amazon-any.erb
201
+ - resources/aws/cfn_pupistry_bucket_and_iam.template
202
202
  - resources/bootstrap/BOOTSTRAP_NOTES.md
203
+ - resources/bootstrap/amazon-any.erb
203
204
  - resources/bootstrap/centos-7.erb
204
- - resources/bootstrap/debian-7.erb
205
205
  - resources/bootstrap/debian-8.erb
206
+ - resources/bootstrap/debian-9.erb
206
207
  - resources/bootstrap/fedora-any.erb
207
208
  - resources/bootstrap/freebsd-10.erb
208
209
  - resources/bootstrap/openbsd-6.0.erb
209
210
  - resources/bootstrap/ubuntu-14.04.erb
210
211
  - resources/bootstrap/ubuntu-16.04-puppet4.erb
211
212
  - resources/bootstrap/ubuntu-16.04.erb
213
+ - resources/packer/PACKER_NOTES.md
212
214
  - resources/packer/aws_amazon-any.json.erb
213
215
  - resources/packer/aws_freebsd-10.json.erb
214
216
  - resources/packer/aws_ubuntu-14.04.json.erb
215
- - resources/packer/PACKER_NOTES.md
216
- - README.md
217
217
  - settings.example.yaml
218
218
  homepage: https://github.com/jethrocarr/pupistry
219
219
  licenses:
@@ -225,19 +225,18 @@ require_paths:
225
225
  - lib
226
226
  required_ruby_version: !ruby/object:Gem::Requirement
227
227
  requirements:
228
- - - '>='
228
+ - - ">="
229
229
  - !ruby/object:Gem::Version
230
230
  version: '0'
231
231
  required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  requirements:
233
- - - '>='
233
+ - - ">="
234
234
  - !ruby/object:Gem::Version
235
235
  version: '0'
236
236
  requirements: []
237
237
  rubyforge_project:
238
- rubygems_version: 2.0.14.1
238
+ rubygems_version: 2.5.2
239
239
  signing_key:
240
240
  specification_version: 4
241
241
  summary: A workflow tool for Puppet Masterless Deployments
242
242
  test_files: []
243
- has_rdoc: