puppet-runner 0.0.19 → 0.0.20

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: 4f086089d8c2affa036b2a13590f65ddb9e6c2f8e4fd8bed75e889db6ad2dba1
4
- data.tar.gz: 6407eb197c0bb1378a06fbc2c488c095a37cb9e172cc862a74dc8502883ad5be
3
+ metadata.gz: 0ef7b7a722f72764a0d2b013624442fbf1a953a78f9ccd380d718209f53acf61
4
+ data.tar.gz: c060b7c2a5d188de60cda6afc41f9beb6e1693aed4966d609396596cbbdf6c57
5
5
  SHA512:
6
- metadata.gz: 60c425bb861d0de9d71cd706be3494eacce00197c2a5dddc2b9446fc03479f835ca1b3cb374df78729dec855a8c020979760ecf38d8b9cc3c1da8a02fb9a53de
7
- data.tar.gz: 732de9de032ab030d56871cb02c04b4c9eeaa72560696dcb7e70d5d62a206cb1adc99dabd5ac63738900c6655aa126ec77b5615831baf989337b1218b93c7afb
6
+ metadata.gz: 67de10395d2f7c802a5b00e8c0a15b2149a33514b1cbda0a811cdd34d97a108b5b343b142386918e6aa957ead50fcc0ffe38bc503a56d877bfd89d85faa243af
7
+ data.tar.gz: 864c05e7c5b9223d01fc09e1b43ae2925904542128b5ecd81310c60167706918a1768a833679f10fb545cb27850335f803c32fa5b49c282fc71588d679153be2
data/bin/puppet-runner CHANGED
@@ -27,7 +27,7 @@ doc = <<DOCOPT
27
27
  Adaptavist puppet runner
28
28
 
29
29
  Usage:
30
- puppet-runner (prepare|all) [-c CONFIG_DIR] [-t TEMPLATES] [-d DESTINATION_DIR] [-f FACTS_DEST] [-s SERVERNAME] [-p PUPPET_APPLY] [-r PUPPETFILE_CONFIG] [-o PUPPETFILE_OUTPUT_PATH] [-e EYAML_KEY_PATH]
30
+ puppet-runner (prepare|all) [-c CONFIG_DIR] [-t TEMPLATES] [-d DESTINATION_DIR] [-f FACTS_DEST] [-s SERVERNAME] [-p PUPPET_APPLY] [-r PUPPETFILE_CONFIG] [-o PUPPETFILE_OUTPUT_PATH] [-e EYAML_KEY_PATH] [-k]
31
31
  puppet-runner start [-p PUPPET_APPLY]
32
32
  puppet-runner -h | --help
33
33
 
@@ -42,6 +42,7 @@ Options:
42
42
  -r PUPPETFILE_CONFIG --puppetfile_config puppetfile_config Puppetfile composition config file
43
43
  -o PUPPETFILE_OUTPUT_PATH --puppetfile_output_path PUPPETFILE_OUTPUT_PATH Result Puppetfile path
44
44
  -e EYAML_KEY_PATH --eyaml_key_path EYAML_KEY_PATH Path to eyaml encryption key pair
45
+ -k --keep-facts Flag to keep the encrypted facts file in /tmp for analysis
45
46
  Commands:
46
47
  all Runs the following commands prepare, start
47
48
  start Runs puppet apply
@@ -119,6 +120,7 @@ rescue Docopt::Exit => e
119
120
  end
120
121
 
121
122
  stop_apply = false
123
+ keep_facts = false
122
124
 
123
125
  if options['all'] || options['prepare']
124
126
  input_dir = options["--config_dir"] || options["-c"]
@@ -130,6 +132,7 @@ if options['all'] || options['prepare']
130
132
  eyaml_key_path = options["--eyaml_key_path"] || options["-e"] || "/etc/puppet/config"
131
133
  hostname = options["--servername"] || options["-s"] || Facter.value("hostname")
132
134
  puts "Hostname #{hostname}"
135
+ keep_facts = true if options["-k"] or options["--keep-facts"]
133
136
 
134
137
  config_file_path = path_join_glob(input_dir, hostname+".yaml")
135
138
  templates_dir = path_join_glob(templates, "templates")
@@ -278,6 +281,10 @@ if options['all'] || options['prepare']
278
281
  end
279
282
  custom_facts_path = path_join_glob(input_dir, "#{hostname}_facts.yaml")
280
283
  custom_facts = YAML.load_file(custom_facts_path) || {}
284
+
285
+ # add a fact for the localtion of facter
286
+ custom_facts['facter_file_location'] = output_facts_file_path
287
+
281
288
  File.open(output_encrypted_facts_file_path, 'w+') do |output_file|
282
289
  output_result_default_facts = result_default_facts.deep_merge!(custom_facts, {:merge_hash_arrays => true}).to_yaml
283
290
  prefixed_facts_comments.each do |pattern, replacement|
@@ -285,6 +292,7 @@ if options['all'] || options['prepare']
285
292
  output_result_default_facts.gsub!(/^#{pattern}/, "\##{replacement}\n#{pattern}")
286
293
  end
287
294
  end
295
+
288
296
  output_file.write(output_result_default_facts)
289
297
 
290
298
  # now that the merged final facts are present look for any global transformations to apply
@@ -351,13 +359,20 @@ if options['all'] || options['prepare']
351
359
  end
352
360
  }
353
361
  end
362
+
354
363
  output_file.write(decrypted.join)
355
364
  end
356
365
 
357
- begin
358
- FileUtils.rm output_encrypted_facts_file_path
359
- rescue
360
- warning "Unable to remove tmp encrypted facts file #{output_encrypted_facts_file_path}"
366
+ # unless asked not to, attempt to remove the encrypted facts file
367
+ if keep_facts
368
+ debug "Removal of tmp encrypted facts file #{output_encrypted_facts_file_path} skipped at users request"
369
+ else
370
+ debug "Attempting to remove tmp encrypted facts file #{output_encrypted_facts_file_path}"
371
+ begin
372
+ FileUtils.rm output_encrypted_facts_file_path
373
+ rescue
374
+ warning "Unable to remove tmp encrypted facts file #{output_encrypted_facts_file_path}"
375
+ end
361
376
  end
362
377
 
363
378
  # create puppetfile from the dictionary
@@ -396,7 +411,7 @@ if options['all'] || options['prepare']
396
411
  end
397
412
 
398
413
 
399
- # start puppet
414
+ # start puppet
400
415
  if (options['start'] || options['all']) && !stop_apply
401
416
  require 'puppet'
402
417
  modulefile_definition = Gem::Version.new(Puppet.version) > Gem::Version.new('4.0.0') ? '--modulepath /etc/puppet/modules' : ''
@@ -405,9 +420,23 @@ if (options['start'] || options['all']) && !stop_apply
405
420
  debug "Running #{to_execute}"
406
421
  `#{to_execute}`
407
422
  exit_code = $?.exitstatus
423
+
424
+ # attempt to remove the fact file as its unencrypted (we do not care about exit status)
425
+ fact_file_location = Facter.value("facter_file_location")
426
+ if fact_file_location
427
+ if File.file?(fact_file_location)
428
+ debug "Attempting to remove fact file #{fact_file_location}"
429
+ begin
430
+ FileUtils.rm fact_file_location
431
+ rescue
432
+ warning "Unable to remove facts file #{fact_file_location}.\nPlease urgently remove this as it holds unencrypted values"
433
+ end
434
+ end
435
+ else
436
+ warning "Unable to locate Facts file, please urgently locate and remove this as it holds unencrypted values"
437
+ end
438
+
408
439
  if exit_code != 2
409
440
  raise "execute_puppet exit status: #{exit_code}"
410
441
  end
411
442
  end
412
-
413
-
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "puppet-runner"
7
- spec.version = "0.0.19"
7
+ spec.version = "0.0.20"
8
8
  spec.authors = ["Martin Brehovsky", "Matthew Hope"]
9
9
  spec.email = ["mbrehovsky@adaptavist.com"]
10
10
  spec.summary = %q{Preprocessor for hiera config}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Brehovsky
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-03-28 00:00:00.000000000 Z
12
+ date: 2018-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler