Server IP : 103.53.40.154 / Your IP : 13.59.111.183 Web Server : Apache System : Linux md-in-35.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64 User : ppcad7no ( 715) PHP Version : 8.2.25 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0555) : /lib64/gems/../elfutils/../../bin/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
#!/usr/bin/ruby require 'optparse' require 'csv' options = {:in => nil, :out => nil, :format => :yaml} OptionParser.new do |opts| opts.banner = "Converter for extlookup CSV files into Hiera JSON and YAML files" opts.on("--in FILE", "-i", "Input CSV file") do |v| options[:in] = v end opts.on("--out FILE", "-o", "Output Hiera file") do |v| options[:out] = v end opts.on("--json", "-j", "Create JSON format file") do |v| options[:format] = :json end end.parse! if options[:in].nil? || options[:out].nil? STDERR.puts "Please specify an input and output file with --in and --out" exit 1 end unless File.exist?(options[:in]) STDERR.puts "Cannot find input file #{options[:in]}" exit 1 end csvdata = CSV.read(options[:in]) hieradata = {} csvdata.each do |d| d = d.map{|item| item.to_s} if d.size > 2 hieradata[d[0]] = d[1, d.size].flatten else hieradata[d[0]] = d[1] end end case options[:format] when :yaml require 'yaml' File.open(options[:out], "w") {|f| f.write hieradata.to_yaml} when :json require 'rubygems' require 'json' File.open(options[:out], "w") {|f| f.write JSON.pretty_generate hieradata} end