web-puppet 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "rack"
4
+ gem "puppet", ">= 2.7.0"
data/Gemfile.lock ADDED
@@ -0,0 +1,14 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ facter (1.6.2)
5
+ puppet (2.7.6)
6
+ facter (>= 1.5.1)
7
+ rack (1.3.5)
8
+
9
+ PLATFORMS
10
+ ruby
11
+
12
+ DEPENDENCIES
13
+ puppet (>= 2.7.0)
14
+ rack
data/README ADDED
@@ -0,0 +1,3 @@
1
+ A tiny ruby rack application which exposes the data from puppet as JSON over HTTP.
2
+
3
+ gem install web-puppet
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/web-puppet ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rack'
4
+ require 'web-puppet'
5
+
6
+ Rack::Server.new(:app => WebPuppet::App.new, :Port => 9295, :daemonize => true).start
@@ -0,0 +1,3 @@
1
+ module WebPuppet
2
+ VERSION = "0.0.1"
3
+ end
data/lib/web-puppet.rb ADDED
@@ -0,0 +1,35 @@
1
+ require "web-puppet/version"
2
+ require 'rack'
3
+ require 'puppet'
4
+ require 'json'
5
+
6
+
7
+ module WebPuppet
8
+ class App
9
+ def call env
10
+
11
+ Puppet[:config] = "/etc/puppet/puppet.conf"
12
+ Puppet.parse_config
13
+
14
+ Puppet[:clientyamldir] = "$yamldir"
15
+ Puppet::Node.indirection.terminus_class = :yaml
16
+
17
+ nodes = Puppet::Node.indirection.search("*")
18
+
19
+ data = {}
20
+ nodes.each do |n|
21
+ facts = Puppet::Node::Facts.indirection.find(n.name)
22
+ tags = Puppet::Resource::Catalog.indirection.find(n.name).tags
23
+ data[n.name] = {
24
+ :facts => facts.values,
25
+ :tags => tags
26
+ }
27
+ end
28
+
29
+ response = Rack::Response.new
30
+ response.header['Content-Type'] = 'application/json'
31
+ response.write JSON.pretty_generate(data)
32
+ response.finish
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "web-puppet/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "web-puppet"
7
+ s.version = WebPuppet::VERSION
8
+ s.authors = ["Gareth Rushgrove"]
9
+ s.email = ["gareth@morethanseven.net"]
10
+ s.homepage = "https://github.com/garethr/web-puppet"
11
+ s.summary = %q{Display Puppet node information as JSON over HTTP}
12
+ s.description = %q{Daemon which serves information from a local puppet master as JSON over HTTP}
13
+
14
+ s.rubyforge_project = "web-puppet"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_runtime_dependency "rack"
22
+ s.add_runtime_dependency "puppet", ">= 2.7.0"
23
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: web-puppet
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Gareth Rushgrove
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-10-30 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rack
16
+ requirement: &70345799305680 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70345799305680
25
+ - !ruby/object:Gem::Dependency
26
+ name: puppet
27
+ requirement: &70345799305180 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: 2.7.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70345799305180
36
+ description: Daemon which serves information from a local puppet master as JSON over
37
+ HTTP
38
+ email:
39
+ - gareth@morethanseven.net
40
+ executables:
41
+ - web-puppet
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - Gemfile
47
+ - Gemfile.lock
48
+ - README
49
+ - Rakefile
50
+ - bin/web-puppet
51
+ - lib/web-puppet.rb
52
+ - lib/web-puppet/version.rb
53
+ - web-puppet.gemspec
54
+ homepage: https://github.com/garethr/web-puppet
55
+ licenses: []
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project: web-puppet
74
+ rubygems_version: 1.8.6
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Display Puppet node information as JSON over HTTP
78
+ test_files: []