Sha256: 0e8d2d9e741811537bbd64a223185af0850adf614af7255b1174e78344bd8c88

Contents?: true

Size: 745 Bytes

Versions: 1

Compression:

Stored size: 745 Bytes

Contents

#!/usr/bin/env ruby

require 'yaml'

path_to_nodes_pp = ARGV[0]

file_content = File.read(File.expand_path(path_to_nodes_pp))

nodes = {}

file_content.scan(/(^|\n)node ([^\s]+) ?\{([^}]+)\n(\s+)?\}/).each do |node|
  name = node[1]
  includes = node[2].delete("\n").split(/\s+include\s+/).select { |x| !x.empty? }.compact
  nodes[name] = includes
end

# nodes.each { |k, v| puts "#{k} => [#{v.join(', ')}]" }

rules = []
nodes.each do |name, roles_and_profiles|
  rule = {}
  if name =~ %r{^/.+/$}
    rule[:statement] = "Fact[\"certname\"] LIKE \"#{name}\""
  else
    rule[:statement] = "Fact[\"certname\"] = \"#{name.gsub(/(^['"]|['"]$)/, '')}\""
  end

  rule[:success] = { add: roles_and_profiles }
  rules << rule
end

puts rules.to_yaml

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
animal-0.2.2 exe/animal_import