hiera-eyaml 2.0.3 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,16 @@
1
+ Change log for hiera-eyaml
2
+ ==========================
3
+
4
+ 2.04
5
+ ----
6
+
7
+ - Add change log
8
+ - #118 - Some initial support for spaces in filenames (primarily targeted at windows platforms) (@elyscape)
9
+ - #114 - Add new config file resolution so that a system wide /etc/eyaml/config.yaml is processed first (@gtmtech)
10
+ - #112 - Improve debugging options and colorise output (@gtmtech)
11
+ - #102 - Extension of temp files should be yaml to help editors provide syntax highlighting (@ColinHebert)
12
+ - #90, #121, #122 - Add preamble in edit mode to make it easier to remember how to edit (@sihil)
13
+ - #96, #111, #116 - Various updates to docs
14
+
15
+ 2.03
16
+ ----
data/README.md CHANGED
@@ -59,6 +59,10 @@ Setup
59
59
 
60
60
  $ gem install hiera-eyaml
61
61
 
62
+ ### Installing hiera-eyaml for the new [puppet-server](https://github.com/puppetlabs/puppet-server)
63
+
64
+ $ puppetserver gem install hiera-eyaml
65
+
62
66
  ### Generate keys
63
67
 
64
68
  The first step is to create a pair of keys:
@@ -234,7 +238,7 @@ Configuration file for eyaml
234
238
 
235
239
  Default parameters for the eyaml command line tool can be provided by creating a configuration YAML file.
236
240
 
237
- The location of the file defaults to `~/.eyaml/config.yaml` but can be overriden by setting `EYAML_CONFIG` environment variable.
241
+ Config files will be read first from `/etc/eyaml/config.yaml`, then from `~/.eyaml/config.yaml` and finally by anything referenced in the `EYAML_CONFIG` environment variable
238
242
 
239
243
  The file takes any long form argument that you can provide on the command line. For example, to override the pkcs7 keys:
240
244
  ```yaml
@@ -271,9 +275,12 @@ When editing eyaml files, you will see that the unencrypted plaintext is marked
271
275
  This is a list of available plugins:
272
276
 
273
277
  - [hiera-eyaml-gpg](https://github.com/sihil/hiera-eyaml-gpg) - Provide GPG encryption
274
- - [hiera-eyaml-plaintext](https://github.com/gtmtech/hiera-eyaml-plaintext) - This is a no-op encryption plugin that
278
+ - [hiera-eyaml-plaintext](https://github.com/gtmtechltd/hiera-eyaml-plaintext) - This is a no-op encryption plugin that
275
279
  simply base64 encodes the values. It exists as an example plugin to create your own and to do integration tests on
276
280
  hiera-eyaml. **THIS SHOULD NOT BE USED IN PRODUCTION**
281
+ - [hiera-eyaml-twofac](https://github.com/gtmtechltd/hiera-eyaml-twofac) - PKCS7 keypair + AES256 symmetric password for two-factor encryption
282
+ Note that this plugin mandates the user enter a password. It is useful for non-automated scenarios, and is not advised to be used
283
+ in conjunction with puppet, as it requires entry of a password over a terminal.
277
284
 
278
285
 
279
286
  Notes
@@ -322,6 +329,7 @@ You'll need to have a few requirements installed:
322
329
  * `aruba` (gem)
323
330
  * `cucumber` (gem)
324
331
  * `puppet` (gem)
332
+ * `hiera-eyaml-plaintext` (gem)
325
333
 
326
334
 
327
335
  Authors
data/bin/eyaml CHANGED
@@ -9,5 +9,18 @@ require 'hiera/backend/eyaml/encryptors/pkcs7'
9
9
  Hiera::Backend::Eyaml::Encryptors::Pkcs7.register
10
10
  Hiera::Backend::Eyaml::Plugins.find
11
11
 
12
- Hiera::Backend::Eyaml::CLI.parse
13
- Hiera::Backend::Eyaml::CLI.execute
12
+ begin
13
+ Hiera::Backend::Eyaml::CLI.parse
14
+ rescue StandardError => e
15
+ Hiera::Backend::Eyaml::Utils.warn e.message
16
+ Hiera::Backend::Eyaml::Utils.debug e.backtrace.join("\n")
17
+ exit 1
18
+ end
19
+
20
+ begin
21
+ Hiera::Backend::Eyaml::CLI.execute
22
+ rescue StandardError => e
23
+ Hiera::Backend::Eyaml::Utils.warn e.message
24
+ Hiera::Backend::Eyaml::Utils.debug e.backtrace.join("\n")
25
+ exit 1
26
+ end
@@ -2,7 +2,7 @@ class Hiera
2
2
  module Backend
3
3
  module Eyaml
4
4
 
5
- VERSION = "2.0.3"
5
+ VERSION = "2.0.4"
6
6
  DESCRIPTION = "Hiera-eyaml is a backend for Hiera which provides OpenSSL encryption/decryption for Hiera properties"
7
7
 
8
8
  class RecoverableError < StandardError
@@ -45,4 +45,3 @@ class Hiera
45
45
  end
46
46
  end
47
47
  end
48
-
@@ -34,7 +34,7 @@ class Hiera
34
34
 
35
35
  options = command_class.validate options
36
36
  Eyaml::Options.set options
37
- Eyaml::Options.debug
37
+ Eyaml::Options.trace
38
38
 
39
39
  end
40
40
 
@@ -46,7 +46,7 @@ class Hiera
46
46
  puts result unless result.nil?
47
47
  rescue Exception => e
48
48
  Utils.warn e.message
49
- Utils.info e.backtrace.inspect
49
+ Utils.debug e.backtrace.join("\n")
50
50
  end
51
51
 
52
52
  end
@@ -59,6 +59,10 @@ class Hiera
59
59
  "[eyaml_#{plugin_classname}]: #{msg}"
60
60
  end
61
61
 
62
+ def self.trace msg
63
+ Utils::trace :from => plugin_classname, :msg => msg
64
+ end
65
+
62
66
  def self.debug msg
63
67
  Utils::debug :from => plugin_classname, :msg => msg
64
68
  end
@@ -94,7 +94,7 @@ class Hiera
94
94
 
95
95
  Utils.ensure_key_dir_exists public_key
96
96
  Utils.write_important_file :filename => public_key, :content => cert.to_pem
97
- puts "Keys created OK"
97
+ Utils.info "Keys created OK"
98
98
 
99
99
  end
100
100
 
@@ -20,13 +20,17 @@ class Hiera
20
20
  end
21
21
  end
22
22
 
23
- def self.debug
24
- Utils::debug "Dump of eyaml tool options dict:"
25
- Utils::debug "--------------------------------"
23
+ def self.trace
24
+ Utils::trace "Dump of eyaml tool options dict:"
25
+ Utils::trace "--------------------------------"
26
26
  @@options.each do |k, v|
27
- Utils::debug sprintf "%18s %-18s = %18s %-18s", "(#{k.class.name})", k.to_s, "(#{v.class.name})", v.to_s
27
+ begin
28
+ Utils::trace sprintf "%18s %-18s = %18s %-18s", "(#{k.class.name})", k.to_s, "(#{v.class.name})", v.to_s
29
+ rescue
30
+ Utils::trace sprintf "%18s %-18s = %18s %-18s", "(#{k.class.name})", k.to_s, "(#{v.class.name})", "<unprintable>" # case where v is binary
31
+ end
28
32
  end
29
- Utils::debug "--------------------------------"
33
+ Utils::trace "--------------------------------"
30
34
  end
31
35
 
32
36
  end
@@ -22,6 +22,9 @@ class Hiera
22
22
  {:name => :verbose,
23
23
  :description => "Be more verbose",
24
24
  :short => 'v'},
25
+ {:name => :trace,
26
+ :description => "Enable trace debug",
27
+ :short => 't'},
25
28
  {:name => :quiet,
26
29
  :description => "Be less verbose",
27
30
  :short => 'q'},
@@ -31,21 +34,24 @@ class Hiera
31
34
  ]
32
35
 
33
36
  def self.load_config_file
34
- config_file=ENV['EYAML_CONFIG'] || "#{ENV['HOME']}/.eyaml/config.yaml"
35
- begin
36
- config = YAML.load_file(config_file)
37
- Utils::info "Loaded config from #{config_file}"
38
- config
39
- rescue Errno::ENOENT, IndexError
40
- {}
37
+ config = {}
38
+ [ "/etc/eyaml/config.yaml", "#{ENV['HOME']}/.eyaml/config.yaml", "#{ENV['EYAML_CONFIG']}" ].each do |config_file|
39
+ begin
40
+ yaml_contents = YAML.load_file(config_file)
41
+ Utils::info "Loaded config from #{config_file}"
42
+ config.merge! yaml_contents
43
+ rescue
44
+ raise StandardError, "Could not open config file \"#{config_file}\" for reading"
45
+ end if config_file and File.file? config_file
41
46
  end
47
+ config
42
48
  end
43
49
 
44
50
  def self.all_options
45
51
  options = @@global_options.dup
46
52
  options += self.options if self.options
47
53
  options += Plugins.options
48
- # merge in defaults from configuration file
54
+ # merge in defaults from configuration files
49
55
  config_file = self.load_config_file
50
56
  options.map!{ | opt|
51
57
  key_name = "#{opt[:name]}"
@@ -106,6 +112,10 @@ class Hiera
106
112
  Hiera::Backend::Eyaml.verbosity_level += 1
107
113
  end
108
114
 
115
+ if options[:trace]
116
+ Hiera::Backend::Eyaml.verbosity_level += 2
117
+ end
118
+
109
119
  if options[:quiet]
110
120
  Hiera::Backend::Eyaml.verbosity_level = 0
111
121
  end
@@ -12,7 +12,8 @@ class Hiera
12
12
  class Edit < Subcommand
13
13
 
14
14
  def self.options
15
- []
15
+ [{ :name => :no_preamble,
16
+ :description => "Don't prefix edit sessions with the informative preamble" }]
16
17
  end
17
18
 
18
19
  def self.description
@@ -23,11 +24,46 @@ class Hiera
23
24
  "Usage: eyaml edit [options] <some-eyaml-file>"
24
25
  end
25
26
 
27
+ def self.prefix
28
+ '#|'
29
+ end
30
+
31
+ def self.preamble
32
+ tags = (["pkcs7"] + Plugins.plugins.collect {|plugin|
33
+ plugin.name.split("hiera-eyaml-").last
34
+ }).collect{|name| Encryptor.find(name).tag}
35
+
36
+ preamble = <<-eos
37
+ This is eyaml edit mode. This text (lines starting with #{self.prefix} at the top of the
38
+ file) will be removed when you save and exit.
39
+ - To edit encrypted values, change the content of the DEC(<num>)::PKCS7[]!
40
+ block#{(tags.size>1) ? " (or #{tags.drop(1).collect {|tag| "DEC(<num>)::#{tag}[]!" }.join(' or ')})." : '.' }
41
+ WARNING: DO NOT change the number in the parentheses.
42
+ - To add a new encrypted value copy and paste a new block from the
43
+ appropriate example below. Note that:
44
+ * the text to encrypt goes in the square brackets
45
+ * ensure you include the exclamation mark when you copy and paste
46
+ * you must not include a number when adding a new block
47
+ e.g. #{tags.collect {|tag| "DEC::#{tag}[]!" }.join(' -or- ')}
48
+ eos
49
+
50
+ preamble.gsub(/^/, "#{self.prefix} ")
51
+ end
52
+
26
53
  def self.validate options
27
54
  Trollop::die "You must specify an eyaml file" if ARGV.empty?
28
55
  options[:source] = :eyaml
29
56
  options[:eyaml] = ARGV.shift
30
- options[:input_data] = File.read options[:eyaml]
57
+ if File.exists? options[:eyaml]
58
+ begin
59
+ options[:input_data] = File.read options[:eyaml]
60
+ rescue
61
+ raise StandardError, "Could not open file for reading: #{options[:eyaml]}"
62
+ end
63
+ else
64
+ Utils.info "#{options[:eyaml]} doesn't exist, editing new file"
65
+ options[:input_data] = "---"
66
+ end
31
67
  options
32
68
  end
33
69
 
@@ -35,16 +71,19 @@ class Hiera
35
71
  encrypted_parser = Parser::ParserFactory.encrypted_parser
36
72
  tokens = encrypted_parser.parse Eyaml::Options[:input_data]
37
73
  decrypted_input = tokens.each_with_index.to_a.map{|(t,index)| t.to_decrypted :index => index}.join
38
- decrypted_file = Utils.write_tempfile decrypted_input
74
+ decrypted_file_content = Eyaml::Options[:no_preamble] ? decrypted_input : (self.preamble + decrypted_input)
75
+ decrypted_file = Utils.write_tempfile decrypted_file_content
39
76
 
40
77
  editor = Utils.find_editor
41
78
 
42
79
  begin
43
- system "#{editor} #{decrypted_file}"
80
+ system "#{editor} \"#{decrypted_file}\""
44
81
  status = $?
45
82
 
46
83
  raise StandardError, "File was moved by editor" unless File.file? decrypted_file
47
- edited_file = File.read decrypted_file
84
+ raw_edited_file = File.read decrypted_file
85
+ # strip comments at start of file
86
+ edited_file = raw_edited_file.split($/,-1).drop_while {|line| line.start_with?(self.prefix)}.join($/)
48
87
 
49
88
  raise StandardError, "Editor #{editor} has not exited?" unless status.exited?
50
89
  raise StandardError, "Editor did not exit successfully (exit code #{status.exitstatus}), aborting" unless status.exitstatus == 0
@@ -19,11 +19,7 @@ class Hiera
19
19
  def self.execute
20
20
  plugin_versions = {}
21
21
 
22
- puts <<-EOS
23
- Version info
24
-
25
- hiera-eyaml (core): #{Eyaml::VERSION}
26
- EOS
22
+ Eyaml::Utils.info "hiera-eyaml (core): #{Eyaml::VERSION}"
27
23
 
28
24
  Plugins.plugins.each do |plugin|
29
25
  plugin_shortname = plugin.name.split("hiera-eyaml-").last
@@ -32,7 +28,7 @@ EOS
32
28
  rescue
33
29
  "unknown (is plugin compatible with eyaml 2.0+ ?)"
34
30
  end
35
- puts " hiera-eyaml-#{plugin_shortname} (gem): #{plugin_version}"
31
+ Eyaml::Utils.info "hiera-eyaml-#{plugin_shortname} (gem): #{plugin_version}"
36
32
  end
37
33
 
38
34
  nil
@@ -44,4 +40,4 @@ EOS
44
40
  end
45
41
  end
46
42
  end
47
- end
43
+ end
@@ -34,6 +34,20 @@ class Hiera
34
34
  editor = ENV['EDITOR']
35
35
  editor ||= %w{ /usr/bin/sensible-editor /usr/bin/editor /usr/bin/vim /usr/bin/vi }.collect {|e| e if FileTest.executable? e}.compact.first
36
36
  raise StandardError, "Editor not found. Please set your EDITOR env variable" if editor.nil?
37
+ if editor.index(' ')
38
+ editor = editor.dup if editor.frozen? # values from ENV are frozen
39
+ editor.gsub!(/([^\\]|^)~/, '\1' + ENV['HOME']) # replace ~ with home unless escaped
40
+ editor.gsub!(/(^|[^\\])"/, '\1') # remove unescaped quotes during processing
41
+ editor.gsub!(/\\ /, ' ') # unescape spaces since we quote paths
42
+ pieces = editor.split(' ')
43
+ paths = pieces.each_with_index.map {|_,x| pieces[0..x].join(' ')}.reverse # get possible paths, starting with longest
44
+ extensions = (ENV['PATHEXT'] || '').split(';') # handle Windows executables
45
+ editorfile = paths.select { |path|
46
+ FileTest.file?(path) || ! extensions.select {|ext| FileTest.file?(path + ext) }.empty?
47
+ }.first
48
+ raise StandardError, "Editor not found. Please set your EDITOR env variable" if editorfile.nil?
49
+ editor = "\"#{editorfile}\"#{editor[editorfile.size()..-1]}"
50
+ end
37
51
  editor
38
52
  end
39
53
 
@@ -45,11 +59,12 @@ class Hiera
45
59
  num_bytes.times { file.print(byte.chr) }
46
60
  file.fsync
47
61
  end
62
+ file.close
48
63
  File.delete args[:file]
49
64
  end
50
65
 
51
66
  def self.write_tempfile data_to_write
52
- file = Tempfile.open('eyaml_edit')
67
+ file = Tempfile.open(['eyaml_edit', '.yaml'])
53
68
  path = file.path
54
69
  file.close!
55
70
 
@@ -107,7 +122,7 @@ class Hiera
107
122
  root_folder = File.dirname(__FILE__) + "/" + Array.new(num_class_hierarchy_levels).fill("..").join("/")
108
123
  class_folder = root_folder + "/" + classdir
109
124
  Dir[File.expand_path("#{class_folder}/*.rb")].uniq.each do |file|
110
- # puts "Requiring file: #{file}"
125
+ self.trace "Requiring file: #{file}"
111
126
  require file
112
127
  end
113
128
  end
@@ -134,36 +149,60 @@ class Hiera
134
149
  else
135
150
  message.merge!({:msg => messageinfo.to_s})
136
151
  end
152
+ message[:prefix] = "[#{message[:from]}]"
153
+ message[:spacer] = " #{' ' * message[:from].length} "
154
+ formatted_output = message[:msg].split("\n").each_with_index.map do |line, index|
155
+ if index == 0
156
+ "#{message[:prefix]} #{line}"
157
+ else
158
+ "#{message[:spacer]} #{line}"
159
+ end
160
+ end
161
+ formatted_output.join "\n"
137
162
  end
138
163
 
139
164
  def self.warn messageinfo
140
- message = self.structure_message messageinfo
141
- message = "[#{message[:from]}] !!! #{message[:msg]}"
142
- if self.hiera?
143
- Hiera.warn message
144
- else
145
- STDERR.puts message
146
- end
165
+ self.print_message({ :message => self.structure_message( messageinfo ), :hiera_loglevel => :warn, :cli_color => :red })
147
166
  end
148
167
 
149
168
  def self.info messageinfo
150
- message = self.structure_message messageinfo
151
- message = "[#{message[:from]}] #{message[:msg]}"
152
- if self.hiera?
153
- Hiera.debug message if Eyaml.verbosity_level > 0
154
- else
155
- STDERR.puts message if Eyaml.verbosity_level > 0
156
- end
169
+ self.print_message({ :message => self.structure_message( messageinfo ), :hiera_loglevel => :debug, :cli_color => :white, :threshold => 0 })
157
170
  end
158
171
 
159
172
  def self.debug messageinfo
160
- message = self.structure_message messageinfo
161
- message = "[#{message[:from]}] #{message[:msg]}"
173
+ self.print_message({ :message => self.structure_message( messageinfo ), :hiera_loglevel => :debug, :cli_color => :green, :threshold => 1 })
174
+ end
175
+
176
+ def self.trace messageinfo
177
+ self.print_message({ :message => self.structure_message( messageinfo ), :hiera_loglevel => :debug, :cli_color => :blue, :threshold => 2 })
178
+ end
179
+
180
+ def self.print_message( args )
181
+ message = args[:message] ||= ""
182
+ hiera_loglevel = args[:hiera_loglevel] ||= :debug
183
+ cli_color = args[:cli_color] ||= :blue
184
+ threshold = args[:threshold]
185
+
162
186
  if self.hiera?
163
- Hiera.debug message if Eyaml.verbosity_level > 1
187
+ Hiera.send(hiera_loglevel, message) if threshold.nil? or Eyaml.verbosity_level > threshold
164
188
  else
165
- STDERR.puts message if Eyaml.verbosity_level > 1
189
+ STDERR.puts self.colorize( message, cli_color ) if threshold.nil? or Eyaml.verbosity_level > threshold
190
+ end
191
+ end
192
+
193
+ def self.colorize message, color
194
+ suffix = "\e[0m"
195
+ prefix = case color
196
+ when :red
197
+ "\e[31m"
198
+ when :green
199
+ "\e[32m"
200
+ when :blue
201
+ "\e[34m"
202
+ else #:white
203
+ "\e[0m"
166
204
  end
205
+ "#{prefix}#{message}#{suffix}"
167
206
  end
168
207
 
169
208
  end
@@ -6,4 +6,4 @@ echo ${RAKE_OUT}
6
6
  VERSION=`echo ${RAKE_OUT} | awk '{print $2}'`
7
7
  echo Installing version: ${VERSION} ...
8
8
  gem install pkg/hiera-eyaml-${VERSION}.gem
9
- eyaml -v
9
+ eyaml version
metadata CHANGED
@@ -1,47 +1,58 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hiera-eyaml
3
- version: !ruby/object:Gem::Version
4
- version: 2.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.4
5
+ prerelease:
5
6
  platform: ruby
6
- authors:
7
+ authors:
7
8
  - Tom Poulton
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
-
12
- date: 2014-07-23 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
12
+ date: 2014-11-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
15
  name: trollop
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: "2.0"
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '2.0'
22
22
  type: :runtime
23
- version_requirements: *id001
24
- - !ruby/object:Gem::Dependency
25
- name: highline
26
23
  prerelease: false
27
- requirement: &id002 !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: highline
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
31
37
  version: 1.6.19
32
38
  type: :runtime
33
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.6.19
34
46
  description: Hiera backend for decrypting encrypted yaml properties
35
47
  email:
36
- executables:
48
+ executables:
37
49
  - eyaml
38
50
  extensions: []
39
-
40
51
  extra_rdoc_files: []
41
-
42
- files:
52
+ files:
43
53
  - .gitignore
44
54
  - .travis.yml
55
+ - CHANGES.md
45
56
  - Gemfile
46
57
  - Gemfile.lock
47
58
  - LICENSE.txt
@@ -76,30 +87,28 @@ files:
76
87
  - sublime_text/eyaml.syntax_definition.json
77
88
  - tools/regem.sh
78
89
  homepage: http://github.com/TomPoulton/hiera-eyaml
79
- licenses:
90
+ licenses:
80
91
  - MIT
81
- metadata: {}
82
-
83
92
  post_install_message:
84
93
  rdoc_options: []
85
-
86
- require_paths:
94
+ require_paths:
87
95
  - lib
88
- required_ruby_version: !ruby/object:Gem::Requirement
89
- requirements:
90
- - &id003
91
- - ">="
92
- - !ruby/object:Gem::Version
93
- version: "0"
94
- required_rubygems_version: !ruby/object:Gem::Requirement
95
- requirements:
96
- - *id003
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
97
108
  requirements: []
98
-
99
109
  rubyforge_project:
100
- rubygems_version: 2.0.14
110
+ rubygems_version: 1.8.23.2
101
111
  signing_key:
102
- specification_version: 4
112
+ specification_version: 3
103
113
  summary: OpenSSL Encryption backend for Hiera
104
114
  test_files: []
105
-
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 3912bf9a2405844f834908a20b1366efda3dd75d
4
- data.tar.gz: 5cec508a47fab8d5a4f4ec19808c436dd61d8d6a
5
- SHA512:
6
- metadata.gz: dc1f52d302216134c15e7880f77c5f3c8aa639f4ac1be73b30fca4ae9e0c76a30a7bf95999cb94313fe7c9c4632853cbafdf08559658d83c94c81a9e6ec72097
7
- data.tar.gz: 861f3b3ca88829e533f65ac4a36afc5e674b2217d84855005c913c3577e94f490eeefb70c027daa89d77f8b650f9e9c926b55e4217a87945a0e7bcb4cb71d116