salthiera 0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ data.tar.gz: b3bd8ac1830135bc9f921f621e22a91f8513d1ad
4
+ metadata.gz: bda943843e60bf6ed7c5fed8cb05fbdeb986db6e
5
+ SHA512:
6
+ data.tar.gz: 20be867bae02f46069e12896694140a7b0b8535f733dbd5196b9acb29ca5c25363c82d2da6c90c576125b28de37f49429b68f77476ef09382a112e95623a122f
7
+ metadata.gz: c50cf042528029489d54b98c966c580dbac20f4d5cd63483b90f8ae6327eb5e42d63fbdf28d313f9009b9eb6c45bc6a2aaab2e212edfcebc55f4bc91a115918a
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ .idea
2
+ *.iml
3
+ *.gradle
4
+ keys/*.pem
5
+ pkg/
6
+ tmp/
7
+ .DS_Store
8
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.8.7"
4
+ - "1.9.2"
5
+ - "1.9.3"
6
+ before_install:
7
+ - sudo apt-get update
8
+ - sudo apt-get install expect
9
+ script:
10
+ bundle exec cucumber -f progress
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org/'
2
+
3
+ group :development do
4
+ gem "aruba"
5
+ end
6
+
7
+ group :test do
8
+ gem "rake"
9
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,32 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ aruba (0.5.4)
5
+ childprocess (>= 0.3.6)
6
+ cucumber (>= 1.1.1)
7
+ rspec-expectations (>= 2.7.0)
8
+ builder (3.2.2)
9
+ childprocess (0.4.0)
10
+ ffi (~> 1.0, >= 1.0.11)
11
+ cucumber (1.3.10)
12
+ builder (>= 2.1.2)
13
+ diff-lcs (>= 1.1.3)
14
+ gherkin (~> 2.12)
15
+ multi_json (>= 1.7.5, < 2.0)
16
+ multi_test (>= 0.0.2)
17
+ diff-lcs (1.2.5)
18
+ ffi (1.9.3)
19
+ gherkin (2.12.2)
20
+ multi_json (~> 1.3)
21
+ multi_json (1.8.4)
22
+ multi_test (0.0.3)
23
+ rake (10.1.1)
24
+ rspec-expectations (2.14.4)
25
+ diff-lcs (>= 1.1.3, < 2.0)
26
+
27
+ PLATFORMS
28
+ ruby
29
+
30
+ DEPENDENCIES
31
+ aruba
32
+ rake
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+
2
+ The MIT License (MIT)
3
+
4
+ Copyright (c) 2013 GTMTech Ltd
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
7
+ this software and associated documentation files (the "Software"), to deal in
8
+ the Software without restriction, including without limitation the rights to
9
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
10
+ the Software, and to permit persons to whom the Software is furnished to do so,
11
+ subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,43 @@
1
+ SaltHiera
2
+ =========
3
+
4
+ [![Build Status](https://travis-ci.org/Gtmtechltd/salthiera.png?branch=master)](https://travis-ci.org/gtmtechltd/salthiera)
5
+
6
+ salthiera is a hiera-like tool which is designed to work with SaltStack Pillars via the ext_pillar option.
7
+
8
+ Background
9
+ ----------
10
+
11
+ Hiera is a great way of defining conventions by which environmental data can be accessed. Unfortunately it is limited to specific lookup dictionary "keys", which you specify one at a time. This is incompatible with salt which expects an external pillar to supply a range of keys/values which it merges into its existing pillar information.
12
+
13
+ Therefore there was a need to create something which gives the convention advantages of the Hiera system which integrates well with SaltStack.
14
+
15
+ Initially this project is written in Ruby as a gem, however I intend to port to python to align with SaltStack properly when I get the time.
16
+
17
+ Setup
18
+ -----
19
+
20
+ ### Installing salthiera
21
+
22
+ $ gem install salthiera
23
+
24
+ ### Define a salthiera.yaml configuration file
25
+
26
+ $ chown -R puppet:puppet /etc/puppet/secure/keys
27
+ $ chmod -R 0500 /etc/puppet/secure/keys
28
+ $ chmod 0400 /etc/puppet/secure/keys/*.pem
29
+ $ ls -lha /etc/puppet/secure/keys
30
+ -r-------- 1 puppet puppet 1.7K Sep 24 16:24 private_key.pkcs7.pem
31
+ -r-------- 1 puppet puppet 1.1K Sep 24 16:24 public_key.pkcs7.pem
32
+
33
+ ### Use it to lookup data!
34
+
35
+ $ salthiera -c /etc/salthiera.yaml key1=value1 key2=value
36
+
37
+ SaltHiera supports keys, values
38
+
39
+
40
+ Authors
41
+ -------
42
+
43
+ - [Geoff Meakin](http://github.com/gtmtech) - Author
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/salthiera ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'salt_hiera/CLI'
5
+
6
+ SaltHiera::CLI.parse
7
+ SaltHiera::CLI.execute
@@ -0,0 +1,2 @@
1
+ test1: this_is_the_root
2
+
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEA49eiqbbJyECQvy3/5jO7YZ+qaHj0uJj35f09ahQZ7mHfUA6Z
3
+ cf759uJFTh+cBT4bCcKCAy5AUGmmLb0jLb+pU5c5Fn6mlm+bYipjuTNkaVbbwBRI
4
+ 3vIrQO7RO/eaYRhgG3CrO9Yl7eTkmFU3P1rqfKcSnTGW4AlVrDuEOqf0tXTsVgZ0
5
+ cSdXfi80bEkz+6oMAn+DyWO1LjvGvdsW05o0SMDM8NyV/7GPyp0a3A3gwiX/WSMI
6
+ xf7TuxSGc/JMTYzSUvdzT8RiFAYJ/0m3CDm+DRXAEpmG6RqjGrrnTokQepcclMf8
7
+ NV917qKj61hEv4Si043zEMQbAzotCBQAgjL45QIDAQABAoIBAQDKjOsI4X0lT3De
8
+ 5O/4IMlWknEWC2HTsfnANo+gfFpJOC0kqLX1R+3Ec4eVWjiD2KCE3qxiU33Nfv7C
9
+ 7sAVbawEqg2QV+uVFYcXkAOzo2KC2zrk2aOmv7eANE9Cdm6CHv9hpZo0yb5SbQhj
10
+ /G3vHs4THxxHLsyoQuQtB4QX+TRtEuVb7jWLfhLRO/rR44D3oak1MewLI4FSJHIH
11
+ 3jK/oxMfntoM1469ZFP4O7DVEAT3GiqZ1aFJHcYGZUXiOlZIQOOykkmnzOlQeI4d
12
+ gQSlHSTC5LT9mpHY9NctkGCYJZtevAI6N0ZXcPNnATNnvLTarmxeH9yflQKJj2nF
13
+ HTwqfimJAoGBAPmLRMB55SFK+PO8zw5wIqsVxdAZg+tFWEFAo/T25elz18GMZD+v
14
+ FariMVh61b6TCN/Tf2baCu4n/RxJHk4YEF2q09zr4KtQpV1rxmtB25RrEsdQCQEp
15
+ XKHHBF8W0e4ufn6eD2WcIYHDmON03YUSuD2tA5ns7jKyZm5SQ77ksaIbAoGBAOm8
16
+ ouvbrxVhXMdOxhZ8hC9W9QzD4tzJo9o4d3l4JS2eIHHej9r7QZw2Rjr2wBCBtMbs
17
+ Kp5MPKoNr4OnhLuYGURaJYURoeNCTTuUzvoFQ4AvQv3zyZWqezU1fBDJtSroavkR
18
+ Gr8dzTgShGlPJzedYzwQlBc3Nuhdrxx3RAN374D/AoGAce0DFlyQHwL7ZUttvEm1
19
+ iiYGiVscvuyJvkCkmdGeZVZdyh8uJWTpn3pkzOBHdRnrk0QbhflFxDS9eYxoKX8S
20
+ +bBjyRhnGc9Xr67kh1MpzDiV+iiv87fOco1JkZ/5d6QCXAwNO3ZsVbHWuwE/oOFK
21
+ +91hJ4TjuoF4AiXMh/ognsECgYEAjeguDf5hjRyAhK0JzOsqIcesnWRsXtm5Nirk
22
+ NoZAJDMFxbx3IF89VUcKWpAmyZ7GD6OguFzW0/PdJJRXHMHaTUphzymGXQCK/Wp6
23
+ QwdhFPkctiwFrm1DwmlHerXL3VIgaDj/QRsp1io/4+Pfjn9qmTQDhRjLqEYAo8qx
24
+ K13sticCgYA8b//RGcPISHLRfyrHWY4y7fhaHgyBO+tIqLHQWXnMTQCFhf6FW0g+
25
+ z9d9isfie04PgY7471EJpkzSPg4QWAk8crWfPA5/wSVUAM+uGCHC0GAwnzPljNDY
26
+ T2U8xToB7Ev7DDAFDc4LMxR6ReYKytALQjX1gNfZecNhFP3FcjW9+g==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDj16KptsnIQJC/Lf/mM7thn6poePS4mPfl/T1qFBnuYd9QDplx/vn24kVOH5wFPhsJwoIDLkBQaaYtvSMtv6lTlzkWfqaWb5tiKmO5M2RpVtvAFEje8itA7tE795phGGAbcKs71iXt5OSYVTc/Wup8pxKdMZbgCVWsO4Q6p/S1dOxWBnRxJ1d+LzRsSTP7qgwCf4PJY7UuO8a92xbTmjRIwMzw3JX/sY/KnRrcDeDCJf9ZIwjF/tO7FIZz8kxNjNJS93NPxGIUBgn/SbcIOb4NFcASmYbpGqMauudOiRB6lxyUx/w1X3XuoqPrWES/hKLTjfMQxBsDOi0IFACCMvjl geoffmeakin@dtp478
@@ -0,0 +1,8 @@
1
+ ---
2
+ hierarchy:
3
+ - files:environments/%{environment}/files/*
4
+ - yaml:environments/%{environment}/%{id}/*.yaml
5
+ - yaml:environments/%{environment}/default.yaml
6
+ - yaml:environments/defaults.yaml
7
+ - eyaml:environments/%{environment}/%{id}/*.eyaml
8
+
@@ -0,0 +1,45 @@
1
+ require 'salt_hiera/salt_hiera'
2
+
3
+ module SaltHiera
4
+ class CLI
5
+
6
+ def self.help
7
+ puts "Usage: salthiera [ -c configfile ] key1=value1 key2=value2 key3=value3 ..."
8
+ puts " -c : specify a configfile to use"
9
+ exit 0
10
+ end
11
+
12
+ def self.parse
13
+
14
+ params = {}
15
+ config_file = "/etc/salthiera.yaml"
16
+
17
+ while arg = ARGV.shift do
18
+ case arg
19
+ when "--help"
20
+ self.help
21
+ when "-c"
22
+ config_file = ARGV.shift
23
+ else
24
+ key, value = arg.split("=", 2)
25
+ if value
26
+ params[key] = value
27
+ else
28
+ self.help
29
+ end
30
+ end
31
+ end
32
+
33
+ @@opts = { :config => config_file, :params => params }
34
+
35
+ end
36
+
37
+ def self.execute
38
+
39
+ salthiera = SaltHiera.new :config_file => @@opts[:config], :params => @@opts[:params]
40
+ puts salthiera.to_yaml
41
+
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,15 @@
1
+ module SaltHiera
2
+ class Configuration
3
+
4
+ def self.set key, value
5
+ @@confighash ||= {}
6
+ @@confighash[key] = value
7
+ end
8
+
9
+ def self.get key
10
+ @@confighash ||= {}
11
+ @@confighash[key]
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,56 @@
1
+ # Simple logger - not designed to be particularly good, just basic
2
+
3
+ module SaltHiera
4
+ class Logger
5
+ @@loglevels = { :critical => 1,
6
+ :error => 2,
7
+ :warn => 3,
8
+ :info => 4,
9
+ :debug => 5,
10
+ :trace => 6 }
11
+
12
+ def self.logfile filename
13
+ @@logfile ||= filename
14
+ @@loglevel ||= :info
15
+ @@log ||= File.open(filename, "a") unless filename.nil?
16
+ end
17
+
18
+ def self.loglevel level
19
+ @@loglevel = level if @@loglevels[level]
20
+ end
21
+
22
+ def self.critical msg
23
+ self.raw :critical, msg
24
+ raise msg
25
+ end
26
+
27
+ def self.error msg
28
+ self.raw :error, msg
29
+ end
30
+
31
+ def self.warn msg
32
+ self.raw :warn, msg
33
+ end
34
+
35
+ def self.info msg
36
+ self.raw :info, msg
37
+ end
38
+
39
+ def self.debug msg
40
+ self.raw :debug, msg
41
+ end
42
+
43
+ def self.trace msg
44
+ self.raw :trace, msg
45
+ end
46
+
47
+ def self.raw level, msg
48
+ self.logfile "/tmp/salthiera.log"
49
+ # if @@loglevels[level] && @@loglevels[level] > @@loglevels[@@loglevel] then
50
+ @@log.write "[#{level.to_s}]: #{msg}\n"
51
+ @@log.flush
52
+ # end
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,64 @@
1
+ require 'openssl'
2
+ require 'base64'
3
+ require 'salt_hiera/configuration'
4
+
5
+ module SaltHiera
6
+ module Plugins
7
+ class Eyaml
8
+
9
+ def self.process_file file
10
+
11
+ contents = File.read file
12
+ dict = YAML.load contents
13
+ dict ||= {}
14
+ dict = self.recurse dict
15
+ dict
16
+
17
+ end
18
+
19
+ def self.recurse obj
20
+ if obj.is_a? Array
21
+ obj.each.with_index do |element, index|
22
+ obj[index] = self.recurse element
23
+ end
24
+ elsif obj.is_a? Hash
25
+ obj.each do |k, v|
26
+ obj[k] = self.recurse v
27
+ end
28
+ elsif obj.is_a? String
29
+ obj = obj.gsub(/ENC\[PKCS7,(.*?)\]/) {|x| puts "*******" + $1
30
+ self.decrypt($1) }
31
+ else
32
+ obj
33
+ end
34
+ end
35
+
36
+ def self.decrypt cipherbinary
37
+
38
+ public_key = Configuration.get "eyaml_public_key"
39
+ private_key = Configuration.get "eyaml_private_key"
40
+
41
+ raise StandardError, "pkcs7_public_key is not defined" unless public_key
42
+ raise StandardError, "pkcs7_private_key is not defined" unless private_key
43
+
44
+ private_key_pem = File.read private_key
45
+
46
+ private_key_rsa = OpenSSL::PKey::RSA.new( private_key_pem )
47
+
48
+ public_key_pem = File.read public_key
49
+
50
+ public_key_x509 = OpenSSL::X509::Certificate.new( public_key_pem )
51
+
52
+ ciphertext = Base64.decode64(cipherbinary)
53
+ pkcs7 = OpenSSL::PKCS7.new( ciphertext )
54
+
55
+
56
+
57
+
58
+ pkcs7.decrypt(private_key_rsa, public_key_x509)
59
+
60
+ end
61
+
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,15 @@
1
+ module SaltHiera
2
+ module Plugins
3
+ class Files
4
+
5
+ def self.process_file file
6
+
7
+ key = file.split("/").last
8
+ value = File.read file
9
+ { key => value }
10
+
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module SaltHiera
2
+ module Plugins
3
+ class NoPlugin
4
+
5
+ def self.process_file file
6
+
7
+ Logger.debug "(missing plugin) NoPlugin called on #{file}"
8
+ {}
9
+
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ module SaltHiera
2
+ module Plugins
3
+ class Yaml
4
+
5
+ def self.process_file file
6
+
7
+ contents = File.read file
8
+ dict = YAML.load contents
9
+ dict || {}
10
+
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,86 @@
1
+ require 'yaml'
2
+ require 'salt_hiera/logger'
3
+ require 'salt_hiera/configuration'
4
+ require 'salt_hiera/plugins/no_plugin'
5
+
6
+ module SaltHiera
7
+ class SaltHiera
8
+
9
+ VERSION="0.1"
10
+
11
+ def initialize attributes
12
+ raise "Config error (#{params})" unless attributes[:config_file]
13
+ raise "Config file (#{attributes[:config_file]}) doesn't exist" unless File.file? attributes[:config_file]
14
+
15
+ file_contents = File.read(attributes[:config_file])
16
+ begin
17
+ @config = YAML::load(file_contents)
18
+ rescue
19
+ raise "Problem reading from config file #{attributes[:config_file]} (invalid YAML/permissions?)"
20
+ end
21
+
22
+ @config.each do |k, v|
23
+ Configuration.set k, v
24
+ end
25
+
26
+ Logger.logfile(@config[:logfile])
27
+ Logger.loglevel(@config[:loglevel])
28
+ @params = attributes[:params]
29
+
30
+ end
31
+
32
+ def find_plugin plugin_name
33
+ begin
34
+ require "salt_hiera/plugins/#{plugin_name.downcase}"
35
+ rescue
36
+ Logger.critical "No plugin named #{plugin_name} exists"
37
+ return Module.const_get("SaltHiera").const_get("Plugins").const_get("NoPlugin")
38
+ end
39
+ plugin_class = plugin_name.downcase.split("_").collect {|word| word.capitalize }.join("_")
40
+ plugin = Module.const_get("SaltHiera").const_get("Plugins").const_get(plugin_class)
41
+ raise "Could not find plugin #{plugin_name}" if plugin.nil?
42
+ plugin
43
+ end
44
+
45
+ def to_yaml
46
+
47
+ Logger.debug @config
48
+
49
+ if @config["basedir"]
50
+ Logger.debug "Setting basedir to \"#{@config['basedir']}\""
51
+ Dir.chdir @config["basedir"]
52
+ end
53
+
54
+ results = {}
55
+
56
+ @config["hierarchy"].reverse.each do |hierarchy|
57
+ Logger.debug "Analysing hierarchy element: #{hierarchy}"
58
+ hierarchy_type, hierarchy_glob = hierarchy.split(':', 2)
59
+ Logger.debug " type: #{hierarchy_type}"
60
+ Logger.debug " glob: #{hierarchy_glob}"
61
+ hierarchy_glob.gsub!(/\%\{(.*?)\}/) {|exp| @params[exp[2..-2]] || "!NOT_DEFINED!" } # Detokenize
62
+ Logger.debug " reglob: #{hierarchy_glob}"
63
+ next if hierarchy_glob.include? "!NOT_DEFINED!"
64
+ files = Dir.glob(hierarchy_glob).collect {|x| x if File.file?(x) }.compact
65
+ files.each do |file|
66
+ Logger.debug " file: #{file} (#{hierarchy_type})"
67
+ plugin = find_plugin hierarchy_type
68
+ dict = plugin.process_file file
69
+ debug_dict "", dict
70
+ results.merge! dict
71
+ end
72
+ end if @config["hierarchy"]
73
+ results.to_yaml
74
+ end
75
+
76
+ def debug_dict prefix, dict
77
+ dict.each do |k, v|
78
+ Logger.debug " -------> Found #{prefix}#{k}"
79
+ if v.class == Hash
80
+ debug_dict "#{prefix}#{k}.", v
81
+ end
82
+ end
83
+ end
84
+
85
+ end
86
+ end
data/salthiera.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'salt_hiera/salt_hiera'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "salthiera"
8
+ gem.version = SaltHiera::SaltHiera::VERSION
9
+ gem.description = "Hiera like tool for use as an external pillar with SaltStack"
10
+ gem.summary = "Hiera like tool for use as an external pillar with SaltStack"
11
+ gem.author = "Geoff Meakin"
12
+ gem.license = "MIT"
13
+
14
+ gem.homepage = "http://github.com/gtmtechltd/salthiera"
15
+ gem.files = `git ls-files`.split($/).reject { |file| file =~ /^features.*$/ }
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_dependency('trollop', '>=2.0')
21
+ gem.add_dependency('highline', '>=1.6.19')
22
+ end
data/tools/regem.sh ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ gem uninstall salthiera --executables
4
+ RAKE_OUT=`rake build`
5
+ echo ${RAKE_OUT}
6
+ VERSION=`echo ${RAKE_OUT} | awk '{print $2}'`
7
+ echo Installing version: ${VERSION} ...
8
+ gem install pkg/salthiera-${VERSION}.gem
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: salthiera
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Geoff Meakin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2014-01-28 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: trollop
16
+ version_requirements: &id001 !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: "2.0"
21
+ prerelease: false
22
+ requirement: *id001
23
+ type: :runtime
24
+ - !ruby/object:Gem::Dependency
25
+ name: highline
26
+ version_requirements: &id002 !ruby/object:Gem::Requirement
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ version: 1.6.19
31
+ prerelease: false
32
+ requirement: *id002
33
+ type: :runtime
34
+ description: Hiera like tool for use as an external pillar with SaltStack
35
+ email:
36
+ executables:
37
+ - salthiera
38
+ extensions: []
39
+
40
+ extra_rdoc_files: []
41
+
42
+ files:
43
+ - .gitignore
44
+ - .travis.yml
45
+ - Gemfile
46
+ - Gemfile.lock
47
+ - LICENSE.txt
48
+ - README.md
49
+ - Rakefile
50
+ - bin/salthiera
51
+ - environments/defaults.yaml
52
+ - environments/dev/files/myuser.id_rsa
53
+ - environments/dev/files/myuser.id_rsa.pub
54
+ - environments/salthiera.yaml
55
+ - lib/salt_hiera/CLI.rb
56
+ - lib/salt_hiera/configuration.rb
57
+ - lib/salt_hiera/logger.rb
58
+ - lib/salt_hiera/plugins/eyaml.rb
59
+ - lib/salt_hiera/plugins/files.rb
60
+ - lib/salt_hiera/plugins/no_plugin.rb
61
+ - lib/salt_hiera/plugins/yaml.rb
62
+ - lib/salt_hiera/salt_hiera.rb
63
+ - salthiera.gemspec
64
+ - tools/regem.sh
65
+ homepage: http://github.com/gtmtechltd/salthiera
66
+ licenses:
67
+ - MIT
68
+ metadata: {}
69
+
70
+ post_install_message:
71
+ rdoc_options: []
72
+
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - &id003
78
+ - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: "0"
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - *id003
84
+ requirements: []
85
+
86
+ rubyforge_project:
87
+ rubygems_version: 2.0.14
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: Hiera like tool for use as an external pillar with SaltStack
91
+ test_files: []
92
+