Class: Dome::HieraLookup
- Inherits:
-
Object
- Object
- Dome::HieraLookup
- Defined in:
- lib/dome/hiera_lookup.rb
Instance Method Summary collapse
- #certificate_directory ⇒ Object
- #config ⇒ Object
- #create_certificate_directory ⇒ Object
- #default_config ⇒ Object
- #extract_certs(certs) ⇒ Object
- #eyaml_private_key ⇒ Object
- #eyaml_public_key ⇒ Object
-
#initialize(environment) ⇒ HieraLookup
constructor
A new instance of HieraLookup.
- #lookup(key, default = nil, order_override = nil, resolution_type = :priority) ⇒ Object
- #puppet_dir ⇒ Object
- #secret_env_vars(secret_vars) ⇒ Object
Constructor Details
#initialize(environment) ⇒ HieraLookup
Returns a new instance of HieraLookup.
3 4 5 6 7 8 |
# File 'lib/dome/hiera_lookup.rb', line 3 def initialize(environment) @environment = environment.environment @account = environment.account @ecosystem = environment.ecosystem @settings = Dome::Settings.new end |
Instance Method Details
#certificate_directory ⇒ Object
87 88 89 |
# File 'lib/dome/hiera_lookup.rb', line 87 def certificate_directory "#{@settings.project_root}/terraform/certs" end |
#config ⇒ Object
10 11 12 |
# File 'lib/dome/hiera_lookup.rb', line 10 def config @config ||= YAML.load_file(File.join(puppet_dir, 'hiera.yaml')).merge(default_config) end |
#create_certificate_directory ⇒ Object
82 83 84 85 |
# File 'lib/dome/hiera_lookup.rb', line 82 def create_certificate_directory puts "Creating certificate directory at #{certificate_directory.colorize(:green)}" FileUtils.mkdir_p certificate_directory end |
#default_config ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/dome/hiera_lookup.rb', line 14 def default_config { logger: 'noop', yaml: { datadir: "#{puppet_dir}/hieradata" }, eyaml: { datadir: "#{puppet_dir}/hieradata", pkcs7_private_key: eyaml_private_key, pkcs7_public_key: eyaml_public_key } } end |
#extract_certs(certs) ⇒ Object
72 73 74 75 76 77 78 79 80 |
# File 'lib/dome/hiera_lookup.rb', line 72 def extract_certs(certs) create_certificate_directory certs.each_pair do |key, val| directory = "#{certificate_directory}/#{key}" puts "Extracting certificate #{key.colorize(:green)} into #{directory.colorize(:green)}" File.open(directory, 'w') { |f| f.write(lookup(val)) } end end |
#eyaml_private_key ⇒ Object
34 35 36 37 38 39 |
# File 'lib/dome/hiera_lookup.rb', line 34 def eyaml_private_key private_key = File.join(puppet_dir, 'keys/private_key.pkcs7.pem') raise "Cannot find eyaml private key! Make sure it exists at #{private_key}" unless File.exist?(private_key) puts "Found eyaml private key: #{private_key.colorize(:green)}" private_key end |
#eyaml_public_key ⇒ Object
41 42 43 44 45 46 |
# File 'lib/dome/hiera_lookup.rb', line 41 def eyaml_public_key public_key = File.join(puppet_dir, 'keys/public_key.pkcs7.pem') raise "Cannot find eyaml public key! Make sure it exists at #{public_key}" unless File.exist?(public_key) puts "Found eyaml public key: #{public_key.colorize(:green)}" public_key end |
#lookup(key, default = nil, order_override = nil, resolution_type = :priority) ⇒ Object
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/dome/hiera_lookup.rb', line 48 def lookup(key, default = nil, order_override = nil, resolution_type = :priority) hiera = Hiera.new(config: config) hiera_scope = {} hiera_scope['ecosystem'] = @ecosystem hiera_scope['location'] = 'aeuw1' hiera_scope['env'] = @environment hiera.lookup(key.to_s, default, hiera_scope, order_override, resolution_type) end |
#puppet_dir ⇒ Object
28 29 30 31 32 |
# File 'lib/dome/hiera_lookup.rb', line 28 def puppet_dir directory = File.join(@settings.project_root, 'puppet') puts "The configured Puppet directory is: #{directory.colorize(:green)}" unless @directory @directory ||= directory end |
#secret_env_vars(secret_vars) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/dome/hiera_lookup.rb', line 59 def secret_env_vars(secret_vars) secret_vars.each_pair do |key, val| hiera_lookup = lookup(val) terraform_env_var = "TF_VAR_#{key}" ENV[terraform_env_var] = hiera_lookup if hiera_lookup puts "Setting #{terraform_env_var.colorize(:green)}." else puts "Hiera lookup failed for '#{val}', so #{terraform_env_var} was not set.".colorize(:red) end end end |