| OLD | NEW | 
|   1 #!/usr/bin/ruby |   1 #!/usr/bin/ruby | 
|   2 # This script is a node classifier for Puppet that operates on top of Hiera |   2 # This script is a node classifier for Puppet that operates on top of Hiera | 
|   3 # and uses a custom hosts.yaml config to map host roles. |   3 # and uses a custom hosts.yaml config to map host roles. | 
|   4  |   4  | 
|   5 require 'getoptlong' |   5 require 'getoptlong' | 
|   6 require 'hiera' |   6 require 'hiera' | 
|   7 require 'socket' |   7 require 'socket' | 
|   8 require 'yaml' |   8 require 'yaml' | 
|   9  |   9  | 
|  10 # Where to search for the Hiera configuration |  10 # Where to search for the Hiera configuration | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  57 #{BASENAME}: unknown option: #{ARGV[0]} |  57 #{BASENAME}: unknown option: #{ARGV[0]} | 
|  58 #{BASENAME}: try #{BASENAME} --help |  58 #{BASENAME}: try #{BASENAME} --help | 
|  59 END |  59 END | 
|  60     exit 1 |  60     exit 1 | 
|  61 end |  61 end | 
|  62  |  62  | 
|  63 # Extract the server -> hostname -> role information from the hosts |  63 # Extract the server -> hostname -> role information from the hosts | 
|  64 # configuration file: |  64 # configuration file: | 
|  65 begin |  65 begin | 
|  66   config = YAML.load_file(HOSTS_CONFIG) |  66   config = YAML.load_file(HOSTS_CONFIG) | 
|  67   servers = config.fetch("servers", {}) |  67   servers = config.fetch("adblockplus::hosts", {}) | 
|  68   host = servers.fetch(hostname, {}) |  68   host = servers.fetch(hostname, {}) | 
|  69   role = host.fetch("role", "default") |  69   role = host.fetch("role", "default") | 
|  70 rescue Exception => error |  70 rescue Exception => error | 
|  71   STDERR.puts "#{BASENAME}: #{error.message}: #{HOSTS_CONFIG}" |  71   STDERR.puts "#{BASENAME}: #{error.message}: #{HOSTS_CONFIG}" | 
|  72   exit 1 |  72   exit 1 | 
|  73 end |  73 end | 
|  74  |  74  | 
|  75 # Map Hiera data into the structure Puppet expects an ENC to generate (see |  75 # Map Hiera data into the structure Puppet expects an ENC to generate (see | 
|  76 # https://docs.puppetlabs.com/guides/external_nodes.html for more info): |  76 # https://docs.puppetlabs.com/guides/external_nodes.html for more info): | 
|  77 begin |  77 begin | 
|  78   hiera = Hiera.new(:config => HIERA_CONFIG) |  78   hiera = Hiera.new(:config => HIERA_CONFIG) | 
|  79   scope = {'::hostname' => hostname, '::role' => role} |  79   scope = {'::hostname' => hostname, '::role' => role} | 
|  80   classes = hiera.lookup('classes', {}, scope, nil, :hash) |  80   classes = hiera.lookup('classes', {}, scope, nil, :hash) | 
|  81   parameters = hiera.lookup('parameters', {}, scope, nil, :hash) |  81   parameters = hiera.lookup('parameters', {}, scope, nil, :hash) | 
|  82   parameters['role'] = role |  82   parameters['role'] = role | 
|  83   result = { 'classes' => classes, 'parameters' => parameters } |  83   result = { 'classes' => classes, 'parameters' => parameters } | 
|  84 rescue Exception => error |  84 rescue Exception => error | 
|  85   STDERR.puts "#{BASENAME}: #{error.message}: #{HIERA_CONFIG}" |  85   STDERR.puts "#{BASENAME}: #{error.message}: #{HIERA_CONFIG}" | 
|  86   exit 1 |  86   exit 1 | 
|  87 end |  87 end | 
|  88  |  88  | 
|  89 puts result.to_yaml |  89 puts result.to_yaml | 
|  90  |  90  | 
| OLD | NEW |