summaryrefslogtreecommitdiff
path: root/inventory_json_unstable.rb
diff options
context:
space:
mode:
authorCarlos Konstanski <ckonstanski@pippiandcarlos.com>2017-11-13 16:50:55 -0700
committerCarlos Konstanski <ckonstanski@pippiandcarlos.com>2017-11-13 16:50:55 -0700
commitffa2a169ea98fb54a29d90ca158059e79e2816ba (patch)
tree018461d031b71178fa48b9672d8e39bac4de1270 /inventory_json_unstable.rb
initial commit
Diffstat (limited to 'inventory_json_unstable.rb')
-rwxr-xr-xinventory_json_unstable.rb49
1 files changed, 49 insertions, 0 deletions
diff --git a/inventory_json_unstable.rb b/inventory_json_unstable.rb
new file mode 100755
index 0000000..e4a5938
--- /dev/null
+++ b/inventory_json_unstable.rb
@@ -0,0 +1,49 @@
+#!/usr/bin/ruby
+
+require "json"
+require "yaml"
+
+def doit()
+ env_yaml_path = "#{File.dirname($0)}/conf/env.yaml"
+ if ! File.file?(env_yaml_path)
+ STDERR.puts "Unable to find env.yaml. Exiting."
+ exit(1)
+ end
+ environ = ""
+ ["unstable", "develop", "stage", "master"].each do |env|
+ if File.basename($0).include?(env)
+ environ = env
+ break
+ end
+ end
+ if environ == ""
+ STDERR.puts "Unable to determine environment. Exiting."
+ exit(1)
+ end
+ globs = {}
+ hostvars = {}
+ outobj = {}
+ hosts_arr = []
+ yml = YAML.load_file(env_yaml_path)
+ yml["globals"].each do |key, value|
+ globs[key] = value
+ end
+ yml["environments"].each do |ee|
+ ee.each do |e, hosts|
+ if e == environ
+ hosts.each do |host_hash|
+ host_hash.each do |host, attributes|
+ hosts_arr.push(host)
+ hostvars[host] = globs.merge(attributes)
+ end
+ end
+ end
+ end
+ end
+ outobj["target"] = {"hosts" => hosts_arr}
+ outobj["_meta"] = {"hostvars" => hostvars}
+ puts outobj.to_json
+end
+
+doit()
+exit(0)